Skip to content

Commit a8e019e

Browse files
Merge pull request #8 from alexandreh2ag/add_prefix_on_program
add prefix in template files
2 parents d3d2bba + 089d065 commit a8e019e

File tree

6 files changed

+55
-25
lines changed

6 files changed

+55
-25
lines changed

assets/templates/supervisor.tmpl

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
[group:{{ groupName }}]
2-
programs={{ programs . }}
2+
programs={{ programs . }}
33

44
{{ range . }}
5-
[program:{{ .Id }}]
5+
[program:{{ .PrefixedName }}]
66
directory = {{ .Directory }}
77
autorestart = true
88
autostart = true
99
user = {{ .User }}
1010
command = {{ .Command }}
11-
environment = {{ envs . groupName }}
11+
environment = {{ envs . }}
1212
{{ end }}

cli/worker/generate.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ func GetWorkerGenerateRunFn(ctx *context.Context) func(*cobra.Command, []string)
5555
return fmt.Errorf("missing mandatory arguments (--%s, --%s)", OutputPath, flags.GroupName)
5656
}
5757

58-
types.PrepareWorkerTasks(ctx.Config.Workers, user, workingDir)
58+
types.PrepareWorkerTasks(ctx.Config.Workers, groupName, user, workingDir)
5959
ctx.Logger.Info(fmt.Sprintf("Generate format type %s", generate.FormatSupervisor))
6060

6161
return generate.Generate(ctx, outputPath, format, groupName)

