github.com/ggreg80/ketos@v0.0.0-20171109040536-049616f51ddb/cmd/chr/command.go (about) 1 package main 2 3 import ( 4 "github.com/spf13/cobra" 5 ) 6 7 var ( 8 Command = &cobra.Command{ 9 Use: "chr", 10 Short: "chr [--engine libc] [--repo ./] [--tag latest] " + 11 "echo Hello world", 12 Args: cobra.MinimumNArgs(1), 13 14 RunE: chrMain, 15 } 16 ) 17 18 func init() { 19 20 flags := Command.Flags() 21 flags.StringP("engine", "E", "libc", "the fake chroot engine name") 22 flags.StringP("repo", "R", "./", "the ketos repo path") 23 flags.StringP("tag", "T", "latest", "loading tag from ketos folder") 24 } 25 26 func chrMain(cmd *cobra.Command, args []string) error { 27 28 engineName, err := cmd.Flags().GetString("engine") 29 if err != nil { 30 return err 31 } 32 repoPath, err := cmd.Flags().GetString("repo") 33 if err != nil { 34 return err 35 } 36 tagName, err := cmd.Flags().GetString("tag") 37 if err != nil { 38 return err 39 } 40 41 userCommand := args 42 43 executor, err := NewChrootExecutor(engineName) 44 if err != nil { 45 return err 46 } 47 48 return executor.Execute(repoPath, tagName, userCommand) 49 }