{"id":26544070,"url":"https://github.com/hmerritt/fspop","last_synced_at":"2026-02-03T01:33:28.479Z","repository":{"id":211904433,"uuid":"361048601","full_name":"hmerritt/fspop","owner":"hmerritt","description":"Automate the deployment of large scale file structures","archived":false,"fork":false,"pushed_at":"2024-12-12T12:33:17.000Z","size":1685,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-12T14:48:45.161Z","etag":null,"topics":["cli","file-structures","go","golang"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hmerritt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2021-04-24T01:58:24.000Z","updated_at":"2024-12-12T12:33:22.000Z","dependencies_parsed_at":"2023-12-11T14:59:04.063Z","dependency_job_id":null,"html_url":"https://github.com/hmerritt/fspop","commit_stats":null,"previous_names":["hmerritt/fspop"],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hmerritt%2Ffspop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hmerritt%2Ffspop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hmerritt%2Ffspop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hmerritt%2Ffspop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hmerritt","download_url":"https://codeload.github.com/hmerritt/fspop/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244898427,"owners_count":20528342,"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":["cli","file-structures","go","golang"],"created_at":"2025-03-22T03:17:14.708Z","updated_at":"2026-02-03T01:33:23.457Z","avatar_url":"https://github.com/hmerritt.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# fspop\n\nAutomate the creation of file structures using custom templates.\n\nfspop =\u003e **f**(ile) **s**(tructure) **pop**(ulate)\n\n![fspop cli](readme-image.png)\n\n## Usage\n\n### Create a new structure file\n\nThe fastest way to create a new structure is to use the `init` command.\n\n```bash\n$ fspop init [STRUCTURE_NAME]\n```\n\n### Deploy a structure\n\nDeploying a structure is as simple as calling `deploy` and giving the file name of the structure file.\n\n```bash\n$ fspop deploy [STRUCTURE_NAME]\n```\n\n## Defining a Structure File\n\n(Use `fspop init` to create a new structure file instantly)\n\nStructure files are written in YAML `.yaml` and require two things.\n\n1. entrypoint\n2. structure\n\nItems are assumed to be a files, folders are defined by having a slash `/` at the end.\n\n```yaml\n- file.mp3\n- folder/:\n      - another_folder/\n```\n\n`fspop` will run though the entire structure and create a file or directory for each item\n\n```yaml\nname: media\nentrypoint: path/to/media\n\nstructure:\n    - games/\n    - music/:\n          - file.mp3\n    - photos/:\n          - personal/\n          - family/\n```\n\n### Data variables\n\nFiles can be created with content added into them. This is done using `data` variables.\n\nThe name of a data variable can be anything you like, `example`, `readme`, and `image` are made up variable names that could be anything.\n\nThe value of a data variable can also be anything you like. `fspop` can load text, local files and even download URL content.\n\n-   text\n-   local file\n-   URL\n\nData variables are defined once, in the `data:` section, and then can be used for **multiple** files in the `structure:` section.\n\n```yaml\nname: data example\nentrypoint: fspop/data\n\ndata:\n    - example: text can be added to a file like this\n    - readme: ../path/to/local/file/README.md\n    - image: https://via.placeholder.com/400/771796\n    - earnings_report: https://example.com/earnings/report.pdf\n\nstructure:\n    - example.file: example\n    - readme.md: readme\n    - image.png: image\n    - earnings.pdf: earnings_report\n    - earnings-backup.pdf: earnings_report # data variables can be re-used\n```\n\n### Dynamic variables\n\n`fspop` can create many files/folders at once with one variable.\n\nOptions:\n\n-   `amount` : amount of files/folders to create (any number above 0)\n-   `data` : data variable to use to add content into files (all files created will have the data content)\n-   `type` : `file` or `folder` - type of item to create\n-   `name` : name of each item, `$num` is used to number each item (if name is `report ($num).pdf`, then the 50th file will be `report (50).pdf`)\n-   `padded` : `true` or `false` - pad name with `0`s so all items have the same length, `report (50)` -\u003e `report (050)`\n-   `start` : starting number for name `$num`\n\nThe `amount` option is **required** (the rest have default values).\n\nDynamic items are used by their name + a `$`:\n\n-   `$dynamicItem`\n\n```yaml\nname: data example\nentrypoint: fspop/data\n\ndata:\n    - earnings_report: https://example.com/earnings/report.pdf\n\ndynamic:\n    - dynamicItem:\n          - amount: 1001\n          - data: earnings_report\n          - type: file\n          - name: earnings_$num.pdf\n          - padded: true\n          - start: 50\n\n    - manyFolders:\n          - amount: 5000\n          - type: folder\n          - name: folder ($num)\n          - padded: true\n\nstructure:\n    - $dynamicItem\n    - folder/:\n          - $dynamicItem # dynamic variables can be re-used\n```\n\n## Commands\n\n| Command   | Description                                       |\n| --------- | ------------------------------------------------- |\n| `deploy`  | Creates file structure from config file           |\n| `display` | Print the directory tree of a structure file      |\n| `init`    | Creates a new structure config file               |\n| `list`    | List all structure files in the current directory |\n\n\u003cbr\u003e\n\n## License\n\nNONE: CLOSED SOURCE\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhmerritt%2Ffspop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhmerritt%2Ffspop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhmerritt%2Ffspop/lists"}