71 lines
2.3 KiB
Python
71 lines
2.3 KiB
Python
#!/usr/bin/env python3
|
|
|
|
import os
|
|
import sys
|
|
import subprocess
|
|
|
|
# It is assumed that the following scripts exist in the same directory:
|
|
# - manage_clients.py
|
|
# - track_time.py
|
|
# - create_invoice.py
|
|
# These modules will be run as separate processes.
|
|
|
|
def run_script_from_file(script_name):
|
|
"""
|
|
Runs a Python script as a subprocess.
|
|
|
|
Args:
|
|
script_name (str): The name of the Python file to run.
|
|
"""
|
|
# Check if the file exists
|
|
if not os.path.exists(script_name):
|
|
print(f"Error: The script '{script_name}' was not found.")
|
|
print("Please ensure all required script files are in the same directory.")
|
|
return
|
|
|
|
try:
|
|
# Run the script using subprocess.run
|
|
# This will execute the script's top-level code (including any code in
|
|
# its 'if __name__ == "__main__":' block).
|
|
print(f"\n--- Running {script_name} ---")
|
|
subprocess.run(['python3', script_name], check=True)
|
|
print(f"--- {script_name} completed ---")
|
|
except subprocess.CalledProcessError as e:
|
|
print(f"An error occurred while trying to run '{script_name}': {e}")
|
|
except Exception as e:
|
|
print(f"An unexpected error occurred: {e}")
|
|
|
|
def main_menu():
|
|
"""
|
|
Displays the main menu and handles user input to run different scripts.
|
|
"""
|
|
while True:
|
|
print("\n" + "="*40)
|
|
print(" TIME TRACKER MAIN MENU")
|
|
print("="*40)
|
|
print("1. Manage Clients")
|
|
print("2. Track Time")
|
|
print("3. Create Invoice")
|
|
print("4. Reports")
|
|
print("0. Exit") # Changed Exit option to 0
|
|
print("="*40)
|
|
|
|
choice = input("Enter your choice (1-3, or 0): ") # Updated prompt
|
|
|
|
if choice == '1':
|
|
run_script_from_file('manage_clients.py')
|
|
elif choice == '2':
|
|
run_script_from_file('track_time.py')
|
|
elif choice == '3':
|
|
run_script_from_file('create_invoice.py')
|
|
elif choice == '4':
|
|
run_script_from_file('reports.py')
|
|
elif choice == '0': # Updated logic for the new exit choice
|
|
print("Exiting the Time Tracker. Goodbye!")
|
|
break
|
|
else:
|
|
print("Invalid choice. Please enter a number between 1 and 3, or 0 to exit.")
|
|
|
|
if __name__ == "__main__":
|
|
main_menu()
|