{"id":29651286,"url":"https://github.com/calmdownval/shapes","last_synced_at":"2025-07-22T05:06:31.748Z","repository":{"id":140762818,"uuid":"535394724","full_name":"CalmDownVal/shapes","owner":"CalmDownVal","description":"directory structure templating tool","archived":false,"fork":false,"pushed_at":"2025-04-01T11:00:39.000Z","size":21,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-01T11:33:16.848Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CalmDownVal.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"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}},"created_at":"2022-09-11T18:51:16.000Z","updated_at":"2025-04-01T11:00:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"a30965e8-3c5c-4c2d-b55f-70e4757a58bf","html_url":"https://github.com/CalmDownVal/shapes","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/CalmDownVal/shapes","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CalmDownVal%2Fshapes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CalmDownVal%2Fshapes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CalmDownVal%2Fshapes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CalmDownVal%2Fshapes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CalmDownVal","download_url":"https://codeload.github.com/CalmDownVal/shapes/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CalmDownVal%2Fshapes/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266430668,"owners_count":23927169,"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","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2025-07-22T05:06:31.078Z","updated_at":"2025-07-22T05:06:31.730Z","avatar_url":"https://github.com/CalmDownVal.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Shapes: Directory Structure Templates\n\n## Installing\n\nThe CLI scripts require NodeJS v18 or higher. To install the CLI simply clone\nthis repository anywhere on your system.\n\nTo make the `shapes` command available system-wide, add the bin directory to\nyour PATH variable:\n\n```sh\necho \"export PATH=$(pwd)/bin:\\$PATH\" \u003e\u003e ~/.zshenv\n```\n\nAlternately, you can symlink the appropriate script to where your shell will\nfind it:\n\n```sh\nln -s $(readlink -f ./bin/shapes) /usr/local/bin/shapes\n```\n\n## Configuring\n\nBy default the `shapes list` command will only list factory templates defined in\nthis repository. To add your own template repositories, create a\n`shapes-config.mjs` file in the root of the cloned repository in the following\nformat:\n\n```js\nexport default [\n  {\n    path: \"~/source/my-shapes-repo\", // path to the repository\n    main: \"master\", // the name of the main branch\n  },\n  // multiple repositories can be listed\n  // ...\n];\n```\n\n## Creating a Template\n\nAny directory can be used as a template. By default the script looks into the\n`/templates` directory in this repository, but can handle external paths, too.\nWhen applying a template, the directory structure and any non-template files are\ncopied as-is. Template files are expanded before copying.\n\nThe copying process only considers directories, files and symlinks; Other types\nare ignored. Make sure symlinks use relative paths and point to files within the\nrepository. They may break or lead to unexpected behavior otherwise.\n\n## Template Files\n\nTo make a template file, append `.template` after its normal extension. E.g.:\n`package.json.template` to define a template for a `package.json` file.\n\nTemplate files may contain `\u003c% ... %\u003e` tag pairs with JavaScript code between\nthem. This code must evaluate to a string.\n\n- Use the `ask(\u003cvarName\u003e, [defaultValue])` function to ask for user input.\n- Use the `env(\u003cvarName\u003e, [defaultValue])` function to read environment\n  variables.\n- Use the `ext(\u003ctemplatePath\u003e)` function to expand an external template.\n\nExample template:\n\n```txt\n{\n  \"name\": \"\u003c% ask(\"PACKAGE_NAME\") %\u003e\",\n  \"version\": \"1.0.0\",\n  \"license\": \"\u003c% ask(\"PACKAGE_LICENSE\", \"ISC\") %\u003e\"\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcalmdownval%2Fshapes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcalmdownval%2Fshapes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcalmdownval%2Fshapes/lists"}