Просмотр исходного кода

support setting the project type manually.

Lucas Stadler лет назад: 11
Родитель
Сommit
e87460f71b
2 измененных файлов с 23 добавлено и 1 удалено
  1. 9 0
      go/detect/detect.go
  2. 14 1
      go/qst.go

+ 9 - 0
go/detect/detect.go

63
	return projects
63
	return projects
64
}
64
}
65
65
66
func GetById(id string) *Project {
67
	for _, project := range ProjectTypes {
68
		if project.Id == id {
69
			return project
70
		}
71
	}
72
	return nil
73
}
74
66
func matchingFileOrDir(file string, pattern string) bool {
75
func matchingFileOrDir(file string, pattern string) bool {
67
	if fileutil.IsFile(file) {
76
	if fileutil.IsFile(file) {
68
		_, f := path.Split(file)
77
		_, f := path.Split(file)

+ 14 - 1
go/qst.go

32
var delay = flag.Duration("delay", 1*time.Second, "time to wait until restart")
32
var delay = flag.Duration("delay", 1*time.Second, "time to wait until restart")
33
var autoRestart = flag.Bool("autorestart", true, "automatically restart after command exists")
33
var autoRestart = flag.Bool("autorestart", true, "automatically restart after command exists")
34
var command = flag.String("command", "", "command to run ({file} will be substituted)")
34
var command = flag.String("command", "", "command to run ({file} will be substituted)")
35
var projectType = flag.String("type", "", "project type to use (autodetected if not present)")
35
36
36
func main() {
37
func main() {
37
	log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
38
	log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
56
	// }
57
	// }
57
58
58
	var cmd string
59
	var cmd string
59
	if command != nil && strings.TrimSpace(*command) != "" {
60
	if !flagEmpty(command) {
60
		cmd = *command
61
		cmd = *command
61
	} else {
62
	} else {
62
		project, err := detect.Detect(file)
63
		project, err := detect.Detect(file)
64
		if !flagEmpty(projectType) {
65
			project = detect.GetById(*projectType)
66
			if project == nil {
67
				log.Fatalf("unknown type: `%s'", *projectType)
68
			} else if !project.Detect(file) {
69
				log.Fatalf("%s doesn't match type %s!", file, *projectType)
70
			}
71
		}
63
		if err != nil {
72
		if err != nil {
64
			log.Fatal("error: ", err)
73
			log.Fatal("error: ", err)
65
		}
74
		}
87
	runner.Stop()
96
	runner.Stop()
88
}
97
}
89
98
99
func flagEmpty(stringFlag *string) bool {
100
	return stringFlag == nil || strings.TrimSpace(*stringFlag) == ""
101
}
102
90
func runCmd(file string, runner *Runner) {
103
func runCmd(file string, runner *Runner) {
91
	runner.Start()
104
	runner.Start()
92
	lastMtime := time.Now()
105
	lastMtime := time.Now()