{"id":29176826,"url":"https://github.com/rustyneuron01/kickstart","last_synced_at":"2026-04-17T22:31:33.717Z","repository":{"id":164359327,"uuid":"532572436","full_name":"rustyneuron01/kickstart","owner":"rustyneuron01","description":null,"archived":false,"fork":false,"pushed_at":"2022-09-04T15:07:10.000Z","size":974,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-01T17:44:30.158Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","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/rustyneuron01.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}},"created_at":"2022-09-04T15:01:05.000Z","updated_at":"2023-03-18T05:30:13.000Z","dependencies_parsed_at":null,"dependency_job_id":"5f7a4aca-6360-4e0c-8e0e-4fbc219f9c46","html_url":"https://github.com/rustyneuron01/kickstart","commit_stats":null,"previous_names":["victoryfox19931116/kickstart","fcbtc1116/kickstart","toptrendev0829/kickstart","rustyneuron01/kickstart"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rustyneuron01/kickstart","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustyneuron01%2Fkickstart","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustyneuron01%2Fkickstart/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustyneuron01%2Fkickstart/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustyneuron01%2Fkickstart/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rustyneuron01","download_url":"https://codeload.github.com/rustyneuron01/kickstart/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustyneuron01%2Fkickstart/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31948393,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-17T17:29:20.459Z","status":"ssl_error","status_checked_at":"2026-04-17T17:28:47.801Z","response_time":62,"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":[],"created_at":"2025-07-01T17:30:51.188Z","updated_at":"2026-04-17T22:31:33.685Z","avatar_url":"https://github.com/rustyneuron01.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# kickstart\n\nA CLI tool to easily get a new project up and running by using pre-made templates.\nThis is a slightly more powerful version of an equivalent tool in Python, [cookiecutter](https://github.com/audreyr/cookiecutter). It is an alternative to NodeJS projects such as [Yeoman](https://yeoman.io/) or [Slush](https://github.com/slushjs/slush).\n\n[![Crates.io](https://img.shields.io/crates/v/kickstart.svg)](https://crates.io/crates/kickstart)\n\n![kickstart.gif](./kickstart.gif)\n\n## Installation\n\n`kickstart` is available only through crates.io:\n\n```bash\n$ cargo install kickstart\n```\n\nOr as a pre-built binary [on the Releases page](https://github.com/Keats/kickstart/releases).\n\nRun `kickstart --help` for a full listing of the available commands and their flags/options.\n\n## Features\n\n- Cross-platform: Windows, Mac and Linux supported\n- Single binary: no need to install a virtualenv or anything else\n- Simple to use\n- Directory names and filenames can be templated: `{{ repo_name }}/{{author}}.md` is a valid path\n- All templating done through [Tera](https://tera.netlify.com/docs/) - a template engine inspired by Jinja2\n- Choose your own adventure: it supports conditional questions based on previous answers\n- It can load templates from a local directory or from a Git repository\n- It has conditional cleanup to not let irrelevant files in the output directory after generation\n- Templates can be made for any kind of projects/languages\n\nThe main drawback compared to cookiecutter is the lack of hook scripts support, which can be mitigated a bit by the conditional cleanup.\n\n[builtin]: https://tera.netlify.com/docs/#built-in-filters\n\nLastly, since Windows does not allow `|` in file paths, you may use a [tera built-in filter][builtin]\nby using the `$$` separator instead.\n\nNote that, in file templates, you should keep using `|` for filtering, as the `$$` syntax is only for files and directories. Keep in mind the characters `()` are not allowed on Windows so do not use filter parameters if you want to be cross-platform.\n\n## Try it out\n\n```bash\n# From the root of this repo\n$ kickstart examples/super-basic\n$ kickstart examples/complex -o Hello\n# Anywhere\n$ kickstart https://github.com/Keats/kickstart -s examples/super-basic\n$ kickstart https://github.com/Keats/kickstart-sample -o sample\n```\n\n## Creating your own template\nCreating a template is fairly simple: create files and then just add a `template.toml` in the root folder. Here is a description of all the fields available in it:\n\n```toml\n# Required, name of the template\nname = \"Django\"\n# Optional, longer form description\ndescription = \"A fully-featured Django template\"\n# Required, the version of the kickstart schema, currently only `1` is used\nkickstart_version = 1\n# Optional, the URL of the template\nurl = \"https://google.com\"\n# Optional, a list of authors for this template\nauthors = [\n\n]\n# Optional, a list of keywords for this template\nkeywords = [\n\n]\n# Optional, those files will NOT be copied over when generating the template\n# Use it to remove template-specific like its CI or its README/docs\nignore = [\n    \"README.md\",\n    \"CONTRIBUTING.md\",\n    \".travis.yml\",\n    \"docs\",\n]\n# If this is set, kickstart will use this directory as a base for the template instead of\n# the root directory. This is useful when your template has its own documentation/CI/etc and you don't want\n# to ignore it.\ndirectory = \"some-directory\"\n# Optional, a list of patterns. All files matching one of the patterns will\n# be copied over without going through Tera.\n# Use it for files that contain syntax similar to Tera for example\ncopy_without_render = [\n    \"*.html\",\n]\n\n# Optional, a list of cleanup actions to do.\n# All paths listed will be deleted if the `name` has the value `value` after\n# the questions have been answered and the project generated.\ncleanup = [\n    { name = \"spa\", value = true, paths = [\"{{ project_name }}/templates/\"]},\n    { name = \"auth_method\", value = \"none\", paths = [\"{{ project_name }}/docs/auth.md\"]},\n]\n\n# A list of variables, the schema is explained in detail below\n[[variables]]\nname = \"project_name\"\ndefault = \"my-project\"\nprompt = \"What is the name of this project?\"\nvalidation = \"^([a-zA-Z][a-zA-Z0-9_-]+)$\"\n\n[[variables]]\nname = \"database\"\ndefault = \"postgres\"\nprompt = \"Which database do you want to use?\"\nchoices = [\"postgres\", \"mysql\", \"sqlite\"]\n\n[[variables]]\nname = \"pg_version\"\ndefault = \"10.4\"\nprompt = \"Which version of Postgres?\"\nchoices =  [\n    \"10.4\",\n    \"10.3\",\n    \"10.2\",\n    \"10.1\",\n    \"9.6\",\n    \"9.5\",\n    \"9.4\",\n    \"9.3\",\n]\nonly_if = { name = \"database\", value = \"postgres\" }\n\n[[variables]]\nname = \"auth_method\"\ndefault = \"jwt\"\nprompt = \"How are users going to be authenticated?\"\nchoices = [\"jwt\", \"sessions\", \"none\"]\n\n[[variables]]\nname = \"sentry\"\ndefault = true\nprompt = \"Do you want to add Sentry integration?\"\n\n[[variables]]\nname = \"spa\"\ndefault = false\nprompt = \"Is the frontend a SPA?\"\n\n[[variables]]\nname = \"js_framework\"\ndefault = \"React\"\nprompt = \"Which JS framework do you want to setup?\"\nchoices =  [\n    \"React\",\n    \"Angular\",\n    \"Vue\",\n    \"None\",\n]\nonly_if = { name = \"spa\", value = true }\n\n[[variables]]\nname = \"typescript\"\ndefault = true\nprompt = \"Do you want to use TypeScript?\"\nonly_if = { name = \"spa\", value = true }\n\n```\n\nA variable has the following required fields:\n\n- `name`: the name of the variable in Tera context\n- `default`: the default value for that question, `kickstart` uses that to deduce the type of that value (only string, bool and integer are currently supported)\n- `prompt`: the text to display to the user\n\nAnd three more optional fields:\n\n- `choices`: a list of potential values, `kickstart` will make the user pick one\n- `only_if`: this question will only be asked if the variable `name` has the value `value`\n- `validation`: a Regex pattern to check when getting a string value\n\n## List of templates\n\n- [Rust CLI application](https://github.com/Keats/rust-cli-template)\n\n## Changelog\n\n### 0.3.0 (unreleased)\n\n- Update dependencies\n\n### 0.2.1 (2020-02-07)\n\n- Allow using `$$` for filters in filenames/directories\n\n### 0.2.0 (2020-01-09)\n\n- Update all dependencies\n- Add the `directory` field to change the template directory away from the current one\n- VCS files are not automatically ignored anymore\n\n### 0.1.8 (2018-09-30)\n\n- Allow loading templates from a subdirectory\n\n### 0.1.7 (2018-08-09)\n\n- Work with Git aliases\n- The crate now works as a library as well as a binary\n\n### 0.1.6 (2018-08-02)\n\n- Add a `--no-input` flag to the main command to generate a template from defaults\n- Validate that a template only uses allowed TOML types (String, integer and boolean) in `validate` command\n- Better question UI\n\n### 0.1.5 (2018-07-31)\n\n- Fix git clone command\n\n### 0.1.4 (2018-07-31)\n\n- Fix missing error display impl\n- Fix TOML error not showing up\n- Fix multi-layered questions being asked when they shouldn't\n\n### 0.1.3 (2018-07-31)\n\n- Add pattern to match in the question when there is on\n\n### 0.1.2 (2018-07-31)\n\n- Add optional `validation` field to validate a string against a regex\n- Add colours and boldness to CLI\n- Use `git` command rather than git2 crate to avoid some build issues\n- Add `cleanup` field to template definition for post-generation cleanup\n- Add `validate` command to diagnose errors in a `template.toml` file\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frustyneuron01%2Fkickstart","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frustyneuron01%2Fkickstart","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frustyneuron01%2Fkickstart/lists"}