2017-12-04 06:30:39 -05:00
package stack
import (
"github.com/docker/cli/cli"
"github.com/docker/cli/cli/command"
2018-06-26 08:07:26 -04:00
"github.com/docker/cli/cli/command/stack/loader"
2017-12-04 06:30:39 -05:00
"github.com/docker/cli/cli/command/stack/options"
"github.com/docker/cli/cli/command/stack/swarm"
"github.com/spf13/cobra"
)
2022-02-22 07:46:35 -05:00
func newDeployCommand ( dockerCli command . Cli ) * cobra . Command {
2017-12-04 06:30:39 -05:00
var opts options . Deploy
cmd := & cobra . Command {
Use : "deploy [OPTIONS] STACK" ,
Aliases : [ ] string { "up" } ,
Short : "Deploy a new stack or update an existing stack" ,
Args : cli . ExactArgs ( 1 ) ,
RunE : func ( cmd * cobra . Command , args [ ] string ) error {
opts . Namespace = args [ 0 ]
2018-06-26 08:07:26 -04:00
if err := validateStackName ( opts . Namespace ) ; err != nil {
return err
}
config , err := loader . LoadComposefile ( dockerCli , opts )
if err != nil {
return err
}
2023-05-05 10:00:30 -04:00
return swarm . RunDeploy ( cmd . Context ( ) , dockerCli , cmd . Flags ( ) , & opts , config )
2017-12-04 06:30:39 -05:00
} ,
2022-03-30 09:27:25 -04:00
ValidArgsFunction : func ( cmd * cobra . Command , args [ ] string , toComplete string ) ( [ ] string , cobra . ShellCompDirective ) {
return completeNames ( dockerCli ) ( cmd , args , toComplete )
} ,
2017-12-04 06:30:39 -05:00
}
flags := cmd . Flags ( )
2018-07-19 08:55:48 -04:00
flags . StringSliceVarP ( & opts . Composefiles , "compose-file" , "c" , [ ] string { } , ` Path to a Compose file, or "-" to read from stdin ` )
2017-12-04 06:30:39 -05:00
flags . SetAnnotation ( "compose-file" , "version" , [ ] string { "1.25" } )
flags . BoolVar ( & opts . SendRegistryAuth , "with-registry-auth" , false , "Send registry authentication details to Swarm agents" )
flags . BoolVar ( & opts . Prune , "prune" , false , "Prune services that are no longer referenced" )
flags . SetAnnotation ( "prune" , "version" , [ ] string { "1.27" } )
flags . StringVar ( & opts . ResolveImage , "resolve-image" , swarm . ResolveImageAlways ,
2023-01-03 05:12:24 -05:00
` Query the registry to resolve image digest and supported platforms (" ` + swarm . ResolveImageAlways + ` ", " ` + swarm . ResolveImageChanged + ` ", " ` + swarm . ResolveImageNever + ` ") ` )
2017-12-04 06:30:39 -05:00
flags . SetAnnotation ( "resolve-image" , "version" , [ ] string { "1.30" } )
2023-05-05 10:00:30 -04:00
flags . BoolVarP ( & opts . Detach , "detach" , "d" , true , "Exit immediately instead of waiting for the stack services to converge" )
flags . BoolVarP ( & opts . Quiet , "quiet" , "q" , false , "Suppress progress output" )
2017-12-04 06:30:39 -05:00
return cmd
}