@@ -18,37 +18,28 @@ import (
18
18
// Config is a flatten configuration of runme.yaml. The purpose of it is to
19
19
// unify all the different configuration versions into a single struct.
20
20
type Config struct {
21
- // Dir- or git-based project fields.
22
- DisableGitignore bool
23
- IgnorePaths []string
24
- FindRepoUpward bool
25
- ProjectDir string
21
+ ProjectRoot string
22
+ ProjectFilename string
23
+ ProjectFindRepoUpward bool
24
+ ProjectIgnorePaths []string
25
+ ProjectDisableGitignore bool
26
+ ProjectEnvUseSystemEnv bool
27
+ ProjectEnvSources []string
28
+ ProjectFilters []* Filter
29
+
30
+ RuntimeDockerEnabled bool
31
+ RuntimeDockerImage string
32
+ RuntimeDockerBuildContext string
33
+ RuntimeDockerBuildDockerfile string
26
34
27
- // Filemode fields.
28
- Filename string
29
-
30
- // Environment variable fields.
31
- EnvSourceFiles []string
32
- UseSystemEnv bool
33
-
34
- Filters []* Filter
35
-
36
- // Log related fields.
37
- LogEnabled bool
38
- LogPath string
39
- LogVerbose bool
40
-
41
- // Server related fields.
42
35
ServerAddress string
43
36
ServerTLSEnabled bool
44
37
ServerTLSCertFile string
45
38
ServerTLSKeyFile string
46
39
47
- // Docker configuration.
48
- DockerEnabled bool
49
- DockerImage string
50
- DockerBuildContext string
51
- DockerBuildDockerfile string
40
+ LogEnabled bool
41
+ LogPath string
42
+ LogVerbose bool
52
43
}
53
44
54
45
func ParseYAML (data []byte ) (* Config , error ) {
@@ -122,42 +113,41 @@ func parseYAMLv1alpha1(data []byte) (*configv1alpha1.Config, error) {
122
113
123
114
func configV1alpha1ToConfig (c * configv1alpha1.Config ) (* Config , error ) {
124
115
project := c .GetProject ()
116
+ runtime := c .GetRuntime ()
117
+ server := c .GetServer ()
125
118
log := c .GetLog ()
126
119
127
120
var filters []* Filter
128
- for _ , f := range c .GetFilters () {
121
+ for _ , f := range c .GetProject (). GetFilters () {
129
122
filters = append (filters , & Filter {
130
123
Type : f .GetType ().String (),
131
124
Condition : f .GetCondition (),
132
125
})
133
126
}
134
127
135
128
cfg := & Config {
136
- ProjectDir : project .GetDir (),
137
- FindRepoUpward : project .GetFindRepoUpward (),
138
- IgnorePaths : project .GetIgnorePaths (),
139
- DisableGitignore : project .GetDisableGitignore (),
140
-
141
- Filename : c .GetFilename (),
142
-
143
- UseSystemEnv : c .GetEnv ().GetUseSystemEnv (),
144
- EnvSourceFiles : c .GetEnv ().GetSources (),
145
-
146
- Filters : filters ,
129
+ ProjectRoot : project .GetRoot (),
130
+ ProjectFilename : project .GetFilename (),
131
+ ProjectFindRepoUpward : project .GetFindRepoUpward (),
132
+ ProjectIgnorePaths : project .GetIgnorePaths (),
133
+ ProjectDisableGitignore : project .GetDisableGitignore (),
134
+ ProjectEnvUseSystemEnv : project .GetEnv ().GetUseSystemEnv (),
135
+ ProjectEnvSources : project .GetEnv ().GetSources (),
136
+ ProjectFilters : filters ,
137
+
138
+ RuntimeDockerEnabled : runtime .GetDocker ().GetEnabled (),
139
+ RuntimeDockerImage : runtime .GetDocker ().GetImage (),
140
+ RuntimeDockerBuildContext : runtime .GetDocker ().GetBuild ().GetContext (),
141
+ RuntimeDockerBuildDockerfile : runtime .GetDocker ().GetBuild ().GetDockerfile (),
142
+
143
+ ServerAddress : server .GetAddress (),
144
+ ServerTLSEnabled : server .GetTls ().GetEnabled (),
145
+ ServerTLSCertFile : server .GetTls ().GetCertFile (),
146
+ ServerTLSKeyFile : server .GetTls ().GetKeyFile (),
147
147
148
148
LogEnabled : log .GetEnabled (),
149
149
LogPath : log .GetPath (),
150
150
LogVerbose : log .GetVerbose (),
151
-
152
- ServerAddress : c .GetServer ().GetAddress (),
153
- ServerTLSEnabled : c .GetServer ().GetTls ().GetEnabled (),
154
- ServerTLSCertFile : c .GetServer ().GetTls ().GetCertFile (),
155
- ServerTLSKeyFile : c .GetServer ().GetTls ().GetKeyFile (),
156
-
157
- DockerEnabled : c .GetDocker ().GetEnabled (),
158
- DockerImage : c .GetDocker ().GetImage (),
159
- DockerBuildContext : c .GetDocker ().GetBuild ().GetContext (),
160
- DockerBuildDockerfile : c .GetDocker ().GetBuild ().GetDockerfile (),
161
151
}
162
152
163
153
return cfg , nil
@@ -169,38 +159,25 @@ func validateConfig(cfg *Config) error {
169
159
cwd = "."
170
160
}
171
161
172
- if err := validateProjectDir (cfg , cwd ); err != nil {
162
+ if err := validateInsideCwd (cfg . ProjectRoot , cwd ); err != nil {
173
163
return errors .Wrap (err , "failed to validate project dir" )
174
164
}
175
165
176
- if err := validateFilename (cfg , cwd ); err != nil {
166
+ if err := validateInsideCwd (cfg . ProjectFilename , cwd ); err != nil {
177
167
return errors .Wrap (err , "failed to validate filename" )
178
168
}
179
169
180
170
return nil
181
171
}
182
172
183
- func validateProjectDir (cfg * Config , cwd string ) error {
184
- rel , err := filepath .Rel (cwd , filepath .Join (cwd , cfg .ProjectDir ))
185
- if err != nil {
186
- return errors .WithStack (err )
187
- }
188
- if strings .HasPrefix (rel , ".." ) {
189
- return errors .New ("outside of current working directory" )
190
- }
191
-
192
- return nil
193
- }
194
-
195
- func validateFilename (cfg * Config , cwd string ) error {
196
- rel , err := filepath .Rel (cwd , filepath .Join (cwd , cfg .Filename ))
173
+ func validateInsideCwd (path , cwd string ) error {
174
+ rel , err := filepath .Rel (cwd , filepath .Join (cwd , path ))
197
175
if err != nil {
198
176
return errors .WithStack (err )
199
177
}
200
178
if strings .HasPrefix (rel , ".." ) {
201
- return errors .New ("outside of current working directory" )
179
+ return errors .New ("outside of the current working directory" )
202
180
}
203
-
204
181
return nil
205
182
}
206
183
0 commit comments