57 lines
2.0 KiB
Python
Executable File
57 lines
2.0 KiB
Python
Executable File
#!/usr/bin/env python3
|
||
|
||
import argparse
|
||
import json
|
||
import os
|
||
from src.manager import ServiceFactory, ServiceRepository, Manager
|
||
from src.services import DockerServiceStrategy, SystemServiceStrategy
|
||
|
||
def main():
|
||
parser = argparse.ArgumentParser(description="服务管理工具")
|
||
subparsers = parser.add_subparsers(dest="command", required=True)
|
||
|
||
# 注册服务命令
|
||
register_parser = subparsers.add_parser("register", help="注册新服务")
|
||
register_parser.add_argument("tag", choices=["sys", "docker"], help="服务类型")
|
||
register_parser.add_argument("name", help="服务名称")
|
||
register_parser.add_argument("--path", help="Docker服务路径(仅docker类型需要)")
|
||
|
||
# 列出服务命令
|
||
subparsers.add_parser("list", help="列出所有服务")
|
||
|
||
# 执行操作命令
|
||
operate_parser = subparsers.add_parser("operate", help="执行服务操作")
|
||
operate_parser.add_argument("index", type=int, help="服务索引")
|
||
|
||
args = parser.parse_args()
|
||
|
||
# 初始化仓库和管理器
|
||
# 确保 data 目录存在
|
||
os.makedirs("data", exist_ok=True)
|
||
repo = ServiceRepository("data/services.json")
|
||
manager = Manager(repo)
|
||
|
||
if args.command == "register":
|
||
# 创建服务
|
||
service = manager.register_service(args.tag, args.name, args.path)
|
||
print(f"服务注册成功: {service.name}")
|
||
|
||
elif args.command == "list":
|
||
# 列出所有服务
|
||
services = manager.list_services()
|
||
for i, service in enumerate(services):
|
||
print(f"{i}: [{service.tag}] {service.name} {f'(path: {service.path})' if service.path else ''}")
|
||
|
||
elif args.command == "operate":
|
||
# 执行服务操作
|
||
try:
|
||
manager.execute_service_operation(args.index)
|
||
print("操作执行成功")
|
||
except IndexError:
|
||
print("错误:无效的服务索引")
|
||
except Exception as e:
|
||
print(f"操作失败: {str(e)}")
|
||
|
||
if __name__ == "__main__":
|
||
main()
|