Files
webscripts/main.py

70 lines
2.7 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="=====> Web Services Manager <=====")
subparsers = parser.add_subparsers(dest="command", required=True)
# 注册服务命令
register_parser = subparsers.add_parser("register", help="Register a new service")
register_parser.add_argument("tag", choices=["sys", "docker"], help="Tag of the service")
register_parser.add_argument("name", help="Name of the service")
register_parser.add_argument("--path", help="Config/Data path of the service where the 'docker-compose.yml' located (docker-based services only)")
# 列出服务命令
subparsers.add_parser("list", help="List all services")
# 执行操作命令
operate_parser = subparsers.add_parser("operate", help="Service operations to carry out")
operate_parser.add_argument("index", type=int, help="Index of the service, which is a integer")
# 移除服务命令
remove_parser = subparsers.add_parser("remove", help="Remove a service")
remove_parser.add_argument("index", type=int, help="Index of the service to remove")
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"Register a new service successfully: {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("Operation success!")
except IndexError:
print("Error: invalid index")
except Exception as e:
print(f"Operation failed: {str(e)}")
elif args.command == "remove":
try:
manager.remove_service(args.index)
print(f"Service at index {args.index} removed successfully")
except IndexError:
print("Error: invalid index")
except Exception as e:
print(f"Remove failed: {str(e)}")
if __name__ == "__main__":
main()