Skip to main content

A lightweight DSL for scaffolding files and folders

Project description

🧱 Bytecraft

A human-readable DSL for scaffolding files and folders.

pip install bytecraft

Bytecraft lets you describe a project structure in plain, readable instructions and execute it with a single command — no Bash, no Python boilerplate, no mental overhead.

# bootstrap.bc

set-working-folder "my-app"

make-folder "src"
make-folder "src/utils"
make-folder "assets"

make-file "README.md" with "# my-app"
make-file "src/main.py" with "print('Hello, World!')"
make-file "src/utils/helper.py"
py -m bytecraft bootstrap.bc
[Bytecraft] Working folder set: my-app
[Bytecraft] Created folder: my-app/src
[Bytecraft] Created folder: my-app/src/utils
[Bytecraft] Created folder: my-app/assets
[Bytecraft] Created file: my-app/README.md
[Bytecraft] Created file: my-app/src/main.py
[Bytecraft] Created file: my-app/src/utils/helper.py

Installation

Requires Python 3.10+

pip install bytecraft

Commands

set-working-folder

Sets the base directory for all subsequent relative paths. Created automatically if it doesn't exist.

set-working-folder "my-project"

make-folder

Creates a directory and any missing parent directories. Does nothing if the folder already exists.

make-folder "src/utils"

make-file

Creates a file. Parent directories are created automatically. Overwrites if the file already exists.

# Empty file
make-file "src/__init__.py"

# With inline content
make-file "VERSION" with "1.0.0"

# With a multi-line block
make-file "README.md" with ---
# My Project

Some description here.
---

set

Defines a variable. Variables can be referenced anywhere using {{name}} syntax.

set project "my-app"
set version "1.0.0"

make-file "VERSION" with "{{version}}"
make-file "src/main.py" with "# {{project}} v{{version}}"

Variables also interpolate inside multi-line blocks:

set author "Sourasish Das"

make-file "README.md" with ---
# {{project}}

Maintained by {{author}}.
---

Comments

Lines starting with # are ignored.

# This is a comment

Forgiving Syntax

Bytecraft is intentionally forgiving. Quotes are optional — if they're missing, Bytecraft will try to recover and interpret your intent:

make-file hello.txt with Hello World

is treated the same as:

make-file "hello.txt" with "Hello World"

Unknown commands print a warning and are skipped rather than crashing the whole script.


Full Example

# Project scaffold

set project "dashboard"
set author "Sourasish Das"
set version "0.1.0"

set-working-folder "{{project}}"

make-folder "src"
make-folder "src/components"
make-folder "src/utils"
make-folder "tests"
make-folder "assets"

make-file "VERSION" with "{{version}}"

make-file "src/main.py" with "# Entry point for {{project}}"

make-file "README.md" with ---
# {{project}}

Version: {{version}}
Author: {{author}}
---

make-file "tests/test_main.py" with ---
import unittest

class TestMain(unittest.TestCase):
    def test_placeholder(self):
        self.assertTrue(True)
---

Limitations (v0.1.1)

  • No loops or conditionals
  • No append mode
  • No imports or includes
  • No strict mode

These are planned for future versions.


Roadmap

  • append-file command
  • Loops and conditionals
  • Strict mode
  • Import / include system
  • Template support

License

Server-Lab Open-Control License (SOCL) 1.0
Copyright (c) 2025 Sourasish Das

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

bytecraft-0.1.2.tar.gz (7.2 kB view details)

Uploaded Source

Built Distribution

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

bytecraft-0.1.2-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file bytecraft-0.1.2.tar.gz.

File metadata

  • Download URL: bytecraft-0.1.2.tar.gz
  • Upload date:
  • Size: 7.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for bytecraft-0.1.2.tar.gz
Algorithm Hash digest
SHA256 fae89fb0f665a41917d0baedf10d6c7df3bb703263858046f790e3c45eea557c
MD5 36af0eed40b3254394bd38636f621a72
BLAKE2b-256 5258894bfcfc2914aad1c73aa01e44cb1439e4502ba785d20b402e6f9f59e35c

See more details on using hashes here.

File details

Details for the file bytecraft-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: bytecraft-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 7.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for bytecraft-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 74e768db1dacd62ed862733de93072e7de27693afb6b7a963f3f43e7b449400e
MD5 f4fecc8e21c36cc4a3d42dc284d05280
BLAKE2b-256 595d57451a80cd58103722f5ddfc1f87fd4f065f68f706d5f09da2201164e534

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