Skip to content

Commit 998b67f

Browse files
committed
added changed for config
1 parent 11d2f49 commit 998b67f

File tree

3 files changed

+74
-18
lines changed

3 files changed

+74
-18
lines changed

executor/executor.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ func RunGit(git string, sub string, argv ...string) (string, error) {
7272
argv = append([]string{sub}, argv...)
7373
exe := exec.Command(git, argv...)
7474

75-
if options.GlobalFlagVerbose {
75+
if true {
7676
verboseOutput(exe.Args...)
7777
}
7878

main.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ import "github.com/praqma/git-phlow/cmd"
44

55
func main() {
66
cmd.Execute()
7+
78
}

setting/setting.go

Lines changed: 72 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,18 @@ import (
1313
"github.com/praqma/git-phlow/plugins"
1414
)
1515

16-
//Load internals
16+
//Config git group.name
1717
const (
18-
phlow_file_name = ".phlow"
19-
git_config_fileName = ".gitconfig"
20-
default_block = "default"
18+
default_block = "phlow"
19+
phlow_file_name = ".phlow"
20+
git_config_fileName = ".gitconfig"
21+
config_default_block = "phlow"
22+
config_service = "service"
23+
config_remote = "remote"
24+
config_service_url = "service-url"
25+
config_pipeline = "pipeline"
26+
config_integration_branch = "integration-branch"
27+
config_delivery_branch_prefix = "delivery-branch-prefix"
2128
)
2229

2330
//Default configuration
@@ -56,9 +63,57 @@ type ProjectSetting struct {
5663
//NewProjectStg ...
5764
//initializes project settings from .phlow INI files
5865
func NewProjectStg(INIBlock string) *ProjectSetting {
59-
r := GetLocal()
60-
g := GetGlobal()
61-
return LoadProjectSettings(r, g, INIBlock)
66+
return LoadSettings(INIBlock, githandler.Git{Run: executor.RunGit})
67+
}
68+
69+
func LoadSettings(INIBlock string, git githandler.Git) *ProjectSetting {
70+
71+
//no params have been given, search for default
72+
if INIBlock == "" {
73+
INIBlock = config_default_block
74+
}
75+
76+
//Load all configurations using git config
77+
//Errors result in an empty config string, which is git's way to return empty config
78+
service, _ := git.Config("--get", fmt.Sprintf("%s.%s", INIBlock, "token"))
79+
serviceURL, _ := git.Config("--get", INIBlock+"."+config_service_url)
80+
remote, _ := git.Config("--get", INIBlock+"."+config_remote)
81+
deliveryBranch, _ := git.Config("--get", INIBlock+"."+config_delivery_branch_prefix)
82+
integrationBranch, _ := git.Config("--get", INIBlock+"."+config_integration_branch)
83+
84+
loadedSetting := ProjectSetting{
85+
Service: service,
86+
IssueURL: serviceURL,
87+
Remote: remote,
88+
IntegrationBranch: integrationBranch,
89+
DeliveryBranchPrefix: deliveryBranch,
90+
INIBlock: INIBlock,
91+
}
92+
93+
err := ValidateLoadedSetting(&loadedSetting)
94+
if err != nil {
95+
//It is the default config, so we will just go to the internal default
96+
if INIBlock == config_default_block {
97+
defaultBranch, err := GetDefaultBranchFromInternalDefault()
98+
if err != nil || strings.TrimSpace(defaultBranch) == "" {
99+
defaultBranch = internal_default_integration_branch
100+
}
101+
return &ProjectSetting{
102+
Service: internal_default_service,
103+
IntegrationBranch: defaultBranch,
104+
Remote: internal_default_remote,
105+
IssueURL: internal_default_issue_url,
106+
DeliveryBranchPrefix: internal_default_delivery_branch_prefix,
107+
PipelineUrl: internal_pipeline_url,
108+
Scope: internal_default_scope,
109+
File: internal_default_file,
110+
}
111+
}
112+
fmt.Println(err)
113+
os.Exit(1)
114+
}
115+
116+
return &loadedSetting
62117
}
63118

64119
//NewToolStg ...
@@ -185,28 +240,28 @@ func ValidateLoadedSetting(setting *ProjectSetting) error {
185240
//Non Optional Field checks..
186241
for i := 0; i < t.NumField(); i++ {
187242
if t.Field(i).Name == "Service" && (r.Field(i).String() == "") {
188-
return errors.New(fmt.Sprintf("Error in configuration file: %s\n"+
189-
"Non-optional field missing: %s \nIn configuration block: %s \n ", setting.Scope+"/"+setting.File, "service", setting.INIBlock))
243+
return errors.New(fmt.Sprintf("Error in configuration\n"+
244+
"Non-optional field missing: %s \nIn configuration block: %s \n ", "service", setting.INIBlock))
190245
}
191246

192247
if t.Field(i).Name == "IssueURL" && r.Field(i).String() == "" {
193-
return errors.New(fmt.Sprintf("Error in configuration file: %s\n"+
194-
"Non-optional field missing: %s \nIn configuration block: %s \n ", setting.Scope+"/"+setting.File, "issue_url", setting.INIBlock))
248+
return errors.New(fmt.Sprintf("Error in configuration\n"+
249+
"Non-optional field missing: %s \nIn configuration block: %s \n ", "issue_url", setting.INIBlock))
195250
}
196251

197252
if t.Field(i).Name == "IntegrationBranch" && r.Field(i).String() == "" {
198-
return errors.New(fmt.Sprintf("Error in configuration file: %s\n"+
199-
"Non-optional field missing: %s \nIn configuration block: %s \n ", setting.Scope+"/"+setting.File, "integration_branch", setting.INIBlock))
253+
return errors.New(fmt.Sprintf("Error in configuration\n"+
254+
"Non-optional field missing: %s \nIn configuration block: %s \n ", "integration_branch", setting.INIBlock))
200255
}
201256

202257
if t.Field(i).Name == "Remote" && r.Field(i).String() == "" {
203-
return errors.New(fmt.Sprintf("Error in configuration file: %s\n"+
204-
"Non-optional field missing: %s \nIn configuration block: %s \n ", setting.Scope+"/"+setting.File, "remote", setting.INIBlock))
258+
return errors.New(fmt.Sprintf("Error in configuration\n"+
259+
"Non-optional field missing: %s \nIn configuration block: %s \n ", "remote", setting.INIBlock))
205260
}
206261

207262
if t.Field(i).Name == "DeliveryBranchPrefix" && r.Field(i).String() == "" {
208-
return errors.New(fmt.Sprintf("Error in configuration file: %s\n"+
209-
"Non-optional field missing: %s \nIn configuration block: %s \n ", setting.Scope+"/"+setting.File, "delivery_branch_prefix", setting.INIBlock))
263+
return errors.New(fmt.Sprintf("Error in configuration\n"+
264+
"Non-optional field missing: %s \nIn configuration block: %s \n ", "delivery_branch_prefix", setting.INIBlock))
210265
}
211266
}
212267
return nil

0 commit comments

Comments
 (0)