浏览代码

added default configuration for common vcs

bmallred 10 年之前
父节点
当前提交
4e975c13c4
共有 2 个文件被更改,包括 82 次插入11 次删除
  1. 75 4
      cmd/app.go
  2. 7 7
      cmd/app_test.go

+ 75 - 4
cmd/app.go

26
		Stdin:     os.Stdin,
26
		Stdin:     os.Stdin,
27
		Stderr:    os.Stderr,
27
		Stderr:    os.Stderr,
28
		Stdout:    os.Stdout,
28
		Stdout:    os.Stdout,
29
		Directory: getWorkingDirectory(),
29
		Directory: GetWorkingDirectory(),
30
	}
30
	}
31
}
31
}
32
32
33
// Run the application
33
// Run the application
34
func (a *App) Run() error {
34
func (a *App) Run() error {
35
	ConfigureEnvironment()
36
35
	if len(a.Args) < 1 {
37
	if len(a.Args) < 1 {
36
		a.Args = append(a.Args, "help")
38
		a.Args = append(a.Args, "help")
37
	}
39
	}
38
40
39
	executed := false
41
	executed := false
40
	for _, s := range getVersionControlSystems() {
42
	for _, s := range GetVersionControlSystems() {
41
		// Determine if the directory is version controlled (skip if it is not)
43
		// Determine if the directory is version controlled (skip if it is not)
42
		err := isVersionControlled(s, a.Directory)
44
		err := isVersionControlled(s, a.Directory)
43
		if err != nil {
45
		if err != nil {
58
}
60
}
59
61
60
// Get the working directory
62
// Get the working directory
61
func getWorkingDirectory() string {
63
func GetWorkingDirectory() string {
62
	d, _ := os.Getwd()
64
	d, _ := os.Getwd()
63
	return d
65
	return d
64
}
66
}
65
67
66
// Extract an array of version control systems available on the system
68
// Extract an array of version control systems available on the system
67
func getVersionControlSystems() []string {
69
func GetVersionControlSystems() []string {
68
	return strings.Split(os.Getenv("CODE_VCS"), ";")
70
	return strings.Split(os.Getenv("CODE_VCS"), ";")
69
}
71
}
70
72
73
func ConfigureEnvironment() {
74
	systems := GetVersionControlSystems()
75
76
	env := os.Getenv("CODE_VCS")
77
	if env == "" {
78
		os.Setenv("CODE_VCS", "git;hg;tf;bzr")
79
	}
80
81
	// Configure VCS checking
82
	for _, vcs := range systems {
83
		key := fmt.Sprintf("CODE_%s_CHECK", strings.ToUpper(vcs))
84
		env = os.Getenv(key)
85
86
		// Temporarily define the subcommand `incoming` for known version control systems
87
		if env == "" {
88
			incoming := ""
89
90
			switch vcs {
91
			case "git":
92
				incoming = "branch"
93
				break
94
			case "hg":
95
				incoming = "branch"
96
				break
97
			case "bzr":
98
				incoming = "root"
99
				break
100
			case "tf":
101
				incoming = "branches ."
102
				break
103
			}
104
105
			if incoming != "" {
106
				os.Setenv(key, incoming)
107
			}
108
		}
109
	}
110
111
	// Configure VCS incoming
112
	for _, vcs := range systems {
113
		key := fmt.Sprintf("CODE_%s_INCOMING", strings.ToUpper(vcs))
114
		env = os.Getenv(key)
115
116
		// Temporarily define the subcommand `incoming` for known version control systems
117
		if env == "" {
118
			incoming := ""
119
120
			switch vcs {
121
			case "git":
122
				incoming = "log ..@{u}"
123
				break
124
			case "hg":
125
				incoming = "incoming"
126
				break
127
			case "bzr":
128
				incoming = "missing"
129
				break
130
			case "tf":
131
				incoming = "history -r -stopafter:1 -version:W~T ."
132
				break
133
			}
134
135
			if incoming != "" {
136
				os.Setenv(key, incoming)
137
			}
138
		}
139
	}
140
}
141
71
// Determine if the directory is part of the version control system
142
// Determine if the directory is part of the version control system
72
func isVersionControlled(vcs, directory string) error {
143
func isVersionControlled(vcs, directory string) error {
73
	env := os.Getenv(fmt.Sprintf("CODE_%s_CHECK", strings.ToUpper(vcs)))
144
	env := os.Getenv(fmt.Sprintf("CODE_%s_CHECK", strings.ToUpper(vcs)))

+ 7 - 7
cmd/app_test.go

19
		Stdin:     &buffer,
19
		Stdin:     &buffer,
20
		Stderr:    &buffer,
20
		Stderr:    &buffer,
21
		Stdout:    &buffer,
21
		Stdout:    &buffer,
22
		Directory: getWorkingDirectory(),
22
		Directory: GetWorkingDirectory(),
23
	}
23
	}
24
24
25
	err := app.Run()
25
	err := app.Run()
40
		Stdin:     &buffer,
40
		Stdin:     &buffer,
41
		Stderr:    &buffer,
41
		Stderr:    &buffer,
42
		Stdout:    &buffer,
42
		Stdout:    &buffer,
43
		Directory: getWorkingDirectory(),
43
		Directory: GetWorkingDirectory(),
44
	}
44
	}
45
45
46
	err := app.Run()
46
	err := app.Run()
61
		Stdin:     &buffer,
61
		Stdin:     &buffer,
62
		Stderr:    &buffer,
62
		Stderr:    &buffer,
63
		Stdout:    &buffer,
63
		Stdout:    &buffer,
64
		Directory: getWorkingDirectory(),
64
		Directory: GetWorkingDirectory(),
65
	}
65
	}
66
66
67
	err := app.Run()
67
	err := app.Run()
68
	if err == nil {
68
	if err != nil {
69
		t.FailNow()
69
		t.FailNow()
70
	}
70
	}
71
}
71
}
82
		Stdin:     &buffer,
82
		Stdin:     &buffer,
83
		Stderr:    &buffer,
83
		Stderr:    &buffer,
84
		Stdout:    &buffer,
84
		Stdout:    &buffer,
85
		Directory: getWorkingDirectory(),
85
		Directory: GetWorkingDirectory(),
86
	}
86
	}
87
87
88
	err := app.Run()
88
	err := app.Run()
104
		Stdin:     &buffer,
104
		Stdin:     &buffer,
105
		Stderr:    &buffer,
105
		Stderr:    &buffer,
106
		Stdout:    &buffer,
106
		Stdout:    &buffer,
107
		Directory: getWorkingDirectory(),
107
		Directory: GetWorkingDirectory(),
108
	}
108
	}
109
109
110
	err := app.Run()
110
	err := app.Run()
125
		Stdin:     &buffer,
125
		Stdin:     &buffer,
126
		Stderr:    &buffer,
126
		Stderr:    &buffer,
127
		Stdout:    &buffer,
127
		Stdout:    &buffer,
128
		Directory: getWorkingDirectory(),
128
		Directory: GetWorkingDirectory(),
129
	}
129
	}
130
130
131
	err := app.Run()
131
	err := app.Run()