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  }