示例#1
0
文件: errors.go 项目: rschmukler/zeus
func ErrorConfigCommandCouldntStart(output string) {
	slog.Red("Failed to initialize application from {yellow}zeus.json{red}.")
	if slog.Red("The json file is valid, but the {yellow}command{red} could not be started:") {
		fmt.Println(output)
		ExitNow(1)
	}
}
示例#2
0
文件: errors.go 项目: rschmukler/zeus
func ErrorConfigCommandCrashed(output string) {
	slog.Red("Failed to initialize application from {yellow}zeus.json{red}.")
	if slog.Red("The json file is valid, but the {yellow}command{red} terminated with this output:") {
		fmt.Println(output)
		ExitNow(1)
	}
}
示例#3
0
文件: errors.go 项目: Epictetus/zeus
func ErrorConfigCommandCrashed(output string) {
	if !suppressErrors {
		slog.Red("Failed to initialize application from " + yellow + "zeus.json" + red + ".")
		slog.Red("The json file is valid, but the " + yellow + "command" + red + " terminated with this output:")
		fmt.Println(output)
		ExitNow(1)
	}
}
示例#4
0
文件: errors.go 项目: Epictetus/zeus
func ErrorConfigCommandCouldntStart(output string) {
	if !suppressErrors {
		slog.Red("Failed to initialize application from " + yellow + "zeus.json" + red + ".")
		slog.Red("The json file is valid, but the " + yellow + "command" + red + " could not be started:")
		fmt.Println(output)
		ExitNow(1)
	}
}
示例#5
0
func startWrapper(filesChanged chan string) *exec.Cmd {
	path := executablePath()
	cmd := exec.Command(path[0], path[1:]...)
	var err error
	if watcherIn, err = cmd.StdinPipe(); err != nil {
		terminate(err.Error())
	}
	if watcherOut, err = cmd.StdoutPipe(); err != nil {
		terminate(err.Error())
	}
	if watcherErr, err = cmd.StderrPipe(); err != nil {
		terminate(err.Error())
	}

	cmd.Start()

	go func() {
		buf := make([]byte, 2048)
		for {
			n, err := watcherOut.Read(buf)
			if err != nil {
				time.Sleep(500 * time.Millisecond)
				slog.Red("Failed to read from FileSystem watcher process: " + err.Error())
			}
			message := strings.TrimSpace(string(buf[:n]))
			files := strings.Split(message, "\n")
			for _, file := range files {
				filesChanged <- file
			}
		}
	}()

	go func() {
		err := cmd.Wait()
		// gross, but this is an easy way to work around the case where
		// signal propagation hits the wrapper before the master disables logging
		time.Sleep(100 * time.Millisecond)
		terminate("The FS watcher process crashed: " + err.Error())
	}()

	return cmd
}
示例#6
0
文件: errors.go 项目: rschmukler/zeus
func Error(msg string) {
	if slog.Red(msg) {
		ExitNow(1)
	}
}
示例#7
0
文件: errors.go 项目: Epictetus/zeus
func errorFailedReadFromWatcher(err error) {
	if !suppressErrors {
		slog.Red("Failed to read from FileSystem watcher process: " + err.Error())
	}
}
示例#8
0
文件: errors.go 项目: Epictetus/zeus
func ErrorFileMonitorWrapperCrashed(err error) {
	if !suppressErrors {
		slog.Red("The FileSystem watcher process crashed: " + err.Error())
		ExitNow(1)
	}
}
示例#9
0
文件: errors.go 项目: Epictetus/zeus
func ErrorCantCreateListener() {
	if !suppressErrors {
		slog.Red("It looks like Zeus is already running. If not, remove " + yellow + ".zeus.sock" + red + " and try again.")
		ExitNow(1)
	}
}
示例#10
0
文件: errors.go 项目: Epictetus/zeus
func errorUnableToAcceptSocketConnection() {
	if !suppressErrors {
		slog.Red("Unable to accept socket connection.")
	}
}
示例#11
0
文件: errors.go 项目: Epictetus/zeus
func ErrorConfigFileInvalidJson() {
	if !suppressErrors {
		slog.Red("The config file " + yellow + "zeus.json" + red + " contains invalid JSON and could not be parsed.")
		os.Exit(1)
	}
}
示例#12
0
文件: errors.go 项目: Epictetus/zeus
func ErrorConfigFileInvalidFormat() {
	if !suppressErrors {
		slog.Red("The config file " + yellow + "zeus.json" + red + " is not in the correct format.")
		os.Exit(1)
	}
}
示例#13
0
文件: zerror.go 项目: nevir/zeus
func ErrorConfigCommandCrashed(output string) {
	ExitNow(1, func() {
		slog.Red("Couldn't boot application. {yellow}command{red} terminated with this output:")
		fmt.Println(output)
	})
}
示例#14
0
文件: errors.go 项目: Epictetus/zeus
// The config file is loaded before any goroutines arything is done that requires cleanup,
// and our exitNow goroutine has not been spawned yet, so we will just explicitly exit
// in the json-related errors..
func ErrorConfigFileMissing() {
	if !suppressErrors {
		slog.Red("Required config file " + yellow + "zeus.json" + red + " not found in the current directory.")
		os.Exit(1)
	}
}
示例#15
0
文件: errors.go 项目: rschmukler/zeus
func ErrorCantConnectToMaster() {
	slog.Red("Can't connect to master. Run {yellow}zeus start{red} first.\r")
	os.Exit(1)
}
示例#16
0
文件: zerror.go 项目: nevir/zeus
func ErrorConfigCommandCouldntStart(msg, output string) {
	ExitNow(1, func() {
		slog.Red("Failed to initialize application from {yellow}zeus.json{red}.")
		slog.Red("The json file is valid, but the {yellow}command{red} could not be started:\n\x1b[0m" + output)
	})
}
示例#17
0
文件: errors.go 项目: rschmukler/zeus
func errorUnableToAcceptSocketConnection() {
	slog.Red("Unable to accept socket connection.")
}
示例#18
0
文件: errors.go 项目: rschmukler/zeus
func ErrorCantCreateListener() {
	if slog.Red("It looks like Zeus is already running. If not, remove {yellow}.zeus.sock{red} and try again.") {
		ExitNow(1)
	}
}
示例#19
0
文件: errors.go 项目: rschmukler/zeus
func ErrorConfigFileInvalidFormat() {
	if slog.Red("The config file {yellow}zeus.json{red} is not in the correct format.") {
		os.Exit(1)
	}
}
示例#20
0
文件: errors.go 项目: rschmukler/zeus
func ErrorConfigFileInvalidJson() {
	if slog.Red("The config file {yellow}zeus.json{red} contains invalid JSON and could not be parsed.") {
		os.Exit(1)
	}
}
示例#21
0
文件: errors.go 项目: rschmukler/zeus
// The config file is loaded before any goroutines are launched that require cleanup,
// and our exitNow goroutine has not been spawned yet, so we will just explicitly exit
// in the json-related errors..
func ErrorConfigFileMissing() {
	if slog.Red("Required config file {yellow}zeus.json{red} not found in the current directory.") {
		os.Exit(1)
	}
}
示例#22
0
文件: filemonitor.go 项目: nevir/zeus
func terminate(message string) {
	slog.Red(message)
	println(message)
	proc, _ := os.FindProcess(os.Getpid())
	proc.Signal(syscall.SIGTERM)
}
示例#23
0
文件: zerror.go 项目: nevir/zeus
func Error(msg string) {
	ExitNow(1, func() {
		slog.Red(msg)
	})
}