{"id":18268625,"url":"https://github.com/raisinten/fs-make","last_synced_at":"2025-04-04T23:31:10.473Z","repository":{"id":56507903,"uuid":"266972817","full_name":"RaisinTen/fs-make","owner":"RaisinTen","description":"Make a folder structure from its description","archived":false,"fork":false,"pushed_at":"2024-05-16T07:17:31.000Z","size":1067,"stargazers_count":16,"open_issues_count":0,"forks_count":1,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-20T20:17:47.813Z","etag":null,"topics":["bison","flex","grammar","lex","parser","productivity","project","yacc"],"latest_commit_sha":null,"homepage":"","language":"C++","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/RaisinTen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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},"funding":{"github":["RaisinTen"]}},"created_at":"2020-05-26T07:22:15.000Z","updated_at":"2024-08-31T03:08:21.000Z","dependencies_parsed_at":"2024-11-05T11:51:34.876Z","dependency_job_id":null,"html_url":"https://github.com/RaisinTen/fs-make","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RaisinTen%2Ffs-make","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RaisinTen%2Ffs-make/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RaisinTen%2Ffs-make/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RaisinTen%2Ffs-make/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RaisinTen","download_url":"https://codeload.github.com/RaisinTen/fs-make/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247266475,"owners_count":20910831,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["bison","flex","grammar","lex","parser","productivity","project","yacc"],"created_at":"2024-11-05T11:32:29.204Z","updated_at":"2025-04-04T23:31:09.310Z","avatar_url":"https://github.com/RaisinTen.png","language":"C++","readme":"\u003cp align=\"center\"\u003e\n    \u003ca href=\"#\"\u003e\n        \u003cimg src=\"https://github.com/RaisinTen/fs-make/raw/master/logo.svg\" width=\"320\"\n            alt=\"fs-make logo\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/RaisinTen/fs-make/actions\"\u003e\n        \u003cimg src=\"https://github.com/RaisinTen/fs-make/workflows/C/C++%20CI/badge.svg\"\n            alt=\"CI\"\u003e\u003c/a\u003e\n    \u003ca href=\"LICENSE\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/license/RaisinTen/fs-make\"\n            alt=\"LICENSE MIT\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\nMake your folder structure from its description with **`fs-make (folder structure make)`**!\n\n![example](https://github.com/RaisinTen/fs-make/raw/master/fs-make-demo.png)\n\n## Syntax\n\nNote that this is **not JSON** but a similar data-format. Here's what the Abstract Syntax Tree looks like.\n\n* Files are represented by the file name placed between a pair of double quotes (`\"`):\n    ```\n    \"file-name\"\n    ```\n\n* Directories are represented by the directory name in double quotes (`\"`) followed by a colon (`:`) and a comma-separated (`,`) set of file and directory representations between a pair of braces (`{}`):\n    ```\n    \"src\": {\n        \"main.cpp\",\n        \"CMakeLists.txt\",\n        \"build\": {\n            \"Makefile\",\n            \"boink\"\n        },\n        \"includes\": {\n        }\n    }\n    ```\n    When a directory contains only a single entity, the braces aren't necessary:\n    ```\n    \"i have one file\": \"one file\"\n    ```\n\n* The input file content can be like any of these:\n  * a file\n    ```\n    \"just a file\"\n    ```\n  * a directory\n    ```\n    \"lonely directory\": {\n        \"stuff\"\n    }\n    ```\n  * an unnamed set of entities like this:\n    ```\n    {}\n    ```\n    \nHere's what the Abstract Syntax Tree looks like:\n\n![grammar graph](https://github.com/RaisinTen/fs-make/raw/master/graphviz.svg)\n\n## Getting Started\n\n### Dependencies\n\nThe dependencies are:\n* `gcc`\n* `g++`\n* `flex`\n* `bison`\n* `tree`\n\nNo manual installation is required. The `configure` script installs the dependencies using a package manager. If you are using:\n\n#### macOS\n\nMake sure that you have [Homebrew](https://brew.sh/) installed.\n\n#### Windows\n\nInstall the [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/install-win10) or [Cygwin](https://cygwin.com/install.html) and make sure that you have [APT](https://salsa.debian.org/apt-team/apt) installed.\n\n#### Linux\n\nMake sure that you have [APT](https://salsa.debian.org/apt-team/apt) installed.\n\n### Building\n\nClone the repo with:\n```sh\n$ git clone https://github.com/RaisinTen/fs-make.git\n$ cd fs-make\n```\n\nUpdate your package lists and build **`fs-make`** using:\n```sh\n$ ./configure\n$ make\n$ make install\n```\n\n## Try it out\n\n1. Create a file describing the structure of your folder.\n2. Use `fs-make` to build the script:\n    ```sh\n    $ fs-make \u003cdescription-file-name\u003e \u003cscript-file-name\u003e\n    ```\n3. Run the script to generate the folder structure:\n    ```sh\n    $ . \u003cscript-file-name\u003e\n    ```\n4. To view it:\n    ```sh\n    $ tree -a \u003cdirectory-name\u003e\n    ```\n\n## Code of Conduct\n\nPlease refer to the [code of conduct](CODE_OF_CONDUCT.md) for the rules for interacting with this project.\n\n## Contributing\n\nPlease go through the [contributing](CONTRIBUTING.md) documentation to contribute to this project.\n\n## License\n\nThis project is licensed under the [MIT License](LICENSE).\n","funding_links":["https://github.com/sponsors/RaisinTen"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraisinten%2Ffs-make","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fraisinten%2Ffs-make","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraisinten%2Ffs-make/lists"}