@@ -23,8 +23,9 @@ const (
2323 BranchFlag = "branch"
2424 DefaultBranch = "main"
2525
26- WorkflowNameFlag = "workflow-name"
27- DefaultWorkflowName = "Func Deploy"
26+ WorkflowNameFlag = "workflow-name"
27+ DefaultWorkflowName = "Func Deploy"
28+ DefaultRemoteBuildWorkflowName = "Remote " + DefaultWorkflowName
2829
2930 KubeconfigSecretNameFlag = "kubeconfig-secret-name"
3031 DefaultKubeconfigSecretName = "KUBECONFIG"
@@ -52,6 +53,9 @@ const (
5253
5354 UseSelfHostedRunnerFlag = "self-hosted-runner"
5455 DefaultUseSelfHostedRunner = false
56+
57+ ForceFlag = "force"
58+ DefaultForce = false
5559)
5660
5761// CIConfig readonly configuration
@@ -69,42 +73,37 @@ type CIConfig struct {
6973 useRegistryLogin ,
7074 useSelfHostedRunner ,
7175 useRemoteBuild ,
72- useWorkflowDispatch bool
76+ useWorkflowDispatch ,
77+ force bool
7378}
7479
7580func NewCIConfig (
7681 currentBranch common.CurrentBranchFunc ,
7782 workingDir common.WorkDirFunc ,
83+ workflowNameExplicit bool ,
7884) (CIConfig , error ) {
79- platform := viper .GetString (PlatformFlag )
80- if strings .ToLower (platform ) != DefaultPlatform {
81- return CIConfig {}, fmt .Errorf ("%s support is not implemented" , platform )
85+ if err := resolvePlatform (); err != nil {
86+ return CIConfig {}, err
8287 }
8388
84- path := viper .GetString (PathFlag )
85- if path == "" || path == "." {
86- cwd , err := workingDir ()
87- if err != nil {
88- return CIConfig {}, err
89- }
90- path = cwd
89+ path , err := resolvePath (workingDir )
90+ if err != nil {
91+ return CIConfig {}, err
9192 }
9293
93- branch := viper .GetString (BranchFlag )
94- if branch == "" {
95- var err error
96- branch , err = currentBranch (path )
97- if err != nil {
98- return CIConfig {}, err
99- }
94+ branch , err := resolveBranch (path , currentBranch )
95+ if err != nil {
96+ return CIConfig {}, err
10097 }
10198
99+ workflowName := resolveWorkflowName (workflowNameExplicit )
100+
102101 return CIConfig {
103102 githubWorkflowDir : DefaultGitHubWorkflowDir ,
104103 githubWorkflowFilename : DefaultGitHubWorkflowFilename ,
105104 path : path ,
106105 branch : branch ,
107- workflowName : viper . GetString ( WorkflowNameFlag ) ,
106+ workflowName : workflowName ,
108107 kubeconfigSecret : viper .GetString (KubeconfigSecretNameFlag ),
109108 registryLoginUrlVar : viper .GetString (RegistryLoginUrlVariableNameFlag ),
110109 registryUserVar : viper .GetString (RegistryUserVariableNameFlag ),
@@ -114,9 +113,60 @@ func NewCIConfig(
114113 useSelfHostedRunner : viper .GetBool (UseSelfHostedRunnerFlag ),
115114 useRemoteBuild : viper .GetBool (UseRemoteBuildFlag ),
116115 useWorkflowDispatch : viper .GetBool (WorkflowDispatchFlag ),
116+ force : viper .GetBool (ForceFlag ),
117117 }, nil
118118}
119119
120+ func resolvePlatform () error {
121+ platform := viper .GetString (PlatformFlag )
122+ if strings .ToLower (platform ) != DefaultPlatform {
123+ return fmt .Errorf ("%s support is not implemented" , platform )
124+ }
125+
126+ return nil
127+ }
128+
129+ func resolvePath (workingDir common.WorkDirFunc ) (string , error ) {
130+ path := viper .GetString (PathFlag )
131+ if path != "" && path != "." {
132+ return path , nil
133+ }
134+
135+ cwd , err := workingDir ()
136+ if err != nil {
137+ return "" , err
138+ }
139+
140+ return cwd , nil
141+ }
142+
143+ func resolveBranch (path string , currentBranch common.CurrentBranchFunc ) (string , error ) {
144+ branch := viper .GetString (BranchFlag )
145+ if branch != "" {
146+ return branch , nil
147+ }
148+
149+ branch , err := currentBranch (path )
150+ if err != nil {
151+ return "" , err
152+ }
153+
154+ return branch , nil
155+ }
156+
157+ func resolveWorkflowName (explicit bool ) string {
158+ workflowName := viper .GetString (WorkflowNameFlag )
159+ if explicit {
160+ return workflowName
161+ }
162+
163+ if viper .GetBool (UseRemoteBuildFlag ) {
164+ return DefaultRemoteBuildWorkflowName
165+ }
166+
167+ return DefaultWorkflowName
168+ }
169+
120170func (cc * CIConfig ) FnGitHubWorkflowDir (fnRoot string ) string {
121171 return filepath .Join (fnRoot , cc .githubWorkflowDir )
122172}
@@ -172,3 +222,7 @@ func (cc *CIConfig) RegistryPassSecret() string {
172222func (cc * CIConfig ) RegistryUrlVar () string {
173223 return cc .registryUrlVar
174224}
225+
226+ func (cc * CIConfig ) Force () bool {
227+ return cc .force
228+ }
0 commit comments