Skip to main content

A command-line tool to generate folder and file structures from YAML templates

Project description

Scaffolder

A command-line tool to generate folder and file structures from YAML templates.

Features

  • 🚀 Fast: Uses asynchronous I/O for efficient file operations
  • 🛠️ Simple: Define your project structure in a simple YAML file
  • 🎨 Visual: Rich console output with color-coded status messages
  • 🔄 Non-destructive: Asks for confirmation before overwriting existing files
  • 🧩 Flexible: Creates files with or without content, nested directories, and more
  • 📊 Preview: Visualize your project structure before generating it
  • 🔧 Templates: Built-in templates for common project structures

Installation

pip install scaffolder

Or install from source:

git clone https://github.com/yourusername/scaffolder.git
cd scaffolder
pip install -e .

Usage

Creating Your Project Structure

Create a YAML template file to define your desired file structure:

# template.yaml
src:
  main.py: |
    def main():
        print("Hello, world!")

    if __name__ == "__main__":
        main()
  utils:
    helpers.py: |
      def add(a, b):
          return a + b
docs:
  README.md: "# My Project\n\nThis is a sample project."
tests:
  test_main.py: |
    def test_sample():
        assert True

Then generate your project structure:

scfldr generate-structure --template template.yaml --output my_project

Creating Example Templates

You can quickly create example template files:

scfldr create-example --type basic --output my_template.yaml
scfldr create-example --type web --output web_template.yaml
scfldr create-example --type python_package --output pkg_template.yaml

Previewing Structure

Preview the structure defined in your template without generating files:

scfldr show-structure --template template.yaml

Command Line Options

Usage: scfldr [COMMAND] [OPTIONS]

Generate folder/file structure from a YAML template.

Commands:
  generate-structure     Generate a project structure from a YAML template
  show-structure         Preview the directory structure from a YAML template
  create-template-file   Create a YAML template file from predefined examples
  create-example         Generate an example YAML template file

Options:
  --help                 Show this message and exit

Generate Structure Options:
  --template PATH        Path to the YAML template. [default: template.yaml]
  --output PATH          Output directory root. [default: .]
  --force / --no-force   Overwrite existing output directory if it exists.

Show Structure Options:
  --template PATH        Path to the YAML template. [default: template.yaml]

Create Template File Options:
  TEMPLATE_NAME          Name of the template to create (e.g., 'basic', 'web', 'python_package')
  --output-path PATH     Output path for the YAML template file. [default: template.yaml]

Create Example Options:
  --output PATH          Path to save the example template. [default: template.yaml]
  --type TEXT            Type of template to generate (basic, web, python_package). [default: basic]
  --force / --no-force   Overwrite existing file if it exists.

YAML Template Format

The YAML template follows a simple structure:

  • Keys represent directory or file names
  • Values represent:
    • For directories: A nested dictionary defining child entities
    • For files: String content (can be multiline using YAML's | syntax)
    • For empty directories: An empty dictionary {}

Example:

# Basic structure
project:
  src:
    main.py: |
      def main():
          print("Hello, world!")
    utils: {} # Empty directory
  README.md: "# Project Title"

Predefined Templates

Scaffolder comes with several predefined templates that you can use to quickly start a project:

Basic Template

A simple project structure with source files, documentation, and tests.

scfldr create-template-file basic --output-path basic_template.yaml

Web Template

A Flask web application with static files, templates, and basic setup.

scfldr create-template-file web --output-path web_template.yaml

Python Package Template

A standard Python package structure with tests, setup.py, and more.

scfldr create-template-file python_package --output-path package_template.yaml

Development

Requirements

  • Python 3.7+
  • Dependencies:
    • typer
    • pyyaml
    • asyncio
    • aiofiles
    • rich

License

MIT

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

scfldr-0.1.1.tar.gz (13.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

scfldr-0.1.1-py3-none-any.whl (8.1 kB view details)

Uploaded Python 3

File details

Details for the file scfldr-0.1.1.tar.gz.

File metadata

  • Download URL: scfldr-0.1.1.tar.gz
  • Upload date:
  • Size: 13.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for scfldr-0.1.1.tar.gz
Algorithm Hash digest
SHA256 8e80cba92a2c4caffcdad7a9574f0ae7ee1bfcc03703206ce7fec0cbb87afb3b
MD5 874a4f32fb4acfdc617a3267ed915efb
BLAKE2b-256 4305b1bdfbe3f44930784adbd5a14e7c7e271a5813d41953662308bfb1b09db6

See more details on using hashes here.

File details

Details for the file scfldr-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: scfldr-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 8.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for scfldr-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 419727d19e8d250788af40c1c6bdc765e9cdd5473fa203bbba023ee5a30d43b5
MD5 742574c1c506e75a18ab9f2076637d50
BLAKE2b-256 9832bbe2512f741a308127388e4295bc5c346f5fe248328715e738a7d8cda230

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page