예제 #1
0
파일: acbuild.go 프로젝트: dgonyeo/acbuild
func main() {
	multicall.Add("acbuild-script", func() error {
		cmd := exec.Command("acbuild", append([]string{"script"}, os.Args[1:]...)...)
		cmd.Stdin = os.Stdin
		cmd.Stdout = os.Stdout
		cmd.Stderr = os.Stderr
		return cmd.Run()
	})
	// check if acbuild is executed with a multicall command
	multicall.MaybeExec()

	cmdAcbuild.SetUsageFunc(func(cmd *cobra.Command) error {
		tabOut := new(tabwriter.Writer)
		tabOut.Init(os.Stdout, 0, 8, 1, '\t', 0)
		commandUsageTemplate.Execute(tabOut, cmd)
		tabOut.Flush()
		return nil
	})

	// Make help just show the usage
	cmdAcbuild.SetHelpTemplate(`{{.UsageString}}`)

	err := cmdAcbuild.Execute()
	if cmdExitCode == 0 && err != nil {
		cmdExitCode = getErrorCode(errCobra)
	}
	os.Exit(cmdExitCode)
}
예제 #2
0
파일: main.go 프로젝트: klizhentas/acbuild
func main() {
	// rkt (whom we adopt code from) uses this weird architecture where a
	// function can be registered under a certain name, and then the said
	// function can be invoked in a separate process, by calling the original
	// program again with the name under which the said function was registered
	// with.

	// For instance, if a function is registered with the name "extracttar",
	// then the function can be invoked by using os/exec to run
	// `acb extracttar`
	multicall.MaybeExec()

	app := cli.NewApp()
	app.Name = name
	app.Usage = usage
	app.Version = version
	app.Commands = []cli.Command{
		newCommand, // note that it's new vs init because it conflicts with libcontainer factory's expectations
		// that calls os.Args[0] "init"
		execCommand,
		addCommand,
		rmCommand,
		renderCommand,
	}

	if err := app.Run(os.Args); err != nil {
		log.Fatal(err)
	}
}
예제 #3
0
파일: rkt.go 프로젝트: liugenping/rkt
func main() {
	// check if rkt is executed with a multicall command
	multicall.MaybeExec()

	cmdRkt.SetUsageFunc(usageFunc)

	// Make help just show the usage
	cmdRkt.SetHelpTemplate(`{{.UsageString}}`)

	cmdRkt.Execute()
	os.Exit(cmdExitCode)
}
예제 #4
0
파일: main.go 프로젝트: coderhaoxin/rkt
func main() {
	// check if rkt is executed with a multicall command
	multicall.MaybeExec()

	cmdRkt.SetUsageFunc(usageFunc)

	// Make help just show the usage
	cmdRkt.SetHelpTemplate(`{{.UsageString}}`)

	if err := cmdRkt.Execute(); err != nil && cmdExitCode == 0 {
		// err already printed by cobra on stderr
		cmdExitCode = 2 // invalid argument
	}
	os.Exit(cmdExitCode)
}
예제 #5
0
파일: rkt.go 프로젝트: hwinkel/rkt
func main() {
	// check if rkt is executed with a multicall command
	multicall.MaybeExec()

	cmdRkt.SetUsageFunc(usageFunc)

	// Make help just show the usage
	cmdRkt.SetHelpTemplate(`{{.UsageString}}`)

	// // Uncomment to update rkt.bash
	// stdout.Print("Generating rkt.bash")
	// cmdRkt.GenBashCompletionFile("dist/bash_completion/rkt.bash")
	// os.Exit(0)

	cmdRkt.Execute()
	os.Exit(cmdExitCode)
}
예제 #6
0
파일: acbuild.go 프로젝트: joshix/acbuild
func main() {
	// check if acbuild is executed with a multicall command
	multicall.MaybeExec()

	cmdAcbuild.SetUsageFunc(func(cmd *cobra.Command) error {
		tabOut := new(tabwriter.Writer)
		tabOut.Init(os.Stdout, 0, 8, 1, '\t', 0)
		commandUsageTemplate.Execute(tabOut, cmd)
		tabOut.Flush()
		return nil
	})

	// Make help just show the usage
	cmdAcbuild.SetHelpTemplate(`{{.UsageString}}`)

	err := cmdAcbuild.Execute()
	if cmdExitCode == 0 && err != nil {
		cmdExitCode = getErrorCode(errCobra)
	}
	os.Exit(cmdExitCode)
}
예제 #7
0
func init() {
	multicall.MaybeExec()
}