@@ -44,17 +44,20 @@ type addSyncCmdFlags struct {
4444 LocalPath string
4545 ContainerPath string
4646 ExcludedPaths string
47+ Namespace string
4748}
4849
4950type addPortCmdFlags struct {
5051 ResourceType string
5152 Selector string
53+ Namespace string
5254}
5355
5456type addPackageFlags struct {
5557 AppVersion string
5658 ChartVersion string
5759 SkipQuestion bool
60+ Deployment string
5861}
5962
6063func init () {
@@ -106,6 +109,7 @@ func init() {
106109 addSyncCmd .Flags ().StringVar (& cmd .syncFlags .ResourceType , "resource-type" , "pod" , "Selected resource type" )
107110 addSyncCmd .Flags ().StringVar (& cmd .syncFlags .Selector , "selector" , "" , "Comma separated key=value selector list (e.g. release=test)" )
108111 addSyncCmd .Flags ().StringVar (& cmd .syncFlags .LocalPath , "local" , "" , "Relative local path" )
112+ addSyncCmd .Flags ().StringVar (& cmd .syncFlags .Namespace , "namespace" , "" , "Namespace to use" )
109113 addSyncCmd .Flags ().StringVar (& cmd .syncFlags .ContainerPath , "container" , "" , "Absolute container path" )
110114 addSyncCmd .Flags ().StringVar (& cmd .syncFlags .ExcludedPaths , "exclude" , "" , "Comma separated list of paths to exclude (e.g. node_modules/,bin,*.exe)" )
111115
@@ -129,6 +133,7 @@ func init() {
129133 }
130134
131135 addPortCmd .Flags ().StringVar (& cmd .portFlags .ResourceType , "resource-type" , "pod" , "Selected resource type" )
136+ addSyncCmd .Flags ().StringVar (& cmd .portFlags .Namespace , "namespace" , "" , "Namespace to use" )
132137 addPortCmd .Flags ().StringVar (& cmd .portFlags .Selector , "selector" , "" , "Comma separated key=value selector list (e.g. release=test)" )
133138
134139 addCmd .AddCommand (addPortCmd )
@@ -148,21 +153,39 @@ func init() {
148153 devspace add package
149154 devspace add package mysql
150155 devspace add package mysql --app-version=5.7.14
151- devspace add package mysql --chart-version=0.10.3
156+ devspace add package mysql --chart-version=0.10.3 -d devspace-default
152157 #######################################################
153158 ` ,
154159 Run : cmd .RunAddPackage ,
155160 }
156161
157162 addPackageCmd .Flags ().StringVar (& cmd .packageFlags .AppVersion , "app-version" , "" , "App version" )
158163 addPackageCmd .Flags ().StringVar (& cmd .packageFlags .ChartVersion , "chart-version" , "" , "Chart version" )
164+ addPackageCmd .Flags ().StringVarP (& cmd .packageFlags .Deployment , "deployment" , "d" , "" , "The deployment name to use" )
159165 addPackageCmd .Flags ().BoolVar (& cmd .packageFlags .SkipQuestion , "skip-question" , false , "Skips the question to show the readme in a browser" )
160166
161167 addCmd .AddCommand (addPackageCmd )
162168}
163169
164170// RunAddPackage executes the add package command logic
165171func (cmd * AddCmd ) RunAddPackage (cobraCmd * cobra.Command , args []string ) {
172+ config := configutil .GetConfig ()
173+ if config .DevSpace .Deployments == nil || (len (* config .DevSpace .Deployments ) != 1 && cmd .packageFlags .Deployment == "" ) {
174+ log .Fatalf ("Please specify the deployment via the -d flag" )
175+ }
176+
177+ var deploymentConfig * v1.DeploymentConfig
178+ for _ , deployConfig := range * config .DevSpace .Deployments {
179+ if cmd .packageFlags .Deployment == "" || cmd .packageFlags .Deployment == * deployConfig .Name {
180+ if deployConfig .Helm == nil || deployConfig .Helm .ChartPath == nil {
181+ log .Fatalf ("Selected deployment %s is not a valid helm deployment" , * deployConfig .Name )
182+ }
183+
184+ deploymentConfig = deployConfig
185+ break
186+ }
187+ }
188+
166189 kubectl , err := kubectl .NewClient ()
167190 if err != nil {
168191 log .Fatalf ("Unable to create new kubectl client: %v" , err )
@@ -187,13 +210,12 @@ func (cmd *AddCmd) RunAddPackage(cobraCmd *cobra.Command, args []string) {
187210 }
188211
189212 log .Done ("Chart found" )
190-
191- cwd , err := os .Getwd ()
213+ chartPath , err := filepath .Abs (* deploymentConfig .Helm .ChartPath )
192214 if err != nil {
193215 log .Fatal (err )
194216 }
195217
196- requirementsFile := filepath .Join (cwd , "chart" , "requirements.yaml" )
218+ requirementsFile := filepath .Join (chartPath , "requirements.yaml" )
197219 _ , err = os .Stat (requirementsFile )
198220 if os .IsNotExist (err ) {
199221 entry := "dependencies:\n " +
@@ -234,15 +256,15 @@ func (cmd *AddCmd) RunAddPackage(cobraCmd *cobra.Command, args []string) {
234256 }
235257
236258 log .StartWait ("Update chart dependencies" )
237- err = helm .UpdateDependencies (filepath . Join ( cwd , "chart" ) )
259+ err = helm .UpdateDependencies (chartPath )
238260 log .StopWait ()
239261
240262 if err != nil {
241263 log .Fatal (err )
242264 }
243265
244266 // Check if key already exists
245- valuesYaml := filepath .Join (cwd , "chart" , "values.yaml" )
267+ valuesYaml := filepath .Join (chartPath , "values.yaml" )
246268 valuesYamlContents := map [interface {}]interface {}{}
247269
248270 err = yamlutil .ReadYamlFromFile (valuesYaml , valuesYamlContents )
@@ -262,16 +284,11 @@ func (cmd *AddCmd) RunAddPackage(cobraCmd *cobra.Command, args []string) {
262284 }
263285 }
264286
265- log .Donef ("Successfully added %s as chart dependency, you can configure the package in 'chart /values.yaml'" , version .GetName ())
266- cmd .showReadme (version )
287+ log .Donef ("Successfully added %s as chart dependency, you can configure the package in '%s /values.yaml'" , * deploymentConfig . Helm . ChartPath , version .GetName ())
288+ cmd .showReadme (chartPath , version )
267289}
268290
269- func (cmd * AddCmd ) showReadme (chartVersion * repo.ChartVersion ) {
270- cwd , err := os .Getwd ()
271- if err != nil {
272- log .Fatal (err )
273- }
274-
291+ func (cmd * AddCmd ) showReadme (chartPath string , chartVersion * repo.ChartVersion ) {
275292 if cmd .packageFlags .SkipQuestion {
276293 return
277294 }
@@ -286,7 +303,7 @@ func (cmd *AddCmd) showReadme(chartVersion *repo.ChartVersion) {
286303 return
287304 }
288305
289- content , err := tar .ExtractSingleFileToStringTarGz (filepath .Join (cwd , "chart" , "charts" , chartVersion .GetName ()+ "-" + chartVersion .GetVersion ()+ ".tgz" ), chartVersion .GetName ()+ "/README.md" )
306+ content , err := tar .ExtractSingleFileToStringTarGz (filepath .Join (chartPath , "charts" , chartVersion .GetName ()+ "-" + chartVersion .GetVersion ()+ ".tgz" ), chartVersion .GetName ()+ "/README.md" )
290307 if err != nil {
291308 log .Fatal (err )
292309 }
@@ -349,6 +366,7 @@ func (cmd *AddCmd) RunAddSync(cobraCmd *cobra.Command, args []string) {
349366 ContainerPath : configutil .String (cmd .syncFlags .ContainerPath ),
350367 LocalSubPath : configutil .String (cmd .syncFlags .LocalPath ),
351368 ExcludePaths : & excludedPaths ,
369+ Namespace : & cmd .syncFlags .Namespace ,
352370 })
353371
354372 config .DevSpace .Sync = & syncConfig
@@ -408,6 +426,7 @@ func (cmd *AddCmd) insertOrReplacePortMapping(labelSelectorMap map[string]*strin
408426 ResourceType : nil ,
409427 LabelSelector : & labelSelectorMap ,
410428 PortMappings : & portMappings ,
429+ Namespace : & cmd .portFlags .Namespace ,
411430 })
412431
413432 config .DevSpace .PortForwarding = & portMap
0 commit comments