Skip to main content

Convert text directory trees (struct.txt) into real folders and files.

Project description

๐Ÿ“˜ tree2cmd

Convert text-based directory trees into real folders and files.

PyPI Version Python Versions MIT License Tests 100% Platforms PyPI Downloads GitHub Tests Status Publish to TestPyPI Publish to PyPI Auto Version Bump


๐Ÿ“‘ Table of Contents


โœจ Overview

tree2cmd converts text-based directory trees (ASCII/Unicode) like:

Project/
โ”œโ”€โ”€ src/
โ”‚   โ””โ”€โ”€ main.py
โ””โ”€โ”€ README.md

into actual folders and files using shell commands:

mkdir -p "Project/"
mkdir -p "Project/src/"
touch "Project/src/main.py"
touch "Project/README.md"

Perfect for:

โœ” Rapid project scaffolding โœ” Teaching directory layouts โœ” DevOps automation โœ” Reproducible project templates โœ” Converting documentation examples into real directories

Fully tested across ASCII trees, Unicode trees, emoji trees, and mixed indentation styles.


๐Ÿš€ Quick Start

1. Make struct.txt:

Project/
  src/
    main.py
  README.md

2. Convert to commands:

tree2cmd struct.txt

3. Actually create them:

tree2cmd struct.txt --run

๐Ÿ“ฆ Installation

Stable release:

pip install tree2cmd

Latest development version:

pip install git+https://github.com/ajmanjoma/tree2cmd.git

๐Ÿ“‚ Example Input โ†’ Output

Input:

๐Ÿ“ฆ App/
  backend/
    api.py
  README.md

Output:

mkdir -p "๐Ÿ“ฆ App/"
mkdir -p "๐Ÿ“ฆ App/backend/"
touch "๐Ÿ“ฆ App/backend/api.py"
touch "๐Ÿ“ฆ App/README.md"

This works for any:

  • ASCII tree
  • Unicode tree
  • Emoji directory
  • Mixed indentation
  • Minimal struct format
  • Multi-root trees

๐Ÿ”ง Usage Guide

Dry run (recommended):

tree2cmd struct.txt

Execute commands:

tree2cmd struct.txt --run

Save script:

tree2cmd struct.txt --save setup.sh

Use standard input:

cat struct.txt | tree2cmd --stdin

Show tree instead of commands:

tree2cmd struct.txt --tree

Disable logs:

tree2cmd struct.txt --no-verbose

๐Ÿง  How It Works

tree2cmd uses a 3-stage pipeline:


1๏ธโƒฃ Parsing

Handles:

  • ASCII trees (|-, +--, etc.)
  • Unicode trees (โ”œโ”€โ”€, โ”‚, โ””โ”€โ”€)
  • Mixed whitespaces and unexpected characters
  • Emojis and non-ASCII folder names
  • Multi-root directories
  • Deep nesting

Uses indentation and tree symbols to infer hierarchy.


2๏ธโƒฃ Classification

Folder detection rules:

  • Ends with / โ†’ folder
  • Contains . โ†’ file
  • Next line is more indented โ†’ folder
  • Otherwise โ†’ file

3๏ธโƒฃ Command Generation

Folders โ†’ mkdir -p Files โ†’ touch

All paths:

  • Are normalized
  • Are quoted
  • Escape shell-sensitive characters

๐Ÿ“š Documentation

Topic File
Usage Guide docs/usage.md
CLI Options docs/cli.md
Parser Details docs/parser.md
API Reference docs/api.md
FAQ docs/faq.md
Contributing docs/contributing.md
Changelog docs/changelog.md

๐Ÿงช Running Tests

Run all tests:

python -m unittest discover -s tests -p "test*.py" -v

With Makefile:

make test

Coverage: 100% (parser + CLI)


๐Ÿ”„ Versioning & Publishing

1. Bump version automatically:

make version patch
# or minor / major

2. Build:

python -m build

3. Upload to PyPI:

twine upload dist/*

4. GitHub Actions (automatic):

  • On tag push โ†’ build + test + publish
  • On PR โ†’ run tests

Workflow located at:

.github/workflows/python-publish.yml

๐Ÿค Contributing

All contributions are welcome!

  1. Fork repo
  2. Create a branch
  3. Add tests for new features
  4. Run tests
  5. Open PR

See full guide: ๐Ÿ“„ docs/contributing.md


๐Ÿ—บ๏ธ Roadmap

  • Windows PowerShell support
  • JSON/YAML โ†’ tree converter
  • VSCode extension
  • GUI visualizer
  • Template engine (copy boilerplate files)

๐Ÿ“„ License

MIT License โ€” free for personal & commercial use.


๐Ÿ‘ค Author

Antony Joseph Mathew ๐Ÿ“ง antonyjosephmathew1@gmail.com ๐ŸŒ GitHub: https://github.com/ajmanjoma/tree2cmd

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

tree2cmd-0.2.2.tar.gz (14.0 kB view details)

Uploaded Source

Built Distribution

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

tree2cmd-0.2.2-py3-none-any.whl (9.9 kB view details)

Uploaded Python 3

File details

Details for the file tree2cmd-0.2.2.tar.gz.

File metadata

  • Download URL: tree2cmd-0.2.2.tar.gz
  • Upload date:
  • Size: 14.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for tree2cmd-0.2.2.tar.gz
Algorithm Hash digest
SHA256 2158189a9ebf636cc2287a4630547a20dd9360a96fcf2c3c4e751dad03fb3cc8
MD5 dde866527e71481df4bd6dae37dba21f
BLAKE2b-256 01e8bbe15207918c11adc0b172f874f2c6255e91c4c3bb5ed3e6c5a1ccdf3b0f

See more details on using hashes here.

File details

Details for the file tree2cmd-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: tree2cmd-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 9.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for tree2cmd-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2b224e11d0441d9a580b31fc5d6a6e0e618204b85f7366bc4d3f9c4493a0eba5
MD5 74c7bbe860457e19d4bba5c8696d0d9c
BLAKE2b-256 dfa7b4105dcea1ef026e1bc0b3bd320627cc2013d3e61ecdf21da49c7f12e635

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