feat: hook manager
This commit is contained in:
@ -4,8 +4,12 @@ Command-line interface for scientific-surfing package.
|
||||
|
||||
import argparse
|
||||
import sys
|
||||
from scientific_surfing.storage import StorageManager
|
||||
from scientific_surfing.subscription_manager import SubscriptionManager
|
||||
|
||||
from scientific_surfing.corecfg_manager import CoreConfigManager
|
||||
from scientific_surfing.corecfg_manager import CoreConfigManager
|
||||
from scientific_surfing.core_manager import CoreManager
|
||||
from scientific_surfing.hook_manager import HookManager
|
||||
|
||||
def create_parser() -> argparse.ArgumentParser:
|
||||
"""Create the argument parser."""
|
||||
@ -85,6 +89,24 @@ def create_parser() -> argparse.ArgumentParser:
|
||||
update_parser.add_argument('--version', help='Specific version to download (e.g., v1.18.5). If not specified, downloads latest')
|
||||
update_parser.add_argument('--force', action='store_true', help='Force update even if binary already exists')
|
||||
|
||||
# Hook commands
|
||||
hook_parser = subparsers.add_parser('hook', help='Manage hook scripts')
|
||||
hook_subparsers = hook_parser.add_subparsers(dest='hook_command', help='Hook operations')
|
||||
|
||||
# Init hooks command
|
||||
init_parser = hook_subparsers.add_parser('init', help='Initialize hooks directory with template scripts')
|
||||
|
||||
# Show hooks command
|
||||
list_hooks_parser = hook_subparsers.add_parser('list', help='Show hooks directory location and list scripts')
|
||||
|
||||
# Edit hook command
|
||||
edit_hook_parser = hook_subparsers.add_parser('edit', help='Edit a hook script')
|
||||
edit_hook_parser.add_argument('script', help='Name of the script to edit')
|
||||
|
||||
# Remove hook command
|
||||
rm_hook_parser = hook_subparsers.add_parser('rm', help='Remove a hook script')
|
||||
rm_hook_parser.add_argument('script', help='Name of the script to remove')
|
||||
|
||||
return parser
|
||||
|
||||
|
||||
@ -97,27 +119,33 @@ def main() -> None:
|
||||
parser.print_help()
|
||||
return
|
||||
|
||||
storage = StorageManager()
|
||||
subscription_manager = SubscriptionManager(storage)
|
||||
core_config_manager = CoreConfigManager(subscription_manager)
|
||||
core_manager = CoreManager(core_config_manager)
|
||||
hook_manager = HookManager(storage)
|
||||
|
||||
try:
|
||||
if args.command == 'subscription':
|
||||
if not hasattr(args, 'subcommand') or not args.subcommand:
|
||||
parser.parse_args(['subscription', '--help'])
|
||||
return
|
||||
|
||||
manager = SubscriptionManager()
|
||||
|
||||
if args.subcommand == 'add':
|
||||
manager.add_subscription(args.name, args.url)
|
||||
subscription_manager.add_subscription(args.name, args.url)
|
||||
elif args.subcommand == 'refresh':
|
||||
manager.refresh_subscription(args.name)
|
||||
subscription_manager.refresh_subscription(args.name)
|
||||
elif args.subcommand == 'rm':
|
||||
manager.delete_subscription(args.name)
|
||||
subscription_manager.delete_subscription(args.name)
|
||||
elif args.subcommand == 'rename':
|
||||
manager.rename_subscription(args.name, args.new_name)
|
||||
subscription_manager.rename_subscription(args.name, args.new_name)
|
||||
elif args.subcommand == 'activate':
|
||||
manager.activate_subscription(args.name)
|
||||
subscription_manager.activate_subscription(args.name)
|
||||
elif args.subcommand == 'list':
|
||||
manager.list_subscriptions()
|
||||
subscription_manager.list_subscriptions()
|
||||
elif args.subcommand == 'storage':
|
||||
manager.show_storage_info()
|
||||
subscription_manager.show_storage_info()
|
||||
else:
|
||||
parser.parse_args(['subscription', '--help'])
|
||||
|
||||
@ -126,10 +154,6 @@ def main() -> None:
|
||||
parser.parse_args(['core-config', '--help'])
|
||||
return
|
||||
|
||||
from scientific_surfing.corecfg_manager import CoreConfigManager
|
||||
from scientific_surfing.core_manager import CoreManager
|
||||
core_config_manager = CoreConfigManager()
|
||||
core_manager = CoreManager(core_config_manager)
|
||||
|
||||
if args.core_config_command == 'import':
|
||||
core_config_manager.import_config(args.source)
|
||||
@ -143,8 +167,6 @@ def main() -> None:
|
||||
core_config_manager.show_config()
|
||||
elif args.core_config_command == 'apply':
|
||||
core_config_manager.apply()
|
||||
elif args.core_config_command == 'upgrade':
|
||||
core_manager.update(version=args.version, force=args.force)
|
||||
else:
|
||||
parser.parse_args(['core-config', '--help'])
|
||||
|
||||
@ -153,16 +175,29 @@ def main() -> None:
|
||||
parser.parse_args(['core', '--help'])
|
||||
return
|
||||
|
||||
from scientific_surfing.corecfg_manager import CoreConfigManager
|
||||
from scientific_surfing.core_manager import CoreManager
|
||||
core_config_manager = CoreConfigManager()
|
||||
core_manager = CoreManager(core_config_manager)
|
||||
|
||||
if args.core_command == 'update':
|
||||
core_manager.update(version=args.version, force=args.force)
|
||||
else:
|
||||
parser.parse_args(['core', '--help'])
|
||||
|
||||
elif args.command == 'hook':
|
||||
if not hasattr(args, 'hook_command') or not args.hook_command:
|
||||
parser.parse_args(['hook', '--help'])
|
||||
return
|
||||
|
||||
|
||||
if args.hook_command == 'init':
|
||||
hook_manager.init()
|
||||
elif args.hook_command == 'list':
|
||||
hook_manager.list()
|
||||
elif args.hook_command == 'edit':
|
||||
hook_manager.edit(args.script)
|
||||
elif args.hook_command == 'rm':
|
||||
hook_manager.rm(args.script)
|
||||
else:
|
||||
parser.parse_args(['hook', '--help'])
|
||||
|
||||
else:
|
||||
parser.print_help()
|
||||
except KeyboardInterrupt:
|
||||
@ -170,6 +205,7 @@ def main() -> None:
|
||||
sys.exit(1)
|
||||
except Exception as e:
|
||||
print(f"❌ Error: {e}")
|
||||
raise
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user