Skip to main content

Generate directory structures from ASCII art or Markdown files

Project description

mdirtree

Generate directory structures from ASCII art or Markdown files.

Overview

mdirtree is a command-line tool that converts ASCII directory trees into actual directory structures. It can parse trees from various sources, including plain text files, standard input, or code blocks within Markdown files.

This is useful for quickly setting up project scaffolding, creating test directories, or documenting and implementing directory structures defined in documentation.

Features

  • Generate directory structure from ASCII tree diagrams
  • Support for Markdown and text files
  • Interactive input mode
  • Dry run mode
  • Comment support (using # after file/directory names)
  • Special handling for common files (README.md, init.py, etc.)
  • REST API for remote directory generation
  • Automated session management for tracking changes
  • Support for incremental updates to existing structures
  • Template system for common directory patterns

Installation

Via pip

pip install mdirtree

Via GitHub

git clone https://github.com/plain-mark/mdirtree.git
cd mdirtree
pip install .

Setting up a development environment

Create a virtual environment:

python -m venv venv

Activate the virtual environment:

source venv/bin/activate  # On Windows: venv\Scripts\activate

Install dependencies:

pip install --upgrade pip
pip install -r requirements.txt

Install in development mode:

pip install -e .

Usage

Basic usage

# Generate from Markdown file
mdirtree structure.md -o ./output_dir

# Generate from text file
mdirtree structure.txt -o ./output_dir

# Generate from stdin
mdirtree - -o ./output_dir

# Dry run (show planned operations without creating files)
mdirtree --dry-run structure.md

# Enable verbose logging
mdirtree -v structure.md -o ./output_dir

# Use session management for tracking changes
mdirtree --session my-project structure.md -o ./output_dir

Command-line Options

usage: mdirtree [-h] [--output OUTPUT] [--dry-run] [--verbose] [--session SESSION] [input]

Generate directory structure from ASCII art or Markdown files

positional arguments:
  input                 Input file (*.md, *.txt) or - for stdin

options:
  -h, --help            show this help message and exit
  --output OUTPUT, -o OUTPUT
                        Output directory (default: current directory)
  --dry-run, -d         Show planned operations without creating files
  --verbose, -v         Enable verbose logging
  --session SESSION, -s SESSION
                        Session name for tracking changes

Input Format Example

project/
├── src/
│   ├── main.py
│   └── utils/
│       ├── helpers.py
│       └── __init__.py
├── tests/
│   ├── test_main.py
│   └── __init__.py
└── README.md

REST API

mdirtree also offers a REST API for generating directory structures:

Starting the server

from mdirtree.rest.server import run_server

run_server(host='0.0.0.0', port=5000)

Using the client

from mdirtree.rest.client import MdirtreeClient

client = MdirtreeClient('http://localhost:5000')

structure = """
project/
├── src/
│   └── main.py
└── tests/
    └── test_main.py
"""

# Generate structure
result = client.generate_structure(structure, output_path="./output")
print(result)

# Dry run mode
result = client.generate_structure(structure, dry_run=True)
print(result)

# With session management
result = client.generate_structure(structure, output_path="./output", session="my-project")
print(result)

REST API Endpoints

  • POST /generate
    • Request body:
      {
          "structure": "ASCII art structure",
          "output_path": "optional output path",
          "dry_run": false,
          "session": "optional session name"
      }
      
    • Response:
      {
          "status": "success",
          "operations": ["list of operations"],
          "output_path": "output path"
      }
      

Automation

mdirtree provides automation capabilities for integrating with CI/CD pipelines and other automated workflows:

from mdirtree.automation.session_manager import SessionManager

# Create a session manager
manager = SessionManager("my-project")

# Track changes between structure updates
manager.start_session()
manager.generate_structure("structure.md", "./output")
changes = manager.end_session()

print(f"Changes made: {changes}")

Contributing

Contributions are welcome! Please see CONTRIBUTION.md for guidelines.

License

LICENSE

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

mdirtree-0.1.6.tar.gz (24.6 kB view details)

Uploaded Source

Built Distribution

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

mdirtree-0.1.6-py3-none-any.whl (15.2 kB view details)

Uploaded Python 3

File details

Details for the file mdirtree-0.1.6.tar.gz.

File metadata

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

File hashes

Hashes for mdirtree-0.1.6.tar.gz
Algorithm Hash digest
SHA256 eb433c0bb4949bed691cf386928be5a341661ec9f8c84ea05de64c76bbaae8b2
MD5 6533d669854739d17527edfb637dddd4
BLAKE2b-256 b1b3c550cc2f150e52c17c7142cd247befe5e156644c5d0451ac4be4d96722d3

See more details on using hashes here.

File details

Details for the file mdirtree-0.1.6-py3-none-any.whl.

File metadata

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

File hashes

Hashes for mdirtree-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 46bbbc0d6025bc8f64b956d8b0fc61d2a8d917cf5598b2e9d78d04d94c6e4e86
MD5 81b3d464dbd73c56051f4547b108c7c7
BLAKE2b-256 6ab39e36f672a92f3429cb7fd50e258c7304557af183dc268b3f81aee59c2a92

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