|
| 1 | +# devCMDcycle.py |
| 2 | +# Developer Command Cycle v3.01 |
| 3 | + |
| 4 | +**Author:** RetroGameGirl (atariage) |
| 5 | + |
| 6 | +**License:** [GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0.html) |
| 7 | + |
| 8 | +A toolchain-agnostic GUI orchestrator for streamlining any command-line development workflow. |
| 9 | + |
| 10 | +# What is devCMDcycle.py? |
| 11 | + |
| 12 | +devCMDcycle.py is a powerful front-end for managing software build environments. Originally designed for Atari 7800 retro development, it has evolved into a flexible tool that can be configured to handle any command-line-driven workflow. It provides a simple, clickable interface to manage complex build steps, eliminating the need to memorize and type repetitive commands. |
| 13 | +Whether you are developing for a retro console, compiling C++ code, or managing a web project, devCMDcycle.py acts as your central launchpad. |
| 14 | + |
| 15 | + |
| 16 | + |
| 17 | + |
| 18 | +## Key Features |
| 19 | + |
| 20 | +* **Project-Specific Configurations:** Automatically creates a `devCMDcycle_301.ini` file in your project directory, allowing you to maintain a unique setup for each project. |
| 21 | +* **Fully Configurable UI:** |
| 22 | + * Define multiple **Toolchains**, each with its own executable path and settings. |
| 23 | + * Create up to 10 **Custom Action Buttons** per toolchain with custom names, colors, and commands. |
| 24 | + * Set up toolchain-specific **Command-Line Options** with checkboxes for easy toggling. |
| 25 | +* **Powerful Command System:** |
| 26 | + * Use **placeholders** (e.g., `%f` for source file, `%t` for toolchain path) to create dynamic commands. |
| 27 | + * Chain multiple button actions into a single **Composite Command** (e.g., `Button3,Button4,Button6`). |
| 28 | + * Run commands in a separate terminal window using the `EXTERNAL:` prefix. |
| 29 | +* **Auto-Typer System:** |
| 30 | + * Create detailed **Auto-Typer Profiles** to automate interactions with interactive command-line tools (e.g., for creating ROM headers). |
| 31 | + * Supports multi-step sequences and dynamic user input via `%b<num>` placeholders. |
| 32 | +* **Safe and Self-Contained:** |
| 33 | + * Includes a built-in editor to safely modify the script's own factory default settings. |
| 34 | + * Automatically creates backups of your configuration (`.ini`) and the script itself when modified. |
| 35 | +* **Live Previews:** The UI provides real-time previews of the final commands as you toggle options, helping to prevent errors. |
| 36 | +* **Portable:** The application is a single Python script with no external dependencies beyond a standard Python 3 installation with Tkinter. |
| 37 | + |
| 38 | +## Getting Started |
| 39 | + |
| 40 | +Follow these steps to get your first project running: |
| 41 | + |
| 42 | +1. **Place the Script:** Put the `devCMDcycle.py` script in a directory that is part of your system's PATH for easy access. |
| 43 | +2. **Launch in Your Project Folder:** Assuming you have python installed and setup, open a terminal or command prompt, navigate to your project's main directory, and run the script: |
| 44 | + ```bash |
| 45 | + devCMDcycle.py |
| 46 | + ``` |
| 47 | + A `devCMDcycle_301.ini` file will be created in this directory. |
| 48 | +3. **Select Your Source File:** In the main window, click the `...` button next to "Source File" and choose your primary code file (e.g., `main.asm`, `game.c`). |
| 49 | +4. **Configure a Toolchain:** |
| 50 | + * Select a pre-configured toolchain (e.g., `7800ASMDevKit`) or add a new one in the settings. |
| 51 | + * In the "Executable Path" field, enter the command for your compiler/assembler (e.g., `dasm`, `cl65`). |
| 52 | + * Customize the 10 action buttons below with names and commands. |
| 53 | + * Click **Save & Close**. |
| 54 | +5. **Build Your Project:** Back on the main window, select your configured toolchain from the dropdown and click one of your custom action buttons (e.g., "Build"). The output from your tool will appear in the Status Window. |
| 55 | + |
| 56 | +## Configuration |
| 57 | + |
| 58 | +The application's state is managed through a single configuration file and dedicated backup directories. |
| 59 | +
|
| 60 | +* **`devCMDcycle_301.ini`:** This file stores all your settings for the project in the current directory. Every change made in the UI (settings, toolchains, options) is saved to this file in real-time. |
| 61 | +* **`ini_backup/`:** This folder is created in your project directory. It stores backups of your `.ini` file whenever you use the "Reset to Default Config" feature. |
| 62 | +* **`script_backup/`:** This folder is created in the same directory where `devCMDcycle.py` is located. It stores backups of the script itself whenever you use the integrated "Default Config Editor" to modify its internal defaults. |
| 63 | +
|
| 64 | +## Advanced Usage |
| 65 | +
|
| 66 | +### Command Placeholders |
| 67 | +
|
| 68 | +Use these placeholders in your button commands to dynamically insert paths. |
| 69 | +
|
| 70 | +| Placeholder | Description | |
| 71 | +| :---------- | :--------------------------------------------- | |
| 72 | +| `%f` | Full path to the Source File | |
| 73 | +| `%s` | Source file stem (path without extension) | |
| 74 | +| `%o` | Output file stem (defaults to the same as `%s`) | |
| 75 | +| `%t` | Full path to the selected Toolchain executable | |
| 76 | +| `%e` | Path to the default Editor | |
| 77 | +| `%m` | Path to the default Emulator | |
| 78 | +| `%h` | Path to the Header Tool | |
| 79 | +| `%g` | Path to the Signer Tool | |
| 80 | +| `%term` | Path to the Terminal application | |
| 81 | +
|
| 82 | +### The Auto-Typer System |
| 83 | +
|
| 84 | +The Auto-Typer allows you to automate CLI tools that require interactive input. |
| 85 | +
|
| 86 | +* **Profiles:** Create profiles in `Settings -> Manage Auto-Typer Profiles`. Each profile can have multiple steps. |
| 87 | +* **Triggering:** An auto-type sequence is triggered when you press a custom action button that is linked as a "Label Button" within an enabled step in the active profile. |
| 88 | +* **Dynamic Input:** Use the placeholder `%b<num>` in a command (e.g., `name "%b25"`) to create a text input box of size `<num>` in the Settings window. The text you enter there will be typed automatically. |
| 89 | +* **Special Keys:** Use `%C<key>` for `CTRL+key` and `%A<key>` for `ALT+key`. |
| 90 | +
|
| 91 | +## Dependencies |
| 92 | +
|
| 93 | +* **Python 3.x** |
| 94 | +* **Tkinter** (usually included with standard Python installations) |
| 95 | +
|
| 96 | +The script is cross-platform and has been tested on Linux and Windows. |
0 commit comments