generate/generate.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -80,17 +80,17 @@ func templateSupervisorFile(ctx *context.Context, writer io.Writer, groupName st
8080
func generateProgramList(workers types.WorkerTasks) string {
8181
programs := []string{}
8282
for _, task := range workers {
83-
programs = append(programs, task.Id)
83+
programs = append(programs, task.PrefixedName())
8484
}
8585
return strings.Join(programs, ",")
8686
}
8787

88-
func generateEnvVars(worker types.WorkerTask, groupName string) string {
88+
func generateEnvVars(worker types.WorkerTask) string {
8989
envVars := []string{}
90-
envVars = append(envVars, fmt.Sprintf(`%s="%s"`, types.GtaskGroupNameKey, groupName))
90+
envVars = append(envVars, fmt.Sprintf(`%s="%s"`, types.GtaskGroupNameKey, worker.GroupName))
9191
envVars = append(envVars, fmt.Sprintf(`%s="%s"`, types.GtaskDirKey, worker.Directory))
9292
envVars = append(envVars, fmt.Sprintf(`%s="%s"`, types.GtaskUserKey, worker.User))
93-
envVars = append(envVars, fmt.Sprintf(`%s="%s"`, types.GtaskIDKey, worker.Id))
93+
envVars = append(envVars, fmt.Sprintf(`%s="%s"`, types.GtaskIDKey, worker.PrefixedName()))
9494

9595
return strings.Join(envVars, ",")
9696
}

generate/generate_test.go

+18-11
Original file line numberDiff line numberDiff line change
@@ -154,39 +154,40 @@ func TestGenerate_OK(t *testing.T) {
154154

155155
func TestTemplateSupervisorFile_OK(t *testing.T) {
156156
ctx := context.TestContext(io.Discard)
157-
157+
groupName := "test-group"
158158
workers := types.WorkerTasks{
159159
{
160160
Id: "test",
161161
Command: "fake",
162+
GroupName: groupName,
162163
User: "toto",
163164
Directory: "/tmp/dir",
164165
},
165166
{
166167
Id: "test2",
167168
Command: "fake",
169+
GroupName: groupName,
168170
User: "toto",
169171
Directory: "/tmp/dir",
170172
},
171173
}
172-
groupName := "test-group"
173174

174175
expectedOutput := "[group:test-group]\n" +
175-
"programs=test,test2\n\n\n" +
176-
"[program:test]\n" +
176+
"programs=test-group-test,test-group-test2\n\n\n" +
177+
"[program:test-group-test]\n" +
177178
"directory = /tmp/dir\n" +
178179
"autorestart = true\n" +
179180
"autostart = true\n" +
180181
"user = toto\n" +
181182
"command = fake\n" +
182-
"environment = GTASK_GROUP_NAME=\"test-group\",GTASK_DIR=\"/tmp/dir\",GTASK_USER=\"toto\",GTASK_ID=\"test\"\n\n" +
183-
"[program:test2]\n" +
183+
"environment = GTASK_GROUP_NAME=\"test-group\",GTASK_DIR=\"/tmp/dir\",GTASK_USER=\"toto\",GTASK_ID=\"test-group-test\"\n\n" +
184+
"[program:test-group-test2]\n" +
184185
"directory = /tmp/dir\n" +
185186
"autorestart = true\n" +
186187
"autostart = true\n" +
187188
"user = toto\n" +
188189
"command = fake\n" +
189-
"environment = GTASK_GROUP_NAME=\"test-group\",GTASK_DIR=\"/tmp/dir\",GTASK_USER=\"toto\",GTASK_ID=\"test2\"\n"
190+
"environment = GTASK_GROUP_NAME=\"test-group\",GTASK_DIR=\"/tmp/dir\",GTASK_USER=\"toto\",GTASK_ID=\"test-group-test2\"\n"
190191

191192
ctx.Config.Workers = workers
192193

@@ -199,22 +200,26 @@ func TestTemplateSupervisorFile_OK(t *testing.T) {
199200
}
200201

201202
func TestGenerateProgramList(t *testing.T) {
203+
prefix := "pref"
202204
workers := types.WorkerTasks{
203205
{
204206
Id: "test",
205207
Command: "fake",
206208
User: "toto",
207209
Directory: "/tmp/dir",
210+
GroupName: prefix,
208211
},
209212
{
210213
Id: "test2",
211214
Command: "fake",
212215
User: "toto",
213216
Directory: "/tmp/dir",
217+
GroupName: prefix,
214218
},
215219
}
220+
216221
output := generateProgramList(workers)
217-
assert.Equal(t, output, "test,test2")
222+
assert.Equal(t, output, prefix+"-test,"+prefix+"-test2")
218223
}
219224

220225
func TestDeleteFile_OK(t *testing.T) {
@@ -276,16 +281,18 @@ func TestGenerate_NoErrorDeleteFile(t *testing.T) {
276281
}
277282

278283
func TestGenerateEnvVars(t *testing.T) {
284+
groupName := "group"
285+
279286
worker := types.WorkerTask{
280287
Id: "test2",
281288
Command: "fake",
282289
User: "toto",
290+
GroupName: groupName,
283291
Directory: "/tmp/dir",
284292
}
285-
groupName := "group"
286-
output := generateEnvVars(worker, groupName)
293+
output := generateEnvVars(worker)
287294

288295
assert.Equal(t,
289-
fmt.Sprintf("GTASK_GROUP_NAME=\"%s\",GTASK_DIR=\"%s\",GTASK_USER=\"%s\",GTASK_ID=\"%s\"", groupName, worker.Directory, worker.User, worker.Id),
296+
fmt.Sprintf("GTASK_GROUP_NAME=\"%s\",GTASK_DIR=\"%s\",GTASK_USER=\"%s\",GTASK_ID=\"%s\"", groupName, worker.Directory, worker.User, worker.PrefixedName()),
290297
output)
291298
}

types/worker_task.go

+10-1
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,21 @@
11
package types
22

3+
import "fmt"
4+
35
type WorkerTasks = []*WorkerTask
46

57
type WorkerTask struct {
68
Id string `mapstructure:"id" validate:"required,excludesall=!@#$ "`
79
Command string `mapstructure:"command" validate:"required"`
10+
GroupName string
811
User string `mapstructure:"user" validate:"omitempty,required,alphanum"`
912
Directory string `mapstructure:"directory" validate:"omitempty,required,dirpath"`
1013
}
1114

12-
func PrepareWorkerTasks(tasks WorkerTasks, user, workingDir string) {
15+
func PrepareWorkerTasks(tasks WorkerTasks, groupName, user, workingDir string) {
1316
for _, task := range tasks {
17+
task.GroupName = groupName
18+
1419
if task.User == "" {
1520
task.User = user
1621
}
@@ -20,3 +25,7 @@ func PrepareWorkerTasks(tasks WorkerTasks, user, workingDir string) {
2025
}
2126
}
2227
}
28+
29+
func (w *WorkerTask) PrefixedName() string {
30+
return fmt.Sprintf("%s-%s", w.GroupName, w.Id)
31+
}

types/worker_task_test.go

+19-5
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ func TestPrepareWorkerTasks(t *testing.T) {
8888
tasks WorkerTasks
8989
user string
9090
workingDir string
91+
groupName string
9192
}
9293
tests := []struct {
9394
name string
@@ -99,6 +100,7 @@ func TestPrepareWorkerTasks(t *testing.T) {
99100
args: args{
100101
tasks: WorkerTasks{},
101102
user: "foo",
103+
groupName: "bar",
102104
workingDir: "/app/foo/",
103105
},
104106
want: WorkerTasks{},
@@ -107,22 +109,34 @@ func TestPrepareWorkerTasks(t *testing.T) {
107109
name: "SuccessMultipleTasks",
108110
args: args{
109111
tasks: WorkerTasks{
110-
&WorkerTask{Id: "test", Command: "cmd"},
111-
&WorkerTask{Id: "test2", Command: "cmd", User: "bar", Directory: "/app/bar/"},
112+
&WorkerTask{Id: "test", Command: "cmd", GroupName: "bar"},
113+
&WorkerTask{Id: "test2", Command: "cmd", GroupName: "bar", User: "bar", Directory: "/app/bar/"},
112114
},
113115
user: "foo",
116+
groupName: "bar",
114117
workingDir: "/app/foo/",
115118
},
116119
want: WorkerTasks{
117-
&WorkerTask{Id: "test", Command: "cmd", User: "foo", Directory: "/app/foo/"},
118-
&WorkerTask{Id: "test2", Command: "cmd", User: "bar", Directory: "/app/bar/"},
120+
&WorkerTask{Id: "test", Command: "cmd", GroupName: "bar", User: "foo", Directory: "/app/foo/"},
121+
&WorkerTask{Id: "test2", Command: "cmd", GroupName: "bar", User: "bar", Directory: "/app/bar/"},
119122
},
120123
},
121124
}
122125
for _, tt := range tests {
123126
t.Run(tt.name, func(t *testing.T) {
124-
PrepareWorkerTasks(tt.args.tasks, tt.args.user, tt.args.workingDir)
127+
PrepareWorkerTasks(tt.args.tasks, tt.args.groupName, tt.args.user, tt.args.workingDir)
125128
assert.Equal(t, tt.want, tt.args.tasks)
126129
})
127130
}
128131
}
132+
133+
func TestPrefixedName(t *testing.T) {
134+
prefix := "group"
135+
worker := WorkerTask{
136+
Id: "test",
137+
Command: "fake",
138+
GroupName: prefix,
139+
}
140+
141+
assert.Equal(t, worker.PrefixedName(), prefix+"-"+worker.Id)
142+
}

0 commit comments

Comments
 (0)