feat: add CLI and generator scripts to orchestrate project setup

This commit is contained in:
sankalp committed 2025-10-28 22:58:37 +05:45
1 parent 172cfd2a22
commit 15929d9ca5
2 files changed
+194

No files matched your search

+83
View File
@@ -0,0 +1,83 @@
"""
Main script entry point for djinit.
Handles user input validation and orchestrates the setup process.
"""
import os
import subprocess
import sys
from src.cli import Cli
from src.scripts.command_handler import handle_app_command, handle_secret_command, parse_arguments
from src.scripts.console_ui import UIFormatter, console
from src.scripts.input_handler import confirm_setup, get_user_input
def clear_screen() -> None:
try:
if os.name == "nt":
subprocess.run("cls", shell=True, check=True) # Windows
else:
subprocess.run("clear", shell=True, check=True) # Linux/MacOS
except subprocess.CalledProcessError:
# If clearing fails, just print some newlines
console.print("\n" * 50)
def main() -> None:
try:
# Parse command line arguments
args = parse_arguments()
# Handle secret command
if args.command == "secret":
handle_secret_command(args)
return
# Handle app command
if args.command == "app":
handle_app_command(args)
return
# Default to setup command
# Clear screen
clear_screen()
# Display welcome screen
console.print()
console.print(UIFormatter.create_welcome_panel())
console.print()
# Get user input
project_dir, project_name, primary_app, app_names, metadata = get_user_input()
# Confirm setup
if not confirm_setup(project_dir, project_name, app_names, metadata):
UIFormatter.print_info("Setup cancelled by user.")
return
# Run setup
console.print()
UIFormatter.print_info("Starting Django project setup...")
console.print()
django_cli = Cli(project_dir, project_name, primary_app, app_names, metadata)
success = django_cli.run_setup()
# Display completion summary
UIFormatter.create_summary_panel(project_dir, project_name, app_names, True)
# Exit with appropriate code
sys.exit(0 if success else 1)
except KeyboardInterrupt:
UIFormatter.print_info("\nSetup cancelled by user.")
sys.exit(0)
except Exception as e:
UIFormatter.print_error(f"Unexpected error: {str(e)}")
console.print("[dim]Please check your environment and try again.[/dim]")
sys.exit(1)
if __name__ == "__main__":
main()