-
Notifications
You must be signed in to change notification settings - Fork 4
/
c0193.yml
243 lines (216 loc) · 5.35 KB
/
c0193.yml
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
doc_meta: |
folder: env-vars
title: virtualEnv cmd
head: |
This introduces a cmd virtualEnv to manage the shell execution enviornment, which you can source shell script/file, you can take a snapshot and save the current enviornment as a named venv, and you can also restore your shell environment from the saved venv
sections:
- title: Demo
log: yes
- title: Demo
content: |
params:
name: the venv name
action: snapshot | restore
source: the source content
srcfiles: a list of file to source
rules:
* source and srcfiles can not coexit but require at least one of them
* source and srcfiles are not required if you just want to save current shell session
* name and action can be both non exist or must both exist
tasks:
-
name: task
desc: |
please switch to use case1|case2 ...
the reason we do not chain all cases together is because
the venv will pollute the entire running session unless you mananage to restore it
task:
-
func: call
do: case3
-
name: case1
desc: |
task:
-
func: shell
desc: |
before sourcing, the env var: AAA does not exist
this will cause an error
do:
- env |grep AAA
flags:
- ignoreError
-
func: cmd
desc: |
case1: only source
source via the source content
do:
- name: virtualEnv
cmd:
source: |
echo "start of source"
export AAA=sourced_aaa
echo "end of source"
-
func: shell
desc: |
after sourcing, the env var: AAA exist
do:
- env |grep AAA
-
name: case2
desc: |
task:
-
func: shell
desc: |
before sourcing, the env var: AAA does not exist
this will cause an error
do:
- env |grep AAA
flags:
- ignoreError
-
func: cmd
desc: |
case2: only source
source via srcfile
do:
- name: virtualEnv
cmd:
srcfile: ./tests/functests/test_env.rc
-
func: shell
desc: |
after sourcing, the env var: AAA exist
do:
- env |grep AAA
-
name: case3
desc: |
task:
-
func: shell
desc: |
before sourcing, the env var: AAA does not exist
this will cause an error
do:
- env |grep AAA
flags:
- ignoreError
-
func: cmd
desc: |
no source/srcfile input
with name and action
now it will save current shell env
which has got no AAA in it
do:
- name: virtualEnv
cmd:
name: venv0
action: snapshot
-
func: shell
desc: |
since there is no source, this will still cause an error
do:
- env |grep AAA
flags:
- ignoreError
-
func: cmd
desc: |
now source and save current shell environment variables
do:
- name: virtualEnv
cmd:
name: venv1
action: snapshot
srcfile: ./tests/functests/test_env.rc
-
func: shell
desc: |
after sourcing, the env var: AAA exist
the error should be cleared
do:
- env |grep AAA
-
func: cmd
desc: |
now let's restore to the point of venv0
which has got no AAA in it
do:
- name: virtualEnv
cmd:
name: venv0
action: restore
-
func: shell
desc: |
this will still cause an error
as now the shell env is restored to venv0
which has got no AAA in it
do:
- env |grep AAA
flags:
- ignoreError
-
func: cmd
desc: |
now let's restore to the point of venv1
which has got AAA in it
we expect the error is clear
do:
- name: virtualEnv
cmd:
name: venv1
action: restore
-
func: shell
desc: |
after sourcing, the env var: AAA exist
the error should be cleared
do:
- env |grep AAA
-
name: case4
desc: |
task:
-
func: cmd
desc: |
source via the source content
do:
- name: virtualEnv
cmd:
source: |
echo "start of source"
export AAA=sourced_aaa
echo "end of source"
-
func: shell
desc: |
after sourcing, the env var: AAA exist
do:
- env |grep AAA
-
func: cmd
desc: |
if you use pure param
it will unset all env vars from the current execution context
do:
- name: virtualEnv
cmd:
action: pure
-
func: shell
desc: |
before sourcing, the env var: AAA does not exist
this will cause an error
do:
- env |grep AAA
flags:
- ignoreError