{"id":23183517,"url":"https://github.com/anas-shakeel/maketree-cli","last_synced_at":"2026-02-19T19:31:32.809Z","repository":{"id":264654273,"uuid":"893913272","full_name":"Anas-Shakeel/maketree-cli","owner":"Anas-Shakeel","description":"Create complex project structures effortlessly.","archived":false,"fork":false,"pushed_at":"2025-04-02T01:37:48.000Z","size":1046,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-28T12:28:31.427Z","etag":null,"topics":["automation","command-line-tool","cross-platform","developer-tools","directory-tree","productivity","project-structure-genrator","python","python-app","scaffolding","terminal-based"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Anas-Shakeel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-11-25T12:32:10.000Z","updated_at":"2025-04-02T01:17:13.000Z","dependencies_parsed_at":"2025-02-07T19:18:56.307Z","dependency_job_id":"4ffc5371-c25c-48a6-a3f8-3efce7813b0f","html_url":"https://github.com/Anas-Shakeel/maketree-cli","commit_stats":null,"previous_names":["anas-shakeel/maketree-cli"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/Anas-Shakeel/maketree-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anas-Shakeel%2Fmaketree-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anas-Shakeel%2Fmaketree-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anas-Shakeel%2Fmaketree-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anas-Shakeel%2Fmaketree-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Anas-Shakeel","download_url":"https://codeload.github.com/Anas-Shakeel/maketree-cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anas-Shakeel%2Fmaketree-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29628773,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-19T18:02:07.722Z","status":"ssl_error","status_checked_at":"2026-02-19T18:01:46.144Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","command-line-tool","cross-platform","developer-tools","directory-tree","productivity","project-structure-genrator","python","python-app","scaffolding","terminal-based"],"created_at":"2024-12-18T09:13:29.029Z","updated_at":"2026-02-19T19:31:32.779Z","avatar_url":"https://github.com/Anas-Shakeel.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Anas-Shakeel/maketree-cli/main/assets/header.jpg\" /\u003e\n\u003c/p\u003e\n\n# Maketree CLI\n\n[![GitHub Repository](https://img.shields.io/badge/-GitHub-%230D0D0D?logo=github\u0026labelColor=gray)](https://github.com/anas-shakeel/maketree-cli)\n[![Latest PyPi version](https://img.shields.io/pypi/v/maketree.svg)](https://pypi.python.org/pypi/maketree)\n[![supported Python versions](https://img.shields.io/pypi/pyversions/maketree)](https://pypi.python.org/pypi/maketree)\n[![Project licence](https://img.shields.io/pypi/l/maketree?color=blue)](LICENSE)\n[![Black](https://img.shields.io/badge/code%20style-black-000000.svg)](black)\n[![PyPI - Downloads](https://img.shields.io/pypi/dm/maketree?color=%232ecc71)](https://pypistats.org/packages/maketree)\n\nCreate project structures effortlessly with a single command.\n\n## 📜 Table of Contents\n\n-   [Overview](#overview)\n-   [Why Maketree?](#why-maketree)\n-   [Features](#features)\n-   [Installation](#installation)\n    -   [Install via pip](#install-via-pip)\n    -   [Install from source](#install-from-source)\n    -   [Download binaries](#download-binaries-no-python-required)\n-   [Quickstart](#quickstart)\n-   [Usage](#usage)\n    -   [Display Help](#display-help)\n    -   [Creating a Directory Structure](#creating-a-directory-structure)\n        -   [Define the Structure](#define-the-structure)\n        -   [Generate the Structure](#generate-the-structure)\n    -   [Syntax for Writing a .tree file](#syntax-for-writing-a-tree-file)\n    -   [Specifying a Destination Folder](#specifying-a-destination-folder)\n    -   [Handling Existing Files](#handling-existing-files)\n        -   [Overwrite Existing Files](#overwrite-existing-files)\n        -   [Skip Existing Files](#skip-existing-files)\n    -   [Extracting the Structure](#extracting-the-structure)\n    -   [Preview the Structure](#preview-the-structure)\n    -   [Avoid Confirming](#avoid-confirming)\n    -   [Avoid Color Output](#avoid-color-output)\n    -   [Summary](#summary)\n-   [Compatibility](#compatibility)\n    -   [OS Support](#os-support)\n    -   [Python Version Support](#python-version-support)\n-   [FAQ](#faq)\n    -   [What is Maketree?](#what-is-maketree)\n    -   [Do I have to be a Software Developer to use Maketree?](#do-i-have-to-be-a-software-developer-to-use-maketree)\n    -   [Why should I use Maketree?](#why-should-i-use-maketree)\n    -   [How do I install Maketree?](#how-do-i-install-maketree)\n    -   [How do I use Maketree to generate a project structure?](#how-do-i-use-maketree-to-generate-a-project-structure)\n    -   [What should I do if I find a bug?](#what-should-i-do-if-i-find-a-bug)\n    -   [How do I uninstall Maketree?](#how-do-i-uninstall-maketree)\n-   [Contributing](#contributing)\n\n\u003ch2 id=\"overview\"\u003e📖 Overview\u003c/h2\u003e\n\nMaketree is a powerful CLI tool that generates **directories** and **files** based on a predefined structure. Instead of manually creating folders and files, just define your structure and let **Maketree** handle the rest.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Anas-Shakeel/maketree-cli/main/assets/demo.gif\" alt=\"demo.gif\"/\u003e\n\u003c/p\u003e\n\n\u003ch2 id=\"why-maketree\"\u003e🤔 Why Maketree?\u003c/h2\u003e\n\n-   **Saves Time**: No more manually creating directories and files.\n-   **Consistency**: Maintain a standard project structure across all your projects.\n-   **Easy to Use**: Define a structure in plain text and generate it instantly.\n\n\u003ch2 id=\"features\"\u003e🚀 Features:\u003c/h2\u003e\n\n-   **Supports nested directory structures**\n-   **Automatically creates missing parent directories**\n-   **Flexible file handling with warning, skip, and overwrite options**\n-   **Preview the directory tree before creation**\n-   **Color support**\n-   **Simple and easy to write structure syntax**\n-   **Lightweight, fast, and has zero dependencies**\n-   **Simple and user-friendly CLI**\n\n\u003ch2 id=\"installation\"\u003e📦 Installation:\u003c/h2\u003e\n\n\u003ch3 id=\"install-via-pip\"\u003eInstall via **pip**:\u003c/h3\u003e\n\n`Maketree` is available on PyPI. **(Recommended if you're a python developer and have python already installed on your system)**\n\nYou can install it using:\n\n```sh\npip install maketree\n```\n\n`python\u003e=3.8` must be installed on your system.\n\n\u003ch3 id=\"install-from-source\"\u003eInstall from **Source**:\u003c/h3\u003e\n\nIf you are installing from source, you will need `python\u003e=3.8`.\n\n```sh\ngit clone https://github.com/Anas-Shakeel/maketree-cli.git\ncd maketree-cli\npip install .\n```\n\n\u003ch3 id=\"download-binaries-no-python-required\"\u003eDownload **Binaries**: _(No Python Required)_\u003c/h3\u003e\n\nMaketree provides standalone binaries for **Linux**, **macOS**, and **Windows**. **(Recommended if you don't want to install Python.)**\n\n-   Download the latest release from the [Releases page](https://github.com/anas-shakeel/maketree-cli/releases/).\n\n-   **(Optional)** Move the executable to a directory in your system's `PATH` (e.g., `/usr/local/bin` on **Linux/macOS** OR `C:\\maketree` on **Windows**).\n\n-   Run `maketree` from the terminal.\n\n    ```sh\n    maketree -h\n    ```\n\n\u003ch2 id=\"quickstart\"\u003e⚡ Quickstart:\u003c/h2\u003e\n\nDefine your project structure in a `.tree` file:\n\n`structure.tree`\n\n```plaintext\nmy_project/\n    src/\n        main.py\n        utils.py\n    tests/\n        test_main.py\n    README.md\n    .gitignore\n```\n\nThen, run:\n\n```sh\nmaketree structure.tree\n```\n\nThis will instantly generate the entire structure in your current directory.\n\n\u003ch2 id=\"usage\"\u003e⚙️ Usage\u003c/h2\u003e\n\nYou can `maketree` from any location in your terminal. **(If installed via `pip` or if moved the executable to a directory recognized by system's `PATH`)**\n\n\u003ch3 id=\"display-help\"\u003eDisplay Help\u003c/h3\u003e\n\n```sh\nmaketree -h\n```\n\nThis will show the available commands and options:\n\n```sh\nusage: maketree [OPTIONS]\n\nCreate complex project structures effortlessly.\n\npositional arguments:\n  src                   source file (with .tree extension)\n  dst                   where to create the tree structure (default: .)\n\noptions:\n  -h, --help            show this help message and exit\n  -cd, --create-dst     create destination folder if it doesn't exist.\n  -et, --extract-tree   write directory tree into a .tree file. (takes a PATH)\n  -g, --graphical       show source file as graphical tree and exit\n  -o, --overwrite       overwrite existing files\n  -s, --skip            skip existing files\n  -nc, --no-color       don't use colors in output\n  -nC, --no-confirm     don't ask for confirmation\n  -v, --verbose         enable verbose mode\n\nMaketree 1.2.0\n```\n\n\u003ch3 id=\"creating-a-directory-structure\"\u003eCreating a Directory Structure\u003c/h3\u003e\n\n**Maketree** reads `.tree` file that defines the folder and file structure and then creates the corresponding structure on your filesystem.\n\n\u003ch4 id=\"define-the-structure\"\u003eDefine the Structure\u003c/h4\u003e\n\nCreate a file named `myapp.tree`:\n\n```\nsrc/\n    style.css\n    app.js\n    index.html\n```\n\nThis will create a src folder with three files: `index.html`, `style.css`, and `app.js`.\n\n#### Generate the Structure\n\nTo generate the structure, Run:\n\n```sh\nmaketree myapp.tree\n```\n\nIt will ask for confirmation with a graphical representation of the structure.\n\n```sh\n.\n└─── src/\n│   ├─── app.js\n│   ├─── index.html\n│   └─── style.css\nCreate this structure? (y/N):\n```\n\nOutput:\n\n```sh\n1 directory and 3 files have been created.\n```\n\nBy default, maketree creates the structure in the current directory.\n\n\u003ch3 id=\"syntax-for-writing-a-tree-file\"\u003eSyntax for Writing a `.tree` File\u003c/h3\u003e\n\nTo ensure correctness, follow these simple points:\n\n1. **Directories must end with `/`**\n2. **Indentation must be exactly 4 spaces** _(other indentations may cause unexpected results)_\n3. **File and directory names must be valid according to your OS**\n4. **Comments start with `//`** _(inline comments are not supported)_\n\n#### Example:\n\n`myapp.tree`\n\n```\n// This is a comment, and is ignored by maketree.\nnode_modules/\npublic/\n    favicon.ico\n    index.html\n    robots.txt\nsrc/\n    index.css\n    index.js\n.gitignore\npackage.json\nREADME.md\n```\n\nNow, run:\n\n```sh\nmaketree myapp.tree\n```\n\nOutput: (After confirming)\n\n```\n3 directories and 8 files have been created.\n```\n\n\u003ch3 id=\"specifying-a-destination-folder\"\u003eSpecifying a Destination Folder\u003c/h3\u003e\n\nYou can specify a destination folder instead of creating the structure in the current directory.\n\n```sh\nmaketree myapp.tree myapp/\n```\n\nIt will throw an error if `myapp/` does not exist.\n\n```sh\nError: destination path 'myapp' does not exist.\n```\n\nUse `--create-dst` or `-cd` flag, `maketree` then creates the destination directory if it doesn't exists.\n\n```sh\nmaketree myapp.tree myapp/ --create-dst\n```\n\nOutput:\n\n```\n3 directories and 8 files have been created.\n```\n\n\u003ch3 id=\"handling-existing-files\"\u003eHandling Existing Files\u003c/h3\u003e\n\nIf you run `maketree` again in the same directory without deleting files, you’ll see an error:\n\n```sh\nmaketree myapp.tree myapp\n```\n\nOutput:\n\n```\nError: Found 8 existing files, cannot proceed. (try --skip or --overwrite)\n```\n\nBy default, `maketree` does not **overwrite** or **skip** existing files.\n\n\u003ch4 id=\"overwrite-existing-files\"\u003eOverwrite Existing Files\u003c/h4\u003e\n\nUse the `--overwrite` or `-o` flag to overwrite existing files:\n\n```sh\nmaketree myapp.tree myapp --overwrite\n```\n\nOutput:\n\n```\n0 directories and 8 files have been created.\n```\n\n\u003ch4 id=\"skip-existing-files\"\u003eSkip Existing Files\u003c/h4\u003e\n\nUse the `--skip` or `-s` flag to keep existing files but create missing ones:\n\n```sh\nmaketree myapp.tree myapp --skip\n```\n\nOutput: (After deleting 3 files)\n\n```\n0 directories and 3 files have been created.\n```\n\n\u003ch3 id=\"extracting-the-structure\"\u003eExtracting the Structure\u003c/h3\u003e\n\nYou can also extract an already created project structure using `-et` or `--extract-tree` flag following the directory path of structure:\n\n```sh\nmaketree --extract-tree myapp/\n```\n\nOutput:\n\n```\nTree has been extracted into 'myapp_1.tree'\n```\n\nNotice it created `myapp_1.tree`, because there was a `myapp.tree` already in the current directory.\n\nContents of `myapp_1.tree` file:\n\n```\nmyapp/\n    .gitignore\n    package.json\n    README.md\n    node_modules/\n    public/\n        favicon.ico\n        index.html\n        robots.txt\n    src/\n        index.css\n        index.js\n```\n\nNow this `.tree` file can be used whenever you want to create a similar project structure.\n\n\u003ch3 id=\"preview-the-structure\"\u003ePreview the Structure\u003c/h3\u003e\n\nUse `--graphical` or `-g` to visualize the `myapp.tree` file:\n\n```sh\nmaketree myapp.tree -g\n```\n\nOutput:\n\n```\n.\n├─── node_modules/\n├─── public/\n│   ├─── favicon.ico\n│   ├─── index.html\n│   └─── robots.txt\n├─── src/\n│   ├─── index.css\n│   └─── index.js\n├─── .gitignore\n├─── package.json\n└─── README.md\n```\n\nIt is also shown before you create a structure for confirmation.\n\n\u003ch3 id=\"avoid-confirming\"\u003eAvoid Confirming:\u003c/h3\u003e\n\nBy default, `maketree` confirms before creating the structure. But this can sometimes be anoyying. Use `--no-confirm` or `-nC` flag to create the structure without confirming. _(Notice the C is capital in `-nC`)_\n\n```sh\nmaketree myapp.tree myapp --no-confirm\n```\n\n\u003ch3 id=\"avoid-color-output\"\u003eAvoid Color Output:\u003c/h3\u003e\n\nBy default, `maketree` uses [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code) to color the output.\n\n```sh\nmaketree myapp.tree myapp/\n```\n\nIf you're seeing something like this:\n\n```sh\n←[1m←[3m←[92msrc/←[0m\n←[90m├───←[0m ←[1m←[3m←[92mnode_modules/←[0m\n←[90m├───←[0m ←[1m←[3m←[92mpublic/←[0m\n←[90m│   ←[0m←[90m├───←[0m favicon.ico\n←[90m│   ←[0m←[90m├───←[0m index.html\n←[90m│   ←[0m←[90m└───←[0m robots.txt\n←[90m├───←[0m ←[1m←[3m←[92msrc/←[0m\n←[90m│   ←[0m←[90m├───←[0m index.css\n←[90m│   ←[0m←[90m└───←[0m index.js\n←[90m├───←[0m .gitignore\n←[90m├───←[0m package.json\n←[90m└───←[0m README.md\n←[95mCreate this structure? (y/N): ←[0m\n```\n\nThen your terminal doesn't support **ANSI escape codes** by default. **(there are workarounds but they require extra python dependencies)**.\n\nYou will have to disable colors using `--no-color` or `-nc` flag.\n\n```sh-session\nmaketree myapp.tree myapp/ --no-color\n```\n\nThis will disable colors and you'll see normal text again.\n\n\u003ch3 id=\"summary\"\u003eSummary\u003c/h3\u003e\n\n| Feature           | Command Example                 |\n| ----------------- | ------------------------------- |\n| Create structure  | `maketree myapp.tree`           |\n| Set destination   | `maketree myapp.tree myapp -cd` |\n| Overwrite files   | `maketree myapp.tree myapp -o`  |\n| Skip existing     | `maketree myapp.tree myapp -s`  |\n| Extract structure | `maketree -et myapp/`           |\n| Graphical preview | `maketree myapp.tree -g`        |\n| Avoid Confirm     | `maketree myapp.tree myapp -nC` |\n| Avoid Colors      | `maketree myapp.tree myapp -nc` |\n\n\u003ch2 id=\"compatibility\"\u003e🖥️ Compatibility\u003c/h2\u003e\n\n\u003ch3 id=\"os-support\"\u003eOS Support\u003c/h3\u003e\n\nMaketree is compatible with the following operating systems:\n\n| OS      | Compatibility |\n| ------- | ------------- |\n| Linux   | ✅ Supported  |\n| macOS   | ✅ Supported  |\n| Windows | ✅ Supported  |\n\n\u003ch3 id=\"python-version-support\"\u003ePython Version Support\u003c/h3\u003e\n\nMaketree works with **Python 3.8 and later**, ensuring compatibility with the latest Python releases.\n\n| Python Version | Compatibility         |\n| -------------- | --------------------- |\n| 3.8            | ✅ Supported          |\n| 3.9            | ✅ Supported          |\n| 3.10           | ✅ Supported          |\n| 3.11           | ✅ Supported          |\n| 3.12           | ✅ Supported          |\n| 3.13           | ✅ Supported (Latest) |\n\n\u003ch2 id=\"faq\"\u003e❓ FAQ\u003c/h2\u003e\n\n\u003ch4 id=\"what-is-maketree\"\u003eWhat is Maketree?\u003c/h4\u003e\n\n**Maketree** is a command-line tool that helps developers quickly generate a predefined folder and file structures for your projects. It eliminates the need to manually create directories and files, allowing developers to start coding right away with a well-organized project structure.\n\n\u003ch4 id=\"do-i-have-to-be-a-software-developer-to-use-maketree\"\u003eDo I have to be a Software Developer to use Maketree?\u003c/h4\u003e\n\nNo, you can be anyone. You can be a lawyer, student, or heck even Yavascript programmer.\n\n\u003ch4 id=\"why-should-i-use-maketree\"\u003eWhy should I use Maketree?\u003c/h4\u003e\n\nIf you frequently create CLI applications, Maketree saves you time by setting up a standardized project structure instantly. It follows best practices and helps you maintain consistency across different projects.\n\n\u003ch4 id=\"how-do-i-install-maketree\"\u003eHow do I install Maketree?\u003c/h4\u003e\n\nYou can install **Maketree** via pip. _(for python developers)_\n\n```sh\npip install maketree\n```\n\nOr download the executable for your OS from [Releases page](https://github.com/anas-shakeel/maketree-cli/releases/latest/).\n\n\u003ch4 id=\"how-do-i-use-maketree-to-generate-a-project-structure\"\u003eHow do I use Maketree to generate a project structure?\u003c/h4\u003e\n\nSimply create a file like `anything.tree` and define your project structure in it:\n\n`anything.tree`\n\n```\nsrc/\n    app.js\n    index.html\n    style.css\n```\n\nthen run the following command:\n\n```sh\nmaketree anything.tree\n```\n\nThis will create the files and folders you specified in `anything.tree` file.\n\n\u003ch4 id=\"what-should-i-do-if-i-find-a-bug\"\u003eWhat should I do if I find a bug?\u003c/h4\u003e\n\nIf you encounter a bug, please [open an issue](https://github.com/Anas-Shakeel/maketree-cli/issues) on GitHub with details about the problem. Be sure to include:\n\n-   A description of the issue\n-   Steps to reproduce\n-   Expected vs. actual behavior\n-   Any error messages you received\n\n\u003ch4 id=\"how-do-i-uninstall-maketree\"\u003eHow do I uninstall Maketree?\u003c/h4\u003e\n\nTo uninstall **Maketree** (installed via `pip`), Run:\n\n```sh\npip uninstall maketree\n```\n\n\u003ch2 id=\"contributing\"\u003e🤝 Contributing\u003c/h2\u003e\n\nContributions to **Maketree** are welcome and highly appreciated. However, before you jump right into it, i would like you to review [Contribution Guidelines](https://github.com/anas-shakeel/maketree-cli/blob/main/CONTRIBUTING.md) to make sure you have a smooth experience contributing to **Maketree**.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanas-shakeel%2Fmaketree-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanas-shakeel%2Fmaketree-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanas-shakeel%2Fmaketree-cli/lists"}