-
Notifications
You must be signed in to change notification settings - Fork 0
/
01_run_me_立即运行我_gitee_替换cloudstudio中pyenv.sh
executable file
·452 lines (341 loc) · 14.6 KB
/
01_run_me_立即运行我_gitee_替换cloudstudio中pyenv.sh
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
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
#! /bin/bash
# NOTE 相当于_真的要停止60秒_给操作人员看看_log
# pause_60_second(){
# if read -t 60 -p "暂停60秒,按回车继续运行: "
# then
# # echo "hello $REPLY,welcome to cheng du"
# printf "\n";
# else
# # echo "sorry, Output timeout, please execute the command again !"
# printf "\n时间已到,继续运行\n";
# fi
# }
# NOTE 相当于_不做调试
pause_60_second(){
echo "啥都不做"
return 0
}
# ==============================================================
# 在cloudstudio环境中_更新_vscode的_用户_settings_文件
# 主要是设置cloud studio为"永不休眠"
f16_cs_vs_settings_user_update(){
# cloud studio中用户设置文件
CS_VSCODE_SETTINGS_USER=/root/.local/share/code-server/data/User/settings.json
# -----------------------------------------------------------
# '嵌入文档涵盖了生成脚本的主体部分.
(
cat <<'EOF'
{
"cloudstudio.autosleep": "no",
"extensions.autoCheckUpdates": false,
"extensions.autoUpdate": false,
"update.mode": "none",
"update.showReleaseNotes": false,
"code-runner.runInTerminal": true
}
EOF
) > ${CS_VSCODE_SETTINGS_USER}
# 可能有用的设置_暂时被取消了
# "Codegeex.Survey": false,
# "CS.CodeAssistant.EnableExtension": false,
# "go.toolsManagement.autoUpdate": true,
}
f20_linux_git_setting() {
#在Linux操作系统环境下
# git status中文显示乱码解决:
# https://www.cnblogs.com/v5captain/p/14832597.html
#相当于在~/.gitconfig 文件中加入一行 file:/root/.gitconfig core.quotepath=false
# core.quotepath=false
git config --global user.email "自学自讲@网上自习室"
git config --global user.name "自学自讲"
git config --global core.quotepath false
git config --global --add safe.directory $(pwd)
# git config命令详解
# http://www.mybatis.cn/archives/2151.html
# git config --list --show-origin
# 来自廖雪峰的git教程
# https://www.liaoxuefeng.com/wiki/896043488029600/898732837407424
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
git config --global alias.count "rev-list --all --count"
# REVIEW 这里可能会有问题.立足解决,从本机上用tar.gz传输到cloud studio中直接解开.git用户信息的问题.
# 相信,git clone模式,不会需要这个语句.
git config --global --add safe.directory $(pwd)
}
# REVIEW 这个函数_是我自己加入的_安装一些函数
f23_install_some_software(){
if [[ -f $(which cloudstudio) ]]; then
apt update -y
DEBIAN_FRONTEND=noninteractive apt install -y \
iputils-ping \
make \
lsof net-tools \
psmisc \
file \
sqlite3 libsqlite3-dev
fi
return 0
}
# ==============================================================
# NOTE 把06_样例目录拷贝到/workspace/下面去
# NOTE 这个函数_在本git仓库的_设置_cloudstudio_工作空间中_没有被调用
# 保留一段时间_为了保持一致
l06_copy_06_example(){
export v06_OLDPWD=$(pwd)
if [[ ! -d /workspace/06_样例 ]]; then
if [[ -d ./06_样例 ]]; then
cp -r ./06_样例 /workspace/
fi
fi
cd ${v06_OLDPWD}
return 0
}
# NOTE 调用安装grasspy的脚本
l08_call_script_to_install_vscode_ext(){
export v08_OLDPWD=$(pwd)
if [[ -d /root/.pyenv/03_vscode_extension ]]; then
cd /root/.pyenv/03_vscode_extension
if [[ -f /root/.pyenv/03_vscode_extension/03_cloudstudio_install_vsix.sh ]]; then
# NOTE 执行安装脚本
./03_cloudstudio_install_vsix.sh
fi
fi
cd ${v08_OLDPWD}
return 0
}
# ==============================================================
# NOTE 下面是老版本p27的_这里不再调用了
l10_install_me(){
export v10_OLDPWD=$(pwd)
if [[ -f $(which cloudstudio) ]]; then
if [[ -d /root/.pyenv ]]; then
if [[ ! -d /root/.pyenv/03_vscode_extension ]]; then
# NOTE 此时,还是原始状态_可以进行替换
# 老的目录修改名称
echo "正在处置原始的/root/.pyenv目录,时间较长,请耐心等待一小会"
# NOTE 为了化简逻辑判断_不再区分SaaS版本的cloudstudio.net
# 还是社区版本的club.cloudstudio.net的工作空间
# 直接做出凶残的动作_把/root/.pyenv/目录直接地,彻底地,给删除了
# mv /root/.pyenv /root/38_wmold_pyenv_这里是原始版本的pyenv
rm -rf /root/.pyenv
echo "正在把新的pyenv版本拷贝到/root/.pyenv/目录下"
# 拷贝新的版本的pyenv到/root/.pyenv的位置
cp -r $(pwd) /root/.pyenv
# NOTE 把06_样例目录拷贝到/workspace/下面去
l06_copy_06_example
# NOTE 调用安装grasspy等vscode扩展的脚本
if [[ ! -f /root/.local/share/code-server/extensions/lock_08_安装_vscode_扩展_已经被执行过一次_锁文件_不需要再次执行_wmgitignore.txt ]]; then
# 到这里_没有发现特征_锁文件_也就是_没有安装过我们自己的vscode扩展
# 这个步骤_主要是cloudstudio社区版只有1G的存储空间
# 而在"复刻"工作空间的时候/root/.local/share/code-server/extensions/会占用很多的存储空间
# 只有删除
# 再安装我们自己的vscode扩展
rm -rf /root/.local/share/code-server/extensions/
mkdir -p /root/.local/share/code-server/extensions
# 删除完毕_开始安装我们自己版本的
l08_call_script_to_install_vscode_ext
mkdir -p /root/.local/share/code-server/extensions/
touch /root/.local/share/code-server/extensions/lock_08_安装_vscode_扩展_已经被执行过一次_锁文件_不需要再次执行_wmgitignore.txt
echo "新安装我们自己的vscode扩展组合_并且生成了_vscode_扩展_安装_锁文件"
pause_60_second
cloudstudio --list-extensions
pause_60_second
ls -lah /root/.local/share/code-server/extensions/
pause_60_second
else
echo "/root/.local/share/code-server/extensions/_目录下_已经是我们自己的vscode扩展组合_不需要再次安装了"
pause_60_second
fi
echo "已经把/root/.pyenv更新为新的草莽grasspy3.10.1的版本了"
echo "欢迎加入 草蟒极速 QQ 交流群:760167264 风里雨里,我们在那里等你 "
echo "编程语言开发社区网址: https://www.ploc.org.cn/ploc/ "
echo "我作为一名普通的"编程语言开放社区成员_与_grasspy.cn社区成员",以个人的身份,向吴烜xuan三声,凹语言群体,林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds)等致敬!"
else
echo "已经执行过/root/.pyenv的替换操作_不需要再次进行"
fi
else
echo "没有找到/root/.pyenv,无法进行后继操作"
fi
fi
cd ${v10_OLDPWD}
if [[ -f $(which cloudstudio) ]]; then
if [[ -d /workspace/06_样例 ]]; then
# 在cloudstudio.net中再打开一个窗口
cloudstudio -n /workspace/06_样例
fi
fi
return 0
}
# ==============================================================
# NOTE 针对club.cloudstudio.net社区版本
# NOTE 从github.com上获得git仓库建立工作空间以后
# NOTE 需要从gitee上获取新的pyenv环境
l30_git_clone_and_install_new_pyenv(){
export v10_OLDPWD=$(pwd)
# NOTE 判断是否_有必要_执行本函数
# 如果没有_必要_再次执行_就return_0
if [[ -f $(which cloudstudio) ]]; then
if [[ -f /workspace/lock_01_run_me_已经被执行过一次_锁文件_不需要再次执行_wmgitignore.txt ]]; then
# 标志性的锁文件已经存在了
if [[ -d /root/.pyenv/03_vscode_extension ]]; then
echo "没有必要再次执行_01_rum_me_的l30()函数"
return 0
fi
fi
fi
if [[ -f $(which cloudstudio) ]]; then
if [[ -d /root/.pyenv ]]; then
if [[ ! -d /root/.pyenv/03_vscode_extension ]]; then
# 如果发现_锁文件_把原有的那个文件删除
# 后面会重新创建的
[[ -f /workspace/lock_01_run_me_已经被执行过一次_锁文件_不需要再次执行_wmgitignore.txt ]] && rm /workspace/lock_01_run_me_已经被执行过一次_锁文件_不需要再次执行_wmgitignore.txt
# NOTE 此时,还是原始状态_可以进行替换
# 老的目录修改名称
echo "正在处置原始的/root/.pyenv目录,时间较长,请耐心等待一小会"
# NOTE 为了化简逻辑判断_不再区分SaaS版本的cloudstudio.net
# 还是社区版本的club.cloudstudio.net的工作空间
# 直接做出凶残的动作_把/root/.pyenv/目录直接地,彻底地,给删除了
# mv /root/.pyenv /root/38_wmold_pyenv_这里是原始版本的pyenv
[[ -d /root/.pyenv ]] && rm -rf /root/.pyenv
echo "正在把新的pyenv版本_git_clone_到/root/.pyenv/目录下"
# git_clone_新的版本的pyenv到/root/.pyenv的位置
git clone --depth=1 https://gitee.com/coding_net_cloud_studio/ploc_grasspy_pyenv.git /root/.pyenv
# NOTE 把06_样例目录拷贝到/workspace/下面去
# l06_copy_06_example
# NOTE 调用安装grasspy等vscode扩展的脚本
if [[ ! -f /root/.local/share/code-server/extensions/lock_08_安装_vscode_扩展_已经被执行过一次_锁文件_不需要再次执行_wmgitignore.txt ]]; then
# 到这里_没有发现特征_锁文件_也就是_没有安装过我们自己的vscode扩展
# 这个步骤_主要是cloudstudio社区版只有1G的存储空间
# 而在"复刻"工作空间的时候/root/.local/share/code-server/extensions/会占用很多的存储空间
# 只有删除
# 再安装我们自己的vscode扩展
rm -rf /root/.local/share/code-server/extensions/
mkdir -p /root/.local/share/code-server/extensions
# NOTE 必须手工建立一个如下的文件_才会正确的安装vscode的扩展
echo "[]" > /root/.local/share/code-server/extensions/extensions.json
ls -lah /root/.local/share/code-server/extensions/
pause_60_second
# 删除完毕_开始安装我们自己版本的
l08_call_script_to_install_vscode_ext
mkdir -p /root/.local/share/code-server/extensions/
touch /root/.local/share/code-server/extensions/lock_08_安装_vscode_扩展_已经被执行过一次_锁文件_不需要再次执行_wmgitignore.txt
echo "新安装我们自己的vscode扩展组合_并且生成了_vscode_扩展_安装_锁文件"
pause_60_second
cloudstudio --list-extensions
pause_60_second
ls -lah /root/.local/share/code-server/extensions/
pause_60_second
else
echo "/root/.local/share/code-server/extensions/_目录下_已经是我们自己的vscode扩展组合_不需要再次安装了"
pause_60_second
fi
echo "已经把/root/.pyenv更新为新的草莽grasspy3.10.1的版本了"
echo "欢迎加入 草蟒极速 QQ 交流群:760167264 风里雨里,我们在那里等你 "
echo "编程语言开发社区网址: https://www.ploc.org.cn/ploc/ "
echo "我作为一名普通的"编程语言开放社区成员_与_grasspy.cn社区成员",以个人的身份,向吴烜xuan三声,凹语言群体,林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds)等致敬!"
touch /workspace/lock_01_run_me_已经被执行过一次_锁文件_不需要再次执行_wmgitignore.txt
else
echo "已经执行过/root/.pyenv的替换操作_不需要再次进行"
fi
else
echo "没有找到/root/.pyenv,无法进行后继操作"
fi
fi
cd ${v10_OLDPWD}
# NOTE 如下的都不要再进行了
# if [[ -f $(which cloudstudio) ]]; then
# if [[ -d /workspace/06_样例 ]]; then
# # 在cloudstudio.net中再打开一个窗口
# cloudstudio -n /workspace/06_样例
# fi
# fi
return 0
}
# ==============================================================
# NOTE 通过git_subtree的形式把子git仓库加入进来_并新增一个cloudstudio的窗口
# NOTE 这个模式太复杂了_相互协调很麻烦_放弃了
l57_30_git_clong_c28_aig_meetup(){
if [[ ! -d /workspace/w22_c28_aig_meetup ]]; then
git subtree \
add \
-P w22_c28_aig_meetup \
https://gitee.com/coding_net_cloud_studio/w22_c28_aig_meetup.git \
wmstudy \
--squash
fi
if [[ ! -f /tmp/c06_新码农在家背单词_主窗口已经打开_不需要再次打开_锁.sh ]]; then
# 上述的特殊文件_不存在_就创建
# 该锁文件_防止_相互_循环拉起
touch /tmp/c06_新码农在家背单词_主窗口已经打开_不需要再次打开_锁.sh
fi
# git clone subtree完毕以后_新增一个cloudstudio窗口去展示_该子git仓库的信息
# if [[ -d /workspace/w22_c28_aig_meetup ]]; then
# cloudstudio -n /workspace/w22_c28_aig_meetup
# fi
return 0
}
# ==============================================================
# NOTE 由于通过git_clone_下载新的pyenv到/root/.pyenv位置以后
# /root/.pyenv/.git目录会占有148M的存储空间
# /root/.pyenv/06_样例_目录_会占用_53M_的存储空间
# 删除上述两个目录_释放一定的空间
# 大约释放200M左右的存储空间
l77_clean_root_pyenv_sub_directories(){
if [[ -d /root/.pyenv/06_样例 ]]; then
rm -rf /root/.pyenv/06_样例
fi
if [[ -d /root/.pyenv/.git ]]; then
rm -rf /root/.pyenv/.git
fi
return 0
}
# ==============================================================
# NOTE 定义main()函数的主体
f94_2828_30_main(){
# 无论何时都先尝试建立这样一个目录
mkdir -p /root/.pyenv
f16_cs_vs_settings_user_update
f20_linux_git_setting
f23_install_some_software
# NOTE 下面是老版本p27的_这里不再调用了
# l10_install_me
# 需要从gitee上获取新的pyenv环境
l30_git_clone_and_install_new_pyenv
# NOTE 通过git_subtree的形式把子git仓库加入进来_并新增一个cloudstudio的窗口
# NOTE 这个模式太复杂了_相互协调很麻烦_放弃了
# l57_30_git_clong_c28_aig_meetup
# NOTE 增加一个clean的函数_释放/root/.pyenv下更多的空间
l77_clean_root_pyenv_sub_directories
return 0
}
# ==============================================================
f96_3060_check_environment_and_run_main(){
if [[ -f $(which cloudstudio) ]]; then
# 已经位于cloudstudio.net的工作空间以内了
if [[ $(whoami) == "root" ]]; then
echo "$(whoami)"
if [[ -d /workspace ]]; then
# 这里可以执行本脚本
echo "可以执行后继的操作"
# 这里是main函数
f94_2828_30_main
fi
else
echo "不知道是_啥环境_不能运行本脚本"
# 不符合运行条件_退出本脚本的运行
exit 0
fi
fi
return 0
}
# ==============================================================
# NOTE main()是f94_2828_30_main()的便捷名称
main(){
f94_2828_30_main
return 0
}
# NOTE 调用main()函数
main
# ==============================================================
# 下面是_正式_的入口
# echo $*
# [ -z "$1" ] && eval f96_3060_check_environment_and_run_main || eval $1 $*