func setupCron()

in command/install.go [66:100]


func setupCron(cfg *config.Monkey, executablePath string) error {
	err := EnsureFileAbsent(cfg.SchedulePath())
	if err != nil {
		return err
	}

	err = EnsureFileAbsent(cfg.ScheduleCronPath())
	if err != nil {
		return err
	}

	var scriptPerms os.FileMode = 0755 // -rwx-rx--rx-- : scripts should be executable
	log.Printf("Creating %s\n", cfg.SchedulePath())

	content, err := generateScriptContent(scheduleCommand, cfg, executablePath)
	if err != nil {
		return err
	}

	err = ioutil.WriteFile(cfg.SchedulePath(), content, scriptPerms)
	if err != nil {
		return err
	}

	cronExpr, err := cfg.CronExpression()
	if err != nil {
		return err
	}

	crontab := fmt.Sprintf("%s %s %s\n", cronExpr, cfg.TermAccount(), cfg.SchedulePath())
	var cronPerms os.FileMode = 0644 // -rw-r--r-- : cron config file shouldn't have write perm
	log.Printf("Creating %s\n", cfg.ScheduleCronPath())
	err = ioutil.WriteFile(cfg.ScheduleCronPath(), []byte(crontab), cronPerms)
	return err
}