diff --git a/start.py b/start.py new file mode 100644 index 00000000..a8c76fee --- /dev/null +++ b/start.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python3 + +import subprocess +import sys + +def check_docker_compose_up(): + result = subprocess.run( + ["docker", "compose", "ps", "-q"], + capture_output=True, + text=True + ) + return len(result.stdout.strip()) > 0 + +def main(): + force = False + if "--help" in sys.argv: + print("Usage: ./script.py [OPTION]") + print("Manage docker-compose services interactively") + print("\nOptions:") + print(" -f\tForce start containers without confirmation") + print(" --help\tShow this help message") + return + if "-f" in sys.argv: + force = True + print("Force awakened. Skipping confirmation.") + + is_up = check_docker_compose_up() + + if is_up: + action = "stop" + msg = "🛑 Stop containers? [y/N] " # No default + else: + action = "start" + msg = "⚡ Start containers? [Y/n] " # Yes default + + if not force: + response = input(msg).strip().lower() + if action == "stop": + # Only proceed if user explicitly types 'y' + if response != "y": + print("Aborting.") + return + else: + # Proceed unless user types 'n' + if response == "n": + print("Aborting.") + return + + if action == "stop": + subprocess.run(["docker", "compose", "down"]) + else: + subprocess.run(["docker", "compose", "up", "-d"]) + +if __name__ == "__main__": + main()