Skip to main content

Scaffix

Scaffix is a small interactive CLI that creates numbered folder structures with consistent subdirectories.

Goal: make repetitive workspace setup fast, safe, and predictable.

CI Version Python License PyPI


✨ Features

  • Create parent folders in any numeric range (for example: 1 to 100)
  • Optional zero padding (for example: 001, 002, 003)
  • Optional custom child directories in every parent folder
  • Explicit skip option when you do not want folder-in-folder creation
  • Preview and confirmation before filesystem changes
  • Colored output for better CLI readability
  • Cleaner tree-style preview formatting
  • Progress bar during folder generation
  • Error logging to scaffix.log
  • Idempotent creation (exist_ok=True) to avoid hard failures on reruns

🧠 How Scaffix Works

Scaffix follows a simple step-by-step flow:

  1. Ask for folder range (start and end)
  2. Ask whether names should be zero-padded
  3. Ask whether subdirectories are needed; press Enter with no input to skip for parent-only output
  4. Ask for base output path
  5. Show summary + preview tree
  6. Ask confirmation and then create directories

If one folder fails to create, Scaffix continues with the next folder and reports results at the end.


📦 Installation (Local Development)

Clone the repository:

git clone https://github.com/YOUR_USERNAME/scaffix.git
cd scaffix

Install in editable mode:

pip install -e .

Run:

scaffix

Alternative run mode:

python -m scaffix

Check version:

scaffix --version

🚀 Example Usage

Enter START number: 1
Enter END number: 5
Zero-pad folder names? Y
Create subdirectories inside each folder? Y
Subdirectories: code, task
Base path: ./demo

Output structure:

01/
   ├── code/
   ├── task/
02/
   ├── code/
   ├── task/
...

📁 Project Structure

src/scaffix/
├── __init__.py   # Package metadata (__version__)
├── __main__.py   # python -m scaffix entrypoint
└── cli.py        # Interactive prompts + folder creation logic

tests/            # Test suite

Quick parent-only example:

Enter START number: 1
Enter END number: 100
Zero-pad folder names? N
Create subdirectories inside each folder? N
Base path: ./demo

For deeper internal flow, see docs/PROJECT_GUIDE.md.


🛠 Developer Notes

  • Main entry function: scaffix.cli.main()
  • Safe cancellation: Ctrl + C exits cleanly
  • Errors are handled per folder to avoid stopping the whole run
  • Runtime errors are logged to scaffix.log
  • Current Python requirement: >=3.9

Dev setup

pip install -e .[dev]
pre-commit install

Run checks locally:

black --check src tests
pytest

🚢 Release & Publishing

  • Semantic versioning is enabled using conventional commits.
  • .github/workflows/semantic-release.yml handles automated version/tag/release.
  • .github/workflows/publish-pypi.yml publishes to PyPI when a GitHub release is published.
  • For PyPI automation, configure a Trusted Publisher for this repository in PyPI.

✅ Suggested Next Improvements

  • Add automated tests for input parsing and creation behavior
  • Add a non-interactive mode with CLI flags (--start, --end, etc.)
  • Add optional dry-run mode (preview without creating)

🏷 Version

Current version: 1.0.2


📄 License

MIT License

Metadata

Release files for scaffix 1.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for scaffix 1.0.2
File Size Uploaded
scaffix-1.0.2.tar.gz 8.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for scaffix 1.0.2
File Interpreter ABI Platform
scaffix-1.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 16.4 kB

Release files / scaffix-1.0.2.tar.gz

Download URL scaffix-1.0.2.tar.gz
Size 8.8 kB
Tags Source
SHA-256 checksum
How to use checksums
845a2f101226cc420b68ab7ad1651e5051f60c83101dd478ab7a88aa906ebd52
BLAKE2b-256 checksum
How to use checksums
333d69143081c2a81287a1bf2fbd9e5eb83b789d6ba2302a40f47c65a90cd55a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.14

Release files / scaffix-1.0.2-py3-none-any.whl

Download URL scaffix-1.0.2-py3-none-any.whl
Size 7.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
75d12c6a95fdfdbaa622b192fb5dacde6e1789b13bfd0dc2153e4fcc19cda241
BLAKE2b-256 checksum
How to use checksums
4791ffb79d7c4bbb466fa1c4c8a7dc8e77ebd6a0dedbf46d77e4e802bd0e70dd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.14

Release history Release notifications | RSS feed

This release

1.0.2 This release

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page