#!/usr/bin/env python3 import argparse import json import os def load_prompts(filename): try: with open(filename, 'r') as f: return json.load(f) except FileNotFoundError: return {} except json.JSONDecodeError as e: print(f"\033[91mError: Failed to load prompts file: {e}\033[0m") return {} def save_prompts(prompts, filename): try: with open(filename, 'w') as f: json.dump(prompts, f, indent=4) except Exception as e: print(f"\033[91mError: Failed to save prompts file: {e}\033[0m") def add_prompt(prompts, name, prompt): if name in prompts: print(f"\033[93mWarning: Prompt '{name}' already exists. Overwriting...\033[0m") prompts[name] = prompt print(f"\033[92mPrompt '{name}' added successfully.\033[0m") def delete_prompt(prompts, name): if name not in prompts: print(f"\033[91mError: Prompt '{name}' not found.\033[0m") return del prompts[name] print(f"\033[92mPrompt '{name}' deleted successfully.\033[0m") def list_prompts(prompts): if not prompts: print("\033[93mNo prompts available.\033[0m") return print("\033[94mAvailable Prompts:\033[0m") for name, prompt in prompts.items(): print(f" {name}: {prompt}") def run_prompt(prompts, name): if name not in prompts: print(f"\033[91mError: Prompt '{name}' not found.\033[0m") return prompt = prompts[name] print(f"\033[94mRunning prompt '{name}':\033[0m") os.system(prompt) def main(): parser = argparse.ArgumentParser(description='PromptPal: A terminal-based prompt template manager') subparsers = parser.add_subparsers(dest='command') add_parser = subparsers.add_parser('add', help='Add a new prompt') add_parser.add_argument('name', help='Name of the prompt') add_parser.add_argument('prompt', help='The prompt command') delete_parser = subparsers.add_parser('delete', help='Delete a prompt') delete_parser.add_argument('name', help='Name of the prompt') list_parser = subparsers.add_parser('list', help='List available prompts') run_parser = subparsers.add_parser('run', help='Run a prompt') run_parser.add_argument('name', help='Name of the prompt') parser.add_argument('-f', '--filename', default='prompts.json', help='Prompts file (default: prompts.json)') args = parser.parse_args() filename = args.filename prompts = load_prompts(filename) if args.command == 'add': add_prompt(prompts, args.name, args.prompt) save_prompts(prompts, filename) elif args.command == 'delete': delete_prompt(prompts, args.name) save_prompts(prompts, filename) elif args.command == 'list': list_prompts(prompts) elif args.command == 'run': run_prompt(prompts, args.name) else: parser.print_help() if __name__ == '__main__': main()