/
optdestroy.go
136 lines (118 loc) 路 4.56 KB
/
optdestroy.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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
// Copyright 2016-2020, Pulumi Corporation.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// Package optdestroy contains functional options to be used with stack destroy operations
// github.com/sdk/v2/go/x/auto Stack.Destroy(...optdestroy.Option)
package optdestroy
import (
"io"
"github.com/pulumi/pulumi/sdk/v3/go/auto/debug"
"github.com/pulumi/pulumi/sdk/v3/go/auto/events"
)
// Parallel is the number of resource operations to run in parallel at once during the destroy
// (1 for no parallelism). Defaults to unbounded. (default 2147483647)
func Parallel(n int) Option {
return optionFunc(func(opts *Options) {
opts.Parallel = n
})
}
// Message (optional) to associate with the destroy operation
func Message(message string) Option {
return optionFunc(func(opts *Options) {
opts.Message = message
})
}
// Target specifies an exclusive list of resource URNs to destroy
func Target(urns []string) Option {
return optionFunc(func(opts *Options) {
opts.Target = urns
})
}
// TargetDependents allows updating of dependent targets discovered but not specified in the Target list
func TargetDependents() Option {
return optionFunc(func(opts *Options) {
opts.TargetDependents = true
})
}
// ProgressStreams allows specifying one or more io.Writers to redirect incremental destroy stdout
func ProgressStreams(writers ...io.Writer) Option {
return optionFunc(func(opts *Options) {
opts.ProgressStreams = writers
})
}
// ErrorProgressStreams allows specifying one or more io.Writers to redirect incremental destroy stderr
func ErrorProgressStreams(writers ...io.Writer) Option {
return optionFunc(func(opts *Options) {
opts.ErrorProgressStreams = writers
})
}
// EventStreams allows specifying one or more channels to receive the Pulumi event stream
func EventStreams(channels ...chan<- events.EngineEvent) Option {
return optionFunc(func(opts *Options) {
opts.EventStreams = channels
})
}
// DebugLogging provides options for verbose logging to standard error, and enabling plugin logs.
func DebugLogging(debugOpts debug.LoggingOptions) Option {
return optionFunc(func(opts *Options) {
opts.DebugLogOpts = debugOpts
})
}
// UserAgent specifies the agent responsible for the update, stored in backends as "environment.exec.agent"
func UserAgent(agent string) Option {
return optionFunc(func(opts *Options) {
opts.UserAgent = agent
})
}
// Show config secrets when they appear.
func ShowSecrets(show bool) Option {
return optionFunc(func(opts *Options) {
opts.ShowSecrets = &show
})
}
// Option is a parameter to be applied to a Stack.Destroy() operation
type Option interface {
ApplyOption(*Options)
}
// ---------------------------------- implementation details ----------------------------------
// Options is an implementation detail
type Options struct {
// Parallel is the number of resource operations to run in parallel at once
// (1 for no parallelism). Defaults to unbounded. (default 2147483647)
Parallel int
// Message (optional) to associate with the destroy operation
Message string
// Specify an exclusive list of resource URNs to update
Target []string
// Allows updating of dependent targets discovered but not specified in the Target list
TargetDependents bool
// ProgressStreams allows specifying one or more io.Writers to redirect incremental destroy stdout
ProgressStreams []io.Writer
// ProgressStreams allows specifying one or more io.Writers to redirect incremental destroy stderr
ErrorProgressStreams []io.Writer
// EventStreams allows specifying one or more channels to receive the Pulumi event stream
EventStreams []chan<- events.EngineEvent
// DebugLogOpts specifies additional settings for debug logging
DebugLogOpts debug.LoggingOptions
// UserAgent specifies the agent responsible for the update, stored in backends as "environment.exec.agent"
UserAgent string
// Colorize output. Choices are: always, never, raw, auto (default "auto")
Color string
// Show config secrets when they appear.
ShowSecrets *bool
}
type optionFunc func(*Options)
// ApplyOption is an implementation detail
func (o optionFunc) ApplyOption(opts *Options) {
o(opts)
}