Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
csst-cicd
csst-dag
Commits
5ac7c56e
Commit
5ac7c56e
authored
Sep 11, 2025
by
BO ZHANG
🏀
Browse files
update command: csst env
parent
ba6fa257
Changes
2
Hide whitespace changes
Inline
Side-by-side
app/csst
View file @
5ac7c56e
...
...
@@ -2,11 +2,12 @@
# 定义 Python CLI 的完整路径
# 如果当前文件夹下存在csst.py文件,就使用当前文件夹下的csst.py文件
if
[[
-f
"csst.py"
]]
;
then
PYTHON_CLI
=
"./csst.py"
source
.csst/.env
else
PYTHON_CLI
=
"/pipeline/app/csst.py"
source
/pipeline/app/.csst/.env
fi
# 检查 Python CLI 文件是否存在
...
...
@@ -15,5 +16,8 @@ if [[ ! -f "$PYTHON_CLI" ]]; then
exit
1
fi
# 打印环境变量
printenv
|
grep
CSST
# 将所有参数传递给 Python CLI
python
"
$PYTHON_CLI
"
"
$@
"
app/csst.py
View file @
5ac7c56e
import
click
import
requests
# For API calls
from
typing
import
Optional
import
os
import
glob
import
shutil
# to test locally:
# export PATH=${PWD}:$PATH
# locate dot csst
EXE_PATH
=
os
.
path
.
abspath
(
__file__
)
APP_DIR
=
os
.
path
.
dirname
(
EXE_PATH
)
DOT_CSST
=
os
.
path
.
join
(
APP_DIR
,
".csst"
)
assert
os
.
path
.
exists
(
DOT_CSST
),
f
"`
{
DOT_CSST
}
` does not exist!"
# Create main command group 'csst'
...
...
@@ -10,6 +21,106 @@ def csst():
pass
@
csst
.
group
()
def
env
():
"""Environment file / variables"""
pass
@
env
.
command
()
def
list
():
"""List all available environment configurations"""
# 使用 glob 查找所有 .env 文件
env_file_pattern
=
os
.
path
.
join
(
APP_DIR
,
"envs/*.env"
)
env_files
=
glob
.
glob
(
env_file_pattern
)
if
not
env_files
:
click
.
echo
(
f
"No predefined env files found with pattern:
{
env_file_pattern
}
"
,
err
=
True
,
)
return
click
.
echo
(
"Available predefined env files:"
)
for
file_path
in
env_files
:
# 从文件路径中提取配置名称(去掉目录和扩展名)
config_name
=
os
.
path
.
splitext
(
os
.
path
.
basename
(
file_path
))[
0
]
click
.
echo
(
f
" -
{
config_name
}
"
)
@
env
.
command
()
@
click
.
option
(
"--name"
,
"-n"
,
help
=
"Use a predefined env file (e.g., csu, production, development)"
,
required
=
True
,
)
def
show
(
name
):
"""Show environment variables using a predefined env file"""
if
not
name
:
# 如果没有提供 --name 参数,执行默认的初始化操作
click
.
echo
(
"Performing default env file initialization..."
)
# 这里可以添加你的默认初始化逻辑
click
.
echo
(
"Use --name option to load a specific env file or use 'env list' to see available options."
)
return
# 使用 glob 获取所有可用的环境文件
env_files
=
glob
.
glob
(
"./envs/*.env"
)
available_configs
=
[
os
.
path
.
splitext
(
os
.
path
.
basename
(
f
))[
0
]
for
f
in
env_files
]
# 检查请求的配置是否存在
if
name
not
in
available_configs
:
click
.
echo
(
f
"Error: Predefined env file '
{
name
}
' does not exist."
,
err
=
True
,
)
click
.
echo
(
"Available env files:"
)
for
config
in
available_configs
:
click
.
echo
(
f
" -
{
config
}
"
)
return
# 构建完整的文件路径
env_file_path
=
os
.
path
.
join
(
"./envs"
,
f
"
{
name
}
.env"
)
# 读取并打印文件内容
try
:
with
open
(
env_file_path
,
"r"
)
as
file
:
content
=
file
.
read
()
click
.
echo
(
content
)
except
IOError
as
e
:
click
.
echo
(
f
"Error reading file:
{
e
}
"
,
err
=
True
)
@
env
.
command
()
@
click
.
option
(
"--name"
,
"-n"
,
help
=
"Use a predefined env file (e.g., csu, zjlab, naoc)"
,
required
=
True
,
type
=
click
.
Choice
([
"csu"
,
"zjlab"
,
"naoc"
]),
)
def
set
(
name
):
"""Set environment variables using a predefined env file"""
if
not
name
:
# 如果没有提供 --name 参数,执行默认的初始化操作
click
.
echo
(
"Performing default env file initialization..."
)
# 这里可以添加你的默认初始化逻辑
click
.
echo
(
"Use --name option to load a specific env file or use 'env list' to see available options."
)
return
# 构建完整的文件路径
source_env_file_path
=
os
.
path
.
join
(
APP_DIR
,
f
"envs/
{
name
}
.env"
)
target_env_file_path
=
os
.
path
.
join
(
DOT_CSST
,
f
".env"
)
shutil
.
copy
(
source_env_file_path
,
target_env_file_path
)
click
.
echo
(
f
"Environment file
{
name
}
set successfully."
)
return
# Create 'dag' subcommand group for DAG task management
@
csst
.
group
()
def
dag
():
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment