Skip to content

Commit 04111f7

Browse files
--force flag added to mimic Tanzu scheduler plugin
1 parent ac3a149 commit 04111f7

File tree

8 files changed

+199
-4
lines changed

8 files changed

+199
-4
lines changed

commands/delete-call-schedule.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,12 @@ import (
1212
// cf delete-call-schedule CALL-NAME SCHEDULE-GUID
1313
func DeleteCallSchedule(services *core.Services, args []string) {
1414
var forceFlag bool
15+
var promptFlag bool
1516

1617
flags := pflag.NewFlagSet("delete-call-schedule", pflag.ExitOnError)
1718
flags.BoolVarP(&forceFlag, "force", "f", false, "Force call schedule deletion without confirmation")
19+
flags.BoolVarP(&promptFlag, "prompt", "p", false, "Allow call schedule deletion with confirmation")
20+
flags.MarkHidden("prompt")
1821
flags.Parse(args)
1922
args = flags.Args()
2023

@@ -38,6 +41,10 @@ func DeleteCallSchedule(services *core.Services, args []string) {
3841
return
3942
}
4043

44+
if promptFlag && !forceFlag && !services.UI.ConfirmDelete("call schedule", name + " " + scheduleGUID) {
45+
return;
46+
}
47+
4148
err = client.DeleteCallSchedule(services.Client, call, scheduleGUID)
4249
if err != nil {
4350
fmt.Println("Could not delete schedule", scheduleGUID)

commands/delete-call.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,12 @@ import (
1212
// cf delete-call CALL-NAME
1313
func DeleteCall(services *core.Services, args []string) {
1414
var forceFlag bool
15+
var promptFlag bool
1516

1617
flags := pflag.NewFlagSet("delete-call", pflag.ExitOnError)
1718
flags.BoolVarP(&forceFlag, "force", "f", false, "Force call deletion without confirmation")
19+
flags.BoolVarP(&promptFlag, "prompt", "p", false, "Allow call deletion with confirmation")
20+
flags.MarkHidden("prompt")
1821
flags.Parse(args)
1922
args = flags.Args()
2023

@@ -37,6 +40,10 @@ func DeleteCall(services *core.Services, args []string) {
3740
return
3841
}
3942

43+
if promptFlag && !forceFlag && !services.UI.ConfirmDeleteWithAssociations("call", name) {
44+
return;
45+
}
46+
4047
err = client.DeleteCall(services.Client, call)
4148
if err != nil {
4249
fmt.Println("Could not delete call: " + err.Error())

commands/delete-job-schedule.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,12 @@ import (
1212
// cf delete-job-schedule JOB-NAME SCHEDULE-GUID
1313
func DeleteJobSchedule(services *core.Services, args []string) {
1414
var forceFlag bool
15+
var promptFlag bool
1516

1617
flags := pflag.NewFlagSet("delete-job-schedule", pflag.ExitOnError)
1718
flags.BoolVarP(&forceFlag, "force", "f", false, "Force job schedule deletion without confirmation")
19+
flags.BoolVarP(&promptFlag, "prompt", "p", false, "Allow job schedule deletion with confirmation")
20+
flags.MarkHidden("prompt")
1821
flags.Parse(args)
1922

2023
args = flags.Args()
@@ -38,6 +41,10 @@ func DeleteJobSchedule(services *core.Services, args []string) {
3841
return
3942
}
4043

44+
if promptFlag && !forceFlag && !services.UI.ConfirmDelete("job schedule", name + " " + scheduleGUID) {
45+
return;
46+
}
47+
4148
err = client.DeleteJobSchedule(services.Client, job, scheduleGUID)
4249
if err != nil {
4350
fmt.Println("Could not delete schedule", scheduleGUID)

commands/delete-job.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,12 @@ import (
1212
// cf delete-job JOB-NAME
1313
func DeleteJob(services *core.Services, args []string) {
1414
var forceFlag bool
15+
var promptFlag bool
1516

1617
flags := pflag.NewFlagSet("delete-job", pflag.ExitOnError)
1718
flags.BoolVarP(&forceFlag, "force", "f", false, "Force job deletion without confirmation")
19+
flags.BoolVarP(&promptFlag, "prompt", "p", false, "Allow job deletion with confirmation")
20+
flags.MarkHidden("prompt")
1821
flags.Parse(args)
1922
args = flags.Args()
2023

@@ -37,6 +40,10 @@ func DeleteJob(services *core.Services, args []string) {
3740
return
3841
}
3942

43+
if promptFlag && !forceFlag && !services.UI.ConfirmDeleteWithAssociations("job", name) {
44+
return;
45+
}
46+
4047
err = client.DeleteJob(services.Client, job)
4148
if err != nil {
4249
fmt.Println("Could not delete job: " + err.Error())

core/services.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package core
22

33
import "code.cloudfoundry.org/cli/plugin"
4+
import "code.cloudfoundry.org/cli/cf/terminal"
45

56
type Services struct {
67
CLI plugin.CliConnection
78
Client *Driver
9+
UI terminal.UI
810
}

go.mod

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ go 1.22.0
55
toolchain go1.22.3
66

77
require (
8-
code.cloudfoundry.org/cli v7.1.0+incompatible
8+
code.cloudfoundry.org/cli v0.0.0-20240404012325-79ae2fb5db92
99
github.com/cloudfoundry-community/ocf-scheduler v1.0.0
1010
github.com/cloudfoundry/cf-acceptance-tests v1.9.1-0.20220405181007-a6e4d7ae3b33
1111
github.com/cloudfoundry/cf-test-helpers v1.0.1-0.20220329060630-a1956dba8c6c
@@ -17,21 +17,42 @@ require (
1717
)
1818

1919
require (
20+
code.cloudfoundry.org/bytefmt v0.0.0-20230612151507-41ef4d1f67a4 // indirect
21+
code.cloudfoundry.org/tlsconfig v0.0.0-20230612153104-23c0622de227 // indirect
22+
github.com/SermoDigital/jose v0.9.2-0.20161205224733-f6df55f235c2 // indirect
23+
github.com/blang/semver/v4 v4.0.0 // indirect
24+
github.com/bmatcuk/doublestar v1.3.4 // indirect
25+
github.com/charlievieth/fs v0.0.3 // indirect
26+
github.com/cloudfoundry/bosh-cli v6.4.1+incompatible // indirect
27+
github.com/cloudfoundry/bosh-utils v0.0.390 // indirect
28+
github.com/cppforlife/go-patch v0.1.0 // indirect
2029
github.com/ess/debuggable v1.0.0 // indirect
2130
github.com/ess/dry v1.0.0 // indirect
31+
github.com/fatih/color v1.16.0 // indirect
2232
github.com/fsnotify/fsnotify v1.7.0 // indirect
2333
github.com/go-logr/logr v1.4.1 // indirect
2434
github.com/go-task/slim-sprig/v3 v3.0.0 // indirect
2535
github.com/gogo/protobuf v1.3.2 // indirect
2636
github.com/google/go-cmp v0.6.0 // indirect
2737
github.com/google/pprof v0.0.0-20240509144519-723abb6459b7 // indirect
2838
github.com/google/uuid v1.6.0 // indirect
39+
github.com/jessevdk/go-flags v1.5.0 // indirect
40+
github.com/lunixbochs/vtclean v1.0.0 // indirect
41+
github.com/mattn/go-colorable v0.1.13 // indirect
42+
github.com/mattn/go-isatty v0.0.20 // indirect
43+
github.com/mattn/go-runewidth v0.0.15 // indirect
2944
github.com/nxadm/tail v1.4.11 // indirect
3045
github.com/onsi/ginkgo v1.16.5 // indirect
46+
github.com/rivo/uniseg v0.2.0 // indirect
47+
github.com/sirupsen/logrus v1.9.3 // indirect
48+
github.com/vito/go-interact v0.0.0-20171111012221-fa338ed9e9ec // indirect
49+
golang.org/x/crypto v0.23.0 // indirect
3150
golang.org/x/net v0.25.0 // indirect
3251
golang.org/x/sys v0.20.0 // indirect
52+
golang.org/x/term v0.20.0 // indirect
3353
golang.org/x/text v0.15.0 // indirect
3454
golang.org/x/tools v0.21.0 // indirect
55+
gopkg.in/cheggaaa/pb.v1 v1.0.28 // indirect
3556
gopkg.in/inf.v0 v0.9.1 // indirect
3657
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect
3758
gopkg.in/yaml.v2 v2.4.0 // indirect

0 commit comments

Comments
 (0)