Commit 5ac7c56e authored by BO ZHANG's avatar BO ZHANG 🏀
Browse files

update command: csst env

parent ba6fa257
...@@ -2,11 +2,12 @@ ...@@ -2,11 +2,12 @@
# 定义 Python CLI 的完整路径 # 定义 Python CLI 的完整路径
# 如果当前文件夹下存在csst.py文件,就使用当前文件夹下的csst.py文件 # 如果当前文件夹下存在csst.py文件,就使用当前文件夹下的csst.py文件
if [[ -f "csst.py" ]]; then if [[ -f "csst.py" ]]; then
PYTHON_CLI="./csst.py" PYTHON_CLI="./csst.py"
source .csst/.env
else else
PYTHON_CLI="/pipeline/app/csst.py" PYTHON_CLI="/pipeline/app/csst.py"
source /pipeline/app/.csst/.env
fi fi
# 检查 Python CLI 文件是否存在 # 检查 Python CLI 文件是否存在
...@@ -15,5 +16,8 @@ if [[ ! -f "$PYTHON_CLI" ]]; then ...@@ -15,5 +16,8 @@ if [[ ! -f "$PYTHON_CLI" ]]; then
exit 1 exit 1
fi fi
# 打印环境变量
printenv | grep CSST
# 将所有参数传递给 Python CLI # 将所有参数传递给 Python CLI
python "$PYTHON_CLI" "$@" python "$PYTHON_CLI" "$@"
import click import click
import requests # For API calls
from typing import Optional 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' # Create main command group 'csst'
...@@ -10,6 +21,106 @@ def csst(): ...@@ -10,6 +21,106 @@ def csst():
pass 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 # Create 'dag' subcommand group for DAG task management
@csst.group() @csst.group()
def dag(): def dag():
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment