forked from jenkins-x/jx
-
Notifications
You must be signed in to change notification settings - Fork 0
/
delete_post_preview_job.go
90 lines (77 loc) · 2.21 KB
/
delete_post_preview_job.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package cmd
import (
"io"
"github.com/jenkins-x/jx/pkg/apis/jenkins.io/v1"
"github.com/jenkins-x/jx/pkg/log"
"github.com/spf13/cobra"
"github.com/jenkins-x/jx/pkg/jx/cmd/templates"
"github.com/jenkins-x/jx/pkg/util"
)
var (
deletePostPreviewJobLong = templates.LongDesc(`
Delete a job which is triggered after a Preview is created
`)
deletePostPreviewJobExample = templates.Examples(`
# Delete a post preview job
jx delete post preview job --name owasp
`)
)
// DeletePostPreviewJobOptions the options for the create spring command
type DeletePostPreviewJobOptions struct {
DeleteOptions
Name string
}
// NewCmdDeletePostPreviewJob creates a command object for the "create" command
func NewCmdDeletePostPreviewJob(f Factory, out io.Writer, errOut io.Writer) *cobra.Command {
options := &DeletePostPreviewJobOptions{
DeleteOptions: DeleteOptions{
CommonOptions: CommonOptions{
Factory: f,
Out: out,
Err: errOut,
},
},
}
cmd := &cobra.Command{
Use: "post preview job",
Short: "Create a job which is triggered after a Preview is created",
Aliases: branchPatternsAliases,
Long: deletePostPreviewJobLong,
Example: deletePostPreviewJobExample,
Run: func(cmd *cobra.Command, args []string) {
options.Cmd = cmd
options.Args = args
err := options.Run()
CheckErr(err)
},
}
options.addCommonFlags(cmd)
cmd.Flags().StringVarP(&options.Name, optionName, "n", "", "The name of the job to be deleted")
return cmd
}
// Run implements the command
func (o *DeletePostPreviewJobOptions) Run() error {
name := o.Name
if name == "" {
// TODO if not batch mode then lets let the user pick?
return util.MissingOption(optionName)
}
callback := func(env *v1.Environment) error {
settings := &env.Spec.TeamSettings
idx := -1
for i, job := range settings.PostPreviewJobs {
if job.Name == name {
idx = i
break
}
}
if idx >= 0 {
settings.PostPreviewJobs = append(settings.PostPreviewJobs[0:idx], settings.PostPreviewJobs[idx+1:]...)
log.Infof("Deleting the post Preview Job: %s\n", util.ColorInfo(name))
} else {
log.Warnf("post Preview Job: %s does not exist in this team\n", name)
}
return nil
}
return o.ModifyDevEnvironment(callback)
}