コード例 #1
0
ファイル: run.go プロジェクト: apcera/acbuild
func runRun(cmd *cobra.Command, args []string) (exit int) {
	if len(args) == 0 {
		cmd.Usage()
		return 1
	}

	lockfile, err := getLock()
	if err != nil {
		stderr("run: %v", err)
		return 1
	}
	defer func() {
		if err := releaseLock(lockfile); err != nil {
			stderr("run: %v", err)
			exit = 1
		}
	}()

	if debug {
		stderr("Running: %v", args)
	}

	err = lib.Run(tmpacipath(), depstorepath(), targetpath(), scratchpath(), workpath(), args, insecure)

	if err != nil {
		stderr("run: %v", err)
		return 1
	}

	return 0
}
コード例 #2
0
ファイル: copy.go プロジェクト: apcera/acbuild
func runCopy(cmd *cobra.Command, args []string) (exit int) {
	if len(args) == 0 {
		cmd.Usage()
		return 1
	}
	if len(args) != 2 {
		stderr("copy: incorrect number of arguments")
		return 1
	}

	lockfile, err := getLock()
	if err != nil {
		stderr("copy: %v", err)
		return 1
	}
	defer func() {
		if err := releaseLock(lockfile); err != nil {
			stderr("copy: %v", err)
			exit = 1
		}
	}()

	if debug {
		stderr("Copying host:%s to aci:%s", args[0], args[1])
	}

	err = lib.Copy(tmpacipath(), args[0], args[1])

	if err != nil {
		stderr("copy: %v", err)
		return 1
	}

	return 0
}
コード例 #3
0
ファイル: set-group.go プロジェクト: apcera/acbuild
func runSetGroup(cmd *cobra.Command, args []string) (exit int) {
	if len(args) == 0 {
		cmd.Usage()
		return 1
	}
	if len(args) != 1 {
		stderr("set-group: incorrect number of arguments")
		return 1
	}

	lockfile, err := getLock()
	if err != nil {
		stderr("set-group: %v", err)
		return 1
	}
	defer func() {
		if err := releaseLock(lockfile); err != nil {
			stderr("set-group: %v", err)
			exit = 1
		}
	}()

	if debug {
		stderr("Setting group to %s", args[0])
	}

	err = lib.SetGroup(tmpacipath(), args[0])

	if err != nil {
		stderr("set-group: %v", err)
		return 1
	}

	return 0
}
コード例 #4
0
ファイル: dependency.go プロジェクト: apcera/acbuild
func runRmDep(cmd *cobra.Command, args []string) (exit int) {
	if len(args) == 0 {
		cmd.Usage()
		return 1
	}
	if len(args) != 1 {
		stderr("dependency remove: incorrect number of arguments")
		return 1
	}

	lockfile, err := getLock()
	if err != nil {
		stderr("dependency remove: %v", err)
		return 1
	}
	defer func() {
		if err := releaseLock(lockfile); err != nil {
			stderr("dependency remove: %v", err)
			exit = 1
		}
	}()

	if debug {
		stderr("Removing dependency %q", args[0])
	}

	err = lib.RemoveDependency(tmpacipath(), args[0])

	if err != nil {
		stderr("dependency remove: %v", err)
		return 1
	}

	return 0
}
コード例 #5
0
ファイル: mount.go プロジェクト: aaronlevy/acbuild
func runAddMount(cmd *cobra.Command, args []string) (exit int) {
	if len(args) == 0 {
		cmd.Usage()
		return 1
	}
	if len(args) != 2 {
		stderr("mount add: incorrect number of arguments")
		return 1
	}

	if debug {
		if readOnly {
			stderr("Adding read only mount point %q=%q", args[0], args[1])
		} else {
			stderr("Adding mount point %q=%q", args[0], args[1])
		}
	}

	err := newACBuild().AddMount(args[0], args[1], readOnly)

	if err != nil {
		stderr("mount add: %v", err)
		return 1
	}

	return 0
}
コード例 #6
0
ファイル: port.go プロジェクト: kinvolk/acbuild
func runAddPort(cmd *cobra.Command, args []string) (exit int) {
	if len(args) == 0 {
		cmd.Usage()
		return 1
	}
	if len(args) != 3 {
		stderr("port add: incorrect number of arguments")
		return 1
	}
	port, err := strconv.ParseUint(args[2], 10, 16)
	if err != nil {
		stderr("port add: port must be a positive number between 0 and 65535")
		return 1
	}

	if debug {
		stderr("Adding port %q=%q", args[0], args[1])
	}

	err = newACBuild().AddPort(args[0], args[1], uint(port), count, socketActivated)

	if err != nil {
		stderr("port add: %v", err)
		return getErrorCode(err)
	}

	return 0
}
コード例 #7
0
ファイル: environment.go プロジェクト: apcera/acbuild
func runRemoveEnv(cmd *cobra.Command, args []string) (exit int) {
	if len(args) == 0 {
		cmd.Usage()
		return 1
	}
	if len(args) > 1 {
		stderr("environment remove: incorrect number of arguments")
		return 1
	}

	lockfile, err := getLock()
	if err != nil {
		stderr("environment remove: %v", err)
		return 1
	}
	defer func() {
		if err := releaseLock(lockfile); err != nil {
			stderr("environment remove: %v", err)
			exit = 1
		}
	}()

	if debug {
		stderr("Removing environment variable %q", args[0])
	}

	err = lib.RemoveEnv(tmpacipath(), args[0])

	if err != nil {
		stderr("environment remove: %v", err)
		return 1
	}

	return 0
}
コード例 #8
0
ファイル: label.go プロジェクト: apcera/acbuild
func runAddLabel(cmd *cobra.Command, args []string) (exit int) {
	if len(args) == 0 {
		cmd.Usage()
		return 1
	}
	if len(args) != 2 {
		stderr("label add: incorrect number of arguments")
		return 1
	}

	lockfile, err := getLock()
	if err != nil {
		stderr("label add: %v", err)
		return 1
	}
	defer func() {
		if err := releaseLock(lockfile); err != nil {
			stderr("label add: %v", err)
			exit = 1
		}
	}()

	if debug {
		stderr("Adding label %q=%q", args[0], args[1])
	}

	err = lib.AddLabel(tmpacipath(), args[0], args[1])

	if err != nil {
		stderr("label add: %v", err)
		return 1
	}

	return 0
}
コード例 #9
0
ファイル: copy.go プロジェクト: rhencke/acbuild
func runCopy(cmd *cobra.Command, args []string) (exit int) {
	if len(args) == 0 {
		cmd.Usage()
		return 1
	}
	if (!toDir && len(args) != 2) || (toDir && len(args) < 2) {
		stderr("copy: incorrect number of arguments")
		return 1
	}

	if debug {
		stderr("Copying host:%s to aci:%s", args[0], args[1])
	}

	var err error
	if toDir {
		err = newACBuild().CopyToDir(args[:len(args)-1], args[len(args)-1])
	} else {
		err = newACBuild().CopyToTarget(args[0], args[1])
	}

	if err != nil {
		stderr("copy: %v", err)
		return getErrorCode(err)
	}

	return 0
}
コード例 #10
0
ファイル: dependency.go プロジェクト: rhencke/acbuild
func runAddDep(cmd *cobra.Command, args []string) (exit int) {
	if len(args) == 0 {
		cmd.Usage()
		return 1
	}
	if len(args) != 1 {
		stderr("dependency add: incorrect number of arguments")
		return 1
	}

	if debug {
		stderr("Adding dependency %q", args[0])
	}

	app, err := discovery.NewAppFromString(args[0])
	if err != nil {
		stderr("dependency add: couldn't parse dependency name: %v", err)
		return 1
	}

	appcLabels := types.Labels(labels)

	for name, value := range app.Labels {
		if _, ok := appcLabels.Get(string(name)); ok {
			stderr("multiple %s labels specified", name)
			return 1
		}
		appcLabels = append(appcLabels, types.Label{
			Name:  name,
			Value: value,
		})
	}

	var hash *types.Hash
	if imageId != "" {
		var err error
		hash, err = types.NewHash(imageId)
		if err != nil {
			stderr("dependency add: couldn't parse image ID: %v", err)
			return 1
		}
	}

	err = newACBuild().AddDependency(app.Name, hash, appcLabels, size)

	if err != nil {
		stderr("dependency add: %v", err)
		return getErrorCode(err)
	}

	return 0
}
コード例 #11
0
ファイル: cat-manifest.go プロジェクト: kinvolk/acbuild
func runCat(cmd *cobra.Command, args []string) (exit int) {
	if len(args) != 0 {
		cmd.Usage()
		return 1
	}

	if debug {
		stderr("Printing manifest from current build")
	}

	err := newACBuild().CatManifest(prettyPrint)
	if err != nil {
		stderr("cat-manifest: %v", err)
		return 1
	}

	return 0
}
コード例 #12
0
ファイル: set-event-handlers.go プロジェクト: kinvolk/acbuild
func runSetPreStart(cmd *cobra.Command, args []string) (exit int) {
	if len(args) == 0 {
		cmd.Usage()
		return 1
	}

	if debug {
		stderr("Setting pre-start event handler to %v", args)
	}

	err := newACBuild().SetPreStart(args)

	if err != nil {
		stderr("pre-start: %v", err)
		return 1
	}

	return 0
}
コード例 #13
0
ファイル: write.go プロジェクト: aaronlevy/acbuild
func runWrite(cmd *cobra.Command, args []string) (exit int) {
	if len(args) == 0 {
		cmd.Usage()
		return 1
	}

	if debug {
		stderr("Writing ACI to %s", args[0])
	}

	err := newACBuild().Write(args[0], overwrite, sign, args[1:])

	if err != nil {
		stderr("write: %v", err)
		return 1
	}

	return 0
}
コード例 #14
0
ファイル: set-event-handlers.go プロジェクト: kinvolk/acbuild
func runSetPostStop(cmd *cobra.Command, args []string) (exit int) {
	if len(args) == 0 {
		cmd.Usage()
		return 1
	}

	if debug {
		stderr("Setting post-stop event handler to %v", args)
	}

	err := newACBuild().SetPostStop(args)

	if err != nil {
		stderr("post-stop: %v", err)
		return 1
	}

	return 0
}
コード例 #15
0
ファイル: run.go プロジェクト: jaypipes/acbuild
func runRun(cmd *cobra.Command, args []string) (exit int) {
	if len(args) == 0 {
		cmd.Usage()
		return 1
	}

	if debug {
		stderr("Running: %v", args)
	}

	err := lib.Run(tmpacipath(), depstorepath(), targetpath(), scratchpath(), workpath(), args, insecure)

	if err != nil {
		stderr("run: %v", err)
		return 1
	}

	return 0
}
コード例 #16
0
ファイル: isolator.go プロジェクト: kinvolk/acbuild
func runAddIso(cmd *cobra.Command, args []string) (exit int) {
	if len(args) == 0 {
		cmd.Usage()
		return 1
	}
	if len(args) != 2 {
		stderr("isolator add: incorrect number of arguments")
		return 1
	}

	var r io.Reader
	var err error
	if args[1] == "-" {
		r = os.Stdin
	} else {
		file, err := os.Open(args[1])
		if err != nil {
			stderr("isolator add: %v", err)
			return 1
		}
		defer file.Close()
		r = file
	}

	val, err := ioutil.ReadAll(r)
	if err != nil {
		stderr("isolator add: %v", err)
		return 1
	}

	if debug {
		stderr("Adding isolator %q=%q", args[0], string(val))
	}

	err = newACBuild().AddIsolator(args[0], val)

	if err != nil {
		stderr("isolator add: %v", err)
		return 1
	}

	return 0
}
コード例 #17
0
ファイル: run.go プロジェクト: aaronlevy/acbuild
func runRun(cmd *cobra.Command, args []string) (exit int) {
	if len(args) == 0 {
		cmd.Usage()
		return 1
	}

	if debug {
		stderr("Running: %v", args)
	}

	err := newACBuild().Run(args, insecure)

	if err != nil {
		stderr("run: %v", err)
		return 1
	}

	return 0
}
コード例 #18
0
ファイル: set-exec.go プロジェクト: aaronlevy/acbuild
func runSetExec(cmd *cobra.Command, args []string) (exit int) {
	if len(args) == 0 {
		cmd.Usage()
		return 1
	}

	if debug {
		stderr("Setting exec command %v", args)
	}

	err := newACBuild().SetExec(args)

	if err != nil {
		stderr("set-exec: %v", err)
		return 1
	}

	return 0
}
コード例 #19
0
ファイル: port.go プロジェクト: apcera/acbuild
func runAddPort(cmd *cobra.Command, args []string) (exit int) {
	if len(args) == 0 {
		cmd.Usage()
		return 1
	}
	if len(args) != 3 {
		stderr("port add: incorrect number of arguments")
		return 1
	}
	port, err := strconv.ParseUint(args[2], 10, 16)
	if err != nil {
		stderr("port add: port must be a positive number between 0 and 65535")
		return 1
	}

	lockfile, err := getLock()
	if err != nil {
		stderr("port add: %v", err)
		return 1
	}
	defer func() {
		if err := releaseLock(lockfile); err != nil {
			stderr("port add: %v", err)
			exit = 1
		}
	}()

	if debug {
		stderr("Adding port %q=%q", args[0], args[1])
	}

	err = lib.AddPort(tmpacipath(), args[0], args[1], uint(port), count, socketActivated)

	if err != nil {
		stderr("port add: %v", err)
		return 1
	}

	return 0
}
コード例 #20
0
ファイル: set-name.go プロジェクト: aaronlevy/acbuild
func runSetName(cmd *cobra.Command, args []string) (exit int) {
	if len(args) > 1 {
		stderr("set-name: incorrect number of arguments")
		return 1
	}
	if len(args) == 0 {
		cmd.Usage()
		return 1
	}

	if debug {
		stderr("Setting name of ACI to %s", args[0])
	}

	err := newACBuild().SetName(args[0])

	if err != nil {
		stderr("set-name: %v", err)
		return 1
	}

	return 0
}
コード例 #21
0
ファイル: set-group.go プロジェクト: jaypipes/acbuild
func runSetGroup(cmd *cobra.Command, args []string) (exit int) {
	if len(args) == 0 {
		cmd.Usage()
		return 1
	}
	if len(args) != 1 {
		stderr("set-group: incorrect number of arguments")
		return 1
	}

	if debug {
		stderr("Setting group to %s", args[0])
	}

	err := lib.SetGroup(tmpacipath(), args[0])

	if err != nil {
		stderr("set-group: %v", err)
		return 1
	}

	return 0
}
コード例 #22
0
ファイル: annotation.go プロジェクト: kinvolk/acbuild
func runRmAnno(cmd *cobra.Command, args []string) (exit int) {
	if len(args) == 0 {
		cmd.Usage()
		return 1
	}
	if len(args) != 1 {
		stderr("annotation remove: incorrect number of arguments")
		return 1
	}

	if debug {
		stderr("Removing annotation %q", args[0])
	}

	err := newACBuild().RemoveAnnotation(args[0])

	if err != nil {
		stderr("annotation remove: %v", err)
		return getErrorCode(err)
	}

	return 0
}
コード例 #23
0
ファイル: annotation.go プロジェクト: kinvolk/acbuild
func runAddAnno(cmd *cobra.Command, args []string) (exit int) {
	if len(args) == 0 {
		cmd.Usage()
		return 1
	}
	if len(args) != 2 {
		stderr("annotation add: incorrect number of arguments")
		return 1
	}

	if debug {
		stderr("Adding annotation %q=%q", args[0], args[1])
	}

	err := newACBuild().AddAnnotation(args[0], args[1])

	if err != nil {
		stderr("annotation add: %v", err)
		return getErrorCode(err)
	}

	return 0
}
コード例 #24
0
ファイル: isolator.go プロジェクト: kinvolk/acbuild
func runRemoveIso(cmd *cobra.Command, args []string) (exit int) {
	if len(args) == 0 {
		cmd.Usage()
		return 1
	}
	if len(args) > 1 {
		stderr("isolator remove: incorrect number of arguments")
		return 1
	}

	if debug {
		stderr("Removing isolator %q", args[0])
	}

	err := newACBuild().RemoveIsolator(args[0])

	if err != nil {
		stderr("isolator remove: %v", err)
		return 1
	}

	return 0
}
コード例 #25
0
ファイル: set-user.go プロジェクト: aaronlevy/acbuild
func runSetUser(cmd *cobra.Command, args []string) (exit int) {
	if len(args) == 0 {
		cmd.Usage()
		return 1
	}
	if len(args) != 1 {
		stderr("set-user: incorrect number of arguments")
		return 1
	}

	if debug {
		stderr("Setting user to %s", args[0])
	}

	err := newACBuild().SetUser(args[0])

	if err != nil {
		stderr("set-user: %v", err)
		return 1
	}

	return 0
}
コード例 #26
0
ファイル: set-group.go プロジェクト: kinvolk/acbuild
func runSetGroup(cmd *cobra.Command, args []string) (exit int) {
	if len(args) == 0 {
		cmd.Usage()
		return 1
	}
	if len(args) != 1 {
		stderr("set-group: incorrect number of arguments")
		return 1
	}

	if debug {
		stderr("Setting group to %s", args[0])
	}

	err := newACBuild().SetGroup(args[0])

	if err != nil {
		stderr("set-group: %v", err)
		return getErrorCode(err)
	}

	return 0
}
コード例 #27
0
ファイル: dependency.go プロジェクト: jaypipes/acbuild
func runRmDep(cmd *cobra.Command, args []string) (exit int) {
	if len(args) == 0 {
		cmd.Usage()
		return 1
	}
	if len(args) != 1 {
		stderr("dependency remove: incorrect number of arguments")
		return 1
	}

	if debug {
		stderr("Removing dependency %q", args[0])
	}

	err := lib.RemoveDependency(tmpacipath(), args[0])

	if err != nil {
		stderr("dependency remove: %v", err)
		return 1
	}

	return 0
}
コード例 #28
0
ファイル: replace-manifest.go プロジェクト: kinvolk/acbuild
func runReplaceMan(cmd *cobra.Command, args []string) (exit int) {
	if len(args) == 0 {
		cmd.Usage()
		return 1
	}
	if len(args) != 1 {
		stderr("replace-manifest: incorrect number of arguments")
		return 1
	}

	if debug {
		stderr("Replacing manifest in ACI with the manifest at ", args[0])
	}

	err := newACBuild().ReplaceManifest(args[0])

	if err != nil {
		stderr("replace-manifest: %v", err)
		return 1
	}

	return 0
}
コード例 #29
0
ファイル: copy.go プロジェクト: aaronlevy/acbuild
func runCopy(cmd *cobra.Command, args []string) (exit int) {
	if len(args) == 0 {
		cmd.Usage()
		return 1
	}
	if len(args) != 2 {
		stderr("copy: incorrect number of arguments")
		return 1
	}

	if debug {
		stderr("Copying host:%s to aci:%s", args[0], args[1])
	}

	err := newACBuild().Copy(args[0], args[1])

	if err != nil {
		stderr("copy: %v", err)
		return 1
	}

	return 0
}
コード例 #30
0
ファイル: environment.go プロジェクト: jaypipes/acbuild
func runAddEnv(cmd *cobra.Command, args []string) (exit int) {
	if len(args) == 0 {
		cmd.Usage()
		return 1
	}
	if len(args) != 2 {
		stderr("environment add: incorrect number of arguments")
		return 1
	}

	if debug {
		stderr("Adding environment variable %q=%q", args[0], args[1])
	}

	err := lib.AddEnv(tmpacipath(), args[0], args[1])

	if err != nil {
		stderr("environment add: %v", err)
		return 1
	}

	return 0
}