@@ -57,13 +57,14 @@ def print_license():
57
57
@root .command (name = "validate" , help = "Validate template files for given context." )
58
58
@click .option ("-m" , "--method" , type = click .Choice (MERGE_METHODS ), default = "ltr" , show_default = True , help = "Value file merge method." )
59
59
@click .option ("--value-file" , "value_files" , multiple = True , type = click .Path (dir_okay = False , exists = True ), help = "Additional value file to include." )
60
- @click .option ("--value" , "cli_values" , type = (str , str ), multiple = True , metavar = "< KEY VALUE> " , help = "Additional value(s) to include." )
61
- @click .option ("--cluster" , "-c" , "cname" , help = "Cluster context to use." )
62
- @click .option ("--environment" , "-e" , "ename" , help = "Deployment environment to use." )
60
+ @click .option ("--value" , "cli_values" , type = (str , str ), multiple = True , metavar = "KEY VALUE" , help = "Additional value(s) to include." )
61
+ @click .option ("--cluster" , "-c" , "cname" , metavar = "NAME" , help = "Cluster context to use." )
62
+ @click .option ("--environment" , "-e" , "ename" , metavar = "NAME" , help = "Deployment environment to use." )
63
63
@click .option ("--suffix" , "-s" , "suffixes" , default = [".yaml" , ".j2" , ".jinja2" ], help = "Filter template files by suffix. Can be used multiple times." , show_default = True )
64
+ @click .option ("--template-file" , "-t" , "template_overrides" , metavar = "KEY PATH" , type = click .Tuple ([str , str ]), multiple = True , help = "Restrict validation to single template file (the key is needed for references in templates)." )
64
65
@click .argument ("directory" , type = click .Path (dir_okay = True , file_okay = False , exists = True ), default = os .getcwd ())
65
66
@requires_project_directory
66
- def cli_validate (method , value_files , cli_values , cname , ename , suffixes , directory ):
67
+ def cli_validate (method , value_files , cli_values , cname , ename , suffixes , template_overrides , directory ):
67
68
vals = deep_merge ( # pylint: disable=redefined-outer-name
68
69
values .load_all (directory , cname , ename , method ),
69
70
* (load_yaml (p ) for p in value_files ),
@@ -73,12 +74,12 @@ def cli_validate(method, value_files, cli_values, cname, ename, suffixes, direct
73
74
)
74
75
config .CONFIG = config .load_all (directory , cname , ename , method )
75
76
76
- eng = build (directory , cname , ename )
77
+ eng = build (directory , cname , ename , template_overrides )
77
78
78
79
templates = eng .list_templates () # pylint: disable=redefined-outer-name
79
80
80
81
if suffixes :
81
- templates = [ name for name in templates if os .path .splitext (name )[1 ] in suffixes ]
82
+ templates = [name for name in templates if os .path .splitext (name )[1 ] in suffixes ]
82
83
83
84
all_validated = True
84
85
@@ -114,14 +115,15 @@ def cli_validate(method, value_files, cli_values, cname, ename, suffixes, direct
114
115
@root .command (name = "gen" , help = "Create manifest files using stored templates." )
115
116
@click .option ("-m" , "--method" , type = click .Choice (MERGE_METHODS ), default = "ltr" , show_default = True , help = "Value file merge method." )
116
117
@click .option ("--value-file" , "value_files" , multiple = True , type = click .Path (dir_okay = False , exists = True ), help = "Additional value file to include." )
117
- @click .option ("--value" , "cli_values" , type = (str , str ), multiple = True , metavar = "< KEY VALUE> " , help = "Additional value(s) to include." )
118
- @click .option ("--cluster" , "-c" , "cname" , help = "Cluster context to use." )
119
- @click .option ("--environment" , "-e" , "ename" , help = "Deployment environment to use." )
118
+ @click .option ("--value" , "cli_values" , type = (str , str ), multiple = True , metavar = "KEY VALUE" , help = "Additional value(s) to include." )
119
+ @click .option ("--cluster" , "-c" , "cname" , metavar = "NAME" , help = "Cluster context to use." )
120
+ @click .option ("--environment" , "-e" , "ename" , metavar = "NAME" , help = "Deployment environment to use." )
120
121
@click .option ("--suffix" , "-s" , "suffixes" , default = [".yaml" , ".j2" , ".jinja2" ], help = "Filter template files by suffix. Can be used multiple times." , show_default = True )
121
- @click .option ("--secret-provider" , help = "Secret provider override." )
122
+ @click .option ("--secret-provider" , help = "Secret provider override." , type = click .Choice (['ssm' , 'random' , 'hash' ]))
123
+ @click .option ("--template-file" , "-t" , "template_overrides" , metavar = "KEY PATH" , type = click .Tuple ([str , str ]), multiple = True , help = "Restrict validation to single template file (the key is needed for references in templates)." )
122
124
@click .argument ("directory" , type = click .Path (dir_okay = True , file_okay = False , exists = True ), default = os .getcwd ())
123
125
@requires_project_directory
124
- def cli_gen (method , value_files , cli_values , cname , ename , suffixes , secret_provider , directory ): # pylint: disable=redefined-outer-name,too-many-arguments
126
+ def cli_gen (method , value_files , cli_values , cname , ename , suffixes , secret_provider , template_overrides , directory ): # pylint: disable=redefined-outer-name,too-many-arguments
125
127
vals = deep_merge ( # pylint: disable=redefined-outer-name
126
128
values .load_all (directory , cname , ename , method ),
127
129
* (load_yaml (p ) for p in value_files ),
@@ -138,12 +140,12 @@ def cli_gen(method, value_files, cli_values, cname, ename, suffixes, secret_prov
138
140
139
141
config .CONFIG ['secrets' ]['provider' ] = secret_provider
140
142
141
- eng = build (directory , cname , ename )
143
+ eng = build (directory , cname , ename , template_overrides )
142
144
143
145
templates = eng .list_templates () # pylint: disable=redefined-outer-name
144
146
145
147
if suffixes :
146
- templates = [ name for name in templates if os .path .splitext (name )[1 ] in suffixes ]
148
+ templates = [name for name in templates if os .path .splitext (name )[1 ] in suffixes ]
147
149
148
150
validated = True
149
151
@@ -188,7 +190,7 @@ def new_cluster(name, directory):
188
190
189
191
190
192
@new .command (name = "environment" , help = "Create a new environment context." )
191
- @click .option ("--cluster" , "-c" , "cname" )
193
+ @click .option ("--cluster" , "-c" , "cname" , metavar = "NAME" )
192
194
@click .argument ("name" )
193
195
@click .argument ("directory" , type = click .Path (exists = True , file_okay = False ), default = os .getcwd ())
194
196
@requires_project_directory
@@ -199,8 +201,8 @@ def new_environment(cname, name, directory):
199
201
200
202
201
203
@new .command (name = "template" , help = "Create specified kubernetes manifest template." )
202
- @click .option ("--cluster" , "-c" , "cname" , help = "Cluster context to use." )
203
- @click .option ("--environment" , "-e" , "ename" , help = "Deployment environment to use." )
204
+ @click .option ("--cluster" , "-c" , "cname" , metavar = "NAME" , help = "Cluster context to use." )
205
+ @click .option ("--environment" , "-e" , "ename" , metavar = "NAME" , help = "Deployment environment to use." )
204
206
@click .option ("--name" , "-n" , help = "Template filename." )
205
207
@click .option ("--prefix" , "-p" , help = "Prefix for filename." )
206
208
@click .argument ("kind" , type = click .Choice (sorted (list (scaffolding .list_available_templates ()))))
@@ -233,7 +235,7 @@ def get_clusters(directory):
233
235
234
236
235
237
@get .command (name = "environments" , help = "Get configured environments." )
236
- @click .option ("--cluster" , "-c" , "cname" , help = "Cluster context to use." )
238
+ @click .option ("--cluster" , "-c" , "cname" , metavar = "NAME" , help = "Cluster context to use." )
237
239
@click .argument ("directory" , type = click .Path (exists = True , file_okay = False ), default = os .getcwd ())
238
240
@requires_project_directory
239
241
def get_environments (cname , directory ): # pylint: disable=redefined-outer-name
@@ -244,8 +246,8 @@ def get_environments(cname, directory): # pylint: disable=redefined-outer-name
244
246
245
247
246
248
@get .command (name = "templates" , help = "Get stored templates." )
247
- @click .option ("--cluster" , "-c" , "cname" , help = "Cluster context to use." )
248
- @click .option ("--environment" , "-e" , "ename" , help = "Deployment environment to use." )
249
+ @click .option ("--cluster" , "-c" , "cname" , metavar = "NAME" , help = "Cluster context to use." )
250
+ @click .option ("--environment" , "-e" , "ename" , metavar = "NAME" , help = "Deployment environment to use." )
249
251
@click .argument ("directory" , type = click .Path (exists = True , file_okay = False ), default = os .getcwd ())
250
252
@requires_project_directory
251
253
def get_templates (directory , cname , ename ): # pylint: disable=redefined-outer-name
@@ -259,8 +261,8 @@ def edit():
259
261
260
262
261
263
@edit .command (name = "config" , help = "Edit config files in chosen context." )
262
- @click .option ("--cluster" , "-c" , "cname" , help = "Cluster context to use." )
263
- @click .option ("--environment" , "-e" , "ename" , help = "Deployment environment to use." )
264
+ @click .option ("--cluster" , "-c" , "cname" , metavar = "NAME" , help = "Cluster context to use." )
265
+ @click .option ("--environment" , "-e" , "ename" , metavar = "NAME" , help = "Deployment environment to use." )
264
266
@click .argument ("directory" , type = click .Path (exists = True , file_okay = False ), default = os .getcwd ())
265
267
@requires_project_directory
266
268
def edit_config (directory , cname , ename ): # pylint: disable=redefined-outer-name
@@ -281,8 +283,8 @@ def edit_config(directory, cname, ename): # pylint: disable=redefined-outer-nam
281
283
282
284
283
285
@edit .command (name = "values" , help = "Edit value files in chosen context." )
284
- @click .option ("--cluster" , "-c" , "cname" , help = "Cluster context to use." )
285
- @click .option ("--environment" , "-e" , "ename" , help = "Deployment environment to use." )
286
+ @click .option ("--cluster" , "-c" , "cname" , metavar = "NAME" , help = "Cluster context to use." )
287
+ @click .option ("--environment" , "-e" , "ename" , metavar = "NAME" , help = "Deployment environment to use." )
286
288
@click .argument ("directory" , type = click .Path (exists = True , file_okay = False ), default = os .getcwd ())
287
289
@requires_project_directory
288
290
def edit_values (directory , cname , ename ): # pylint: disable=redefined-outer-name
0 commit comments