commands

package
v2.0.2+incompatible Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 14, 2018 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var CleanCmd = &cobra.Command{
	Use:   "clean",
	Short: "Clean all finished task.",
	Run: func(cmd *cobra.Command, args []string) {
		c := &config.Config{}
		c.LoadFromFilePath(cmd.Flag("config").Value.String())

		err := c.Check()
		if err != nil {
			logrus.Errorf("Config check failed for %v.", err)
			return
		}

		if pidfile := c.PIDFile; pidfile != "" {
			p, err := pid.New(pidfile)
			if err != nil {
				logrus.Errorf("PID create failed for %v.", err)
				return
			}
			defer func() {
				err = p.Remove()
				if err != nil {
					logrus.Errorf("PID remove failed for %v.", err)
				}
			}()
		}

		err = contexts.SetupContexts(c)
		if err != nil {
			logrus.Errorf("Contexts setup failed for %v.", err)
			return
		}
		defer contexts.DB.Close()

		logrus.Infof("Clean started.")

		ctx := context.Background()
		t, err := model.ListTask(ctx)
		if err != nil {
			logrus.Panic(err)
		}
		for _, v := range t {
			if v.Status != constants.TaskStatusFinished {
				continue
			}

			err = model.DeleteTaskByName(ctx, v.Name)
			if err != nil {
				logrus.Panic(err)
			}

			logrus.Infof("Task %s has been cleaned.", v.Name)
		}
	},
}

CleanCmd will clean all finished task.

View Source
var DeleteCmd = &cobra.Command{
	Use:   "delete [task name]",
	Short: "Delete a task",
	Args:  cobra.ExactArgs(1),
	Run: func(cmd *cobra.Command, args []string) {
		c := &config.Config{}
		c.LoadFromFilePath(cmd.Flag("config").Value.String())

		err := c.Check()
		if err != nil {
			logrus.Errorf("Config check failed for %v.", err)
			return
		}

		if pidfile := c.PIDFile; pidfile != "" {
			p, err := pid.New(pidfile)
			if err != nil {
				logrus.Errorf("PID create failed for %v.", err)
				return
			}
			defer func() {
				err = p.Remove()
				if err != nil {
					logrus.Errorf("PID remove failed for %v.", err)
				}
			}()
		}

		err = contexts.SetupContexts(c)
		if err != nil {
			logrus.Errorf("Contexts setup failed for %v.", err)
			return
		}
		defer contexts.DB.Close()

		ctx := context.Background()

		t, err := model.GetTaskByName(ctx, args[0])
		if err != nil {
			logrus.Panicf("Task load failed for %v.", err)
			return
		}
		if t == nil {
			logrus.Errorf("Task %s is not exist.", args[0])
			return
		}

		ctx = utils.NewTaskContext(ctx, t.Name)

		logrus.Infof("Task %s delete started.", t.Name)

		err = model.DeleteTask(ctx)
		if err != nil {
			logrus.Panicf("Delete task for %v.", err)
		}

		logrus.Infof("Task %s has been deleted.", t.Name)
	},
}

DeleteCmd will provide delete command for qscamel.

View Source
var RunCmd = &cobra.Command{
	Use:   "run [task name or task path]",
	Short: "Create or resume a task",
	Args:  cobra.ExactArgs(1),
	Run: func(cmd *cobra.Command, args []string) {
		c := &config.Config{}
		c.LoadFromFilePath(cmd.Flag("config").Value.String())

		err := c.Check()
		if err != nil {
			logrus.Errorf("Config check failed for %v.", err)
			return
		}

		if pidfile := c.PIDFile; pidfile != "" {
			p, err := pid.New(pidfile)
			if err != nil {
				logrus.Errorf("PID create failed for %v.", err)
				return
			}
			defer func() {
				err = p.Remove()
				if err != nil {
					logrus.Errorf("PID remove failed for %v.", err)
				}
			}()
		}

		err = contexts.SetupContexts(c)
		if err != nil {
			logrus.Errorf("Contexts setup failed for %v.", err)
			return
		}
		defer contexts.DB.Close()

		ctx := context.Background()

		sigs := make(chan os.Signal, 1)
		signal.Notify(sigs, os.Interrupt, os.Kill)
		go func() {
			sig := <-sigs
			logrus.Infof("Signal %v received, exit for now.", sig)

			contexts.DB.Close()

			os.Exit(0)
		}()

		t, err := model.LoadTask(args[0], taskPath)
		if err != nil {
			logrus.Errorf("Task load failed for %v.", err)
			return
		}
		err = t.Check()
		if err != nil {
			logrus.Errorf("Task check failed for %v.", err)
			return
		}

		ctx = utils.NewTaskContext(ctx, t.Name)

		logrus.Infof("Current version: %s.", constants.Version)
		logrus.Infof("Task %s migrate started.", t.Name)

		err = migrate.Execute(ctx)
		if err != nil {
			logrus.Errorf("Migrate failed for %v.", err)
		}
	},
}

RunCmd will provide run command for qscamel.

View Source
var StatusCmd = &cobra.Command{
	Use:   "status",
	Short: "Show current task status.",
	Run: func(cmd *cobra.Command, args []string) {
		c := &config.Config{}
		c.LoadFromFilePath(cmd.Flag("config").Value.String())

		err := c.Check()
		if err != nil {
			logrus.Errorf("Config check failed for %v.", err)
			return
		}

		if pidfile := c.PIDFile; pidfile != "" {
			p, err := pid.New(pidfile)
			if err != nil {
				logrus.Errorf("PID create failed for %v.", err)
				return
			}
			defer func() {
				err = p.Remove()
				if err != nil {
					logrus.Errorf("PID remove failed for %v.", err)
				}
			}()
		}

		err = contexts.SetupContexts(c)
		if err != nil {
			logrus.Errorf("Contexts setup failed for %v.", err)
			return
		}
		defer contexts.DB.Close()

		logrus.Infof("Show status started.")

		ctx := context.Background()
		t, err := model.ListTask(ctx)
		if err != nil {
			logrus.Panic(err)
		}
		logrus.Printf("There are %d tasks totally.", len(t))
		for _, v := range t {
			logrus.Printf("Task: %s, Status: %s", v.Name, v.Status)
		}
	},
}

StatusCmd will show current task status.

View Source
var VersionCmd = &cobra.Command{
	Use:   "version",
	Short: "Print the version number of qscamel",
	Run: func(cmd *cobra.Command, args []string) {
		fmt.Printf("%s version %s\n", constants.Name, constants.Version)
	},
}

VersionCmd will provide version command for qscamel.

Functions

This section is empty.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL