150 lines
4.1 KiB
Python
150 lines
4.1 KiB
Python
"""
|
||
autoTAPD 主程序
|
||
Debug阶段自动开单工具 - 第一阶段1.1版本
|
||
"""
|
||
|
||
import sys
|
||
import argparse
|
||
from pathlib import Path
|
||
|
||
# 添加项目根目录到Python路径
|
||
project_root = Path(__file__).parent.parent
|
||
sys.path.insert(0, str(project_root))
|
||
|
||
from src.config import ConfigManager
|
||
|
||
|
||
def parse_arguments():
|
||
"""
|
||
解析命令行参数
|
||
|
||
Returns:
|
||
argparse.Namespace: 解析后的参数对象
|
||
"""
|
||
parser = argparse.ArgumentParser(
|
||
description='autoTAPD - Debug阶段自动开单工具',
|
||
formatter_class=argparse.RawDescriptionHelpFormatter,
|
||
epilog="""
|
||
示例用法:
|
||
python main.py --access-token YOUR_ACCESS_TOKEN
|
||
python main.py -t YOUR_ACCESS_TOKEN --config /path/to/config.ini
|
||
"""
|
||
)
|
||
|
||
# 必需参数
|
||
parser.add_argument(
|
||
'-t', '--access-token',
|
||
required=True,
|
||
help='企业微信access_token(必填)'
|
||
)
|
||
|
||
# 可选参数
|
||
parser.add_argument(
|
||
'-c', '--config',
|
||
default=None,
|
||
help='配置文件路径(默认: config/config.ini)'
|
||
)
|
||
|
||
parser.add_argument(
|
||
'-v', '--verbose',
|
||
action='store_true',
|
||
help='显示详细输出信息'
|
||
)
|
||
|
||
return parser.parse_args()
|
||
|
||
|
||
def validate_access_token(access_token):
|
||
"""
|
||
验证access_token是否有效
|
||
|
||
Args:
|
||
access_token: 待验证的token
|
||
|
||
Raises:
|
||
ValueError: token无效时抛出
|
||
"""
|
||
if not access_token or not access_token.strip():
|
||
raise ValueError("access_token不能为空")
|
||
|
||
# 基本格式检查(企业微信的access_token通常较长)
|
||
if len(access_token.strip()) < 20:
|
||
raise ValueError("access_token格式可能不正确(长度过短)")
|
||
|
||
|
||
def main():
|
||
"""主函数"""
|
||
print("=" * 60)
|
||
print("autoTAPD - Debug阶段自动开单工具")
|
||
print("版本: 0.1.0 (第一阶段1.1)")
|
||
print("=" * 60)
|
||
print()
|
||
|
||
try:
|
||
# 1. 解析命令行参数
|
||
print("[1/3] 解析命令行参数...")
|
||
args = parse_arguments()
|
||
|
||
if args.verbose:
|
||
print(f" - access_token: {args.access_token[:10]}...(已隐藏)")
|
||
print(f" - config: {args.config or '使用默认路径'}")
|
||
print(f" - verbose: {args.verbose}")
|
||
|
||
# 2. 验证access_token
|
||
print("[2/3] 验证access_token...")
|
||
validate_access_token(args.access_token)
|
||
print(" ✓ access_token格式验证通过")
|
||
|
||
# 3. 加载配置文件
|
||
print("[3/3] 加载配置文件...")
|
||
config_manager = ConfigManager(config_path=args.config)
|
||
|
||
# 获取并显示配置信息
|
||
all_config = config_manager.get_all_config()
|
||
print(" ✓ 配置文件加载成功")
|
||
print()
|
||
|
||
# 显示配置摘要
|
||
print("=" * 60)
|
||
print("配置摘要:")
|
||
print("-" * 60)
|
||
print(f"TAPD workspace_id: {all_config['tapd']['workspace_id']}")
|
||
print(f"SmartSheet docid: {all_config['smartsheet']['docid'][:20]}...")
|
||
print(f"Access Token: {args.access_token[:10]}...(已隐藏)")
|
||
print("=" * 60)
|
||
print()
|
||
|
||
print("✓ 所有初始化步骤完成!")
|
||
print()
|
||
print("提示: 第一阶段1.1已完成,后续将实现智能表格数据读取功能。")
|
||
|
||
return 0
|
||
|
||
except FileNotFoundError as e:
|
||
print(f"\n✗ 错误: {e}")
|
||
print("\n解决方案:")
|
||
print(" 1. 检查配置文件是否存在")
|
||
print(" 2. 使用 --config 参数指定正确的配置文件路径")
|
||
return 1
|
||
|
||
except ValueError as e:
|
||
print(f"\n✗ 错误: {e}")
|
||
print("\n解决方案:")
|
||
print(" 1. 检查配置文件中的配置项是否完整")
|
||
print(" 2. 确保所有必填项都已填写")
|
||
print(" 3. 检查access_token是否正确")
|
||
return 1
|
||
|
||
except Exception as e:
|
||
print(f"\n✗ 未预期的错误: {e}")
|
||
print(f"错误类型: {type(e).__name__}")
|
||
if args.verbose:
|
||
import traceback
|
||
print("\n详细错误信息:")
|
||
traceback.print_exc()
|
||
return 1
|
||
|
||
|
||
if __name__ == "__main__":
|
||
sys.exit(main())
|