2 Star 2 Fork 0

czy21/script

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
run.py 2.12 KB
一键复制 编辑 原始数据 按行查看 历史
czy21 提交于 2022-10-22 10:53 . #
#!/usr/bin/env python3
import argparse
import importlib
import importlib.machinery
import importlib.util
import logging
import os
import pathlib
import sys
import yaml
from utility import log as log_util, file as file_util
sys.path.append(pathlib.Path(__file__).parent.parent.as_posix())
logger = logging.getLogger()
def execute():
parser = argparse.ArgumentParser()
parser.add_argument('--param', nargs="+", default=[])
parser.add_argument('--init', action="store_true")
parser.add_argument('--debug', action="store_true")
parser.add_argument('--env', required=True)
parser.add_argument('--log-file')
parser.add_argument('--cmd')
args = parser.parse_args()
param_iter = iter(args.param)
param_input: dict = dict(zip(param_iter, param_iter))
os.environ.__setattr__("run_args", args)
env_path = pathlib.Path(args.env).resolve()
env_stem = env_path.parent.stem
log_file = os.environ.run_args.log_file
log_util.init_logger(file=env_path.parent.joinpath(log_file).resolve() if log_file is not None else None)
# empty source log
default_path_module = importlib.import_module("domain.default.path")
# injected param to global
env_pwd_mod = importlib.import_module("".join(["shell.", env_stem, "._env"]))
env_common_mod = env_pwd_mod.env_common
default_common_mod = importlib.import_module("domain.default.common")
env_output_yaml = pathlib.Path(getattr(default_path_module, "output")).joinpath("env.yaml")
if args.init:
env_common_mod.__dict__.update(dict({k: v for k, v in env_pwd_mod.__dict__.items() if k.startswith("param")}).items(), **param_input)
default_common_mod.__dict__.update(dict({k: v for k, v in env_common_mod.__dict__.items() if k.startswith("param")}))
default_common_param = dict({k: v for k, v in default_common_mod.__dict__.items() if k.startswith("param")})
file_util.write_text(env_output_yaml, yaml.dump(default_common_param))
else:
default_common_mod.__dict__.update(yaml.full_load(file_util.read_text(env_output_yaml)))
if args.cmd:
exec(args.cmd)
if __name__ == '__main__':
execute()
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/czy21/script.git
git@gitee.com:czy21/script.git
czy21
script
script
master

搜索帮助