ffizer
ffizer is a files and folders initializer / generator. Create any kind (or part) of project from template.
keywords: file generator, project template, project scaffolding, quick start, project initializer, project skeleton
Features
- A native executable (cli)
- Install via download a standalone single file on system (no pre-requirements like
python
,ruby
,nodejs
,java
, ...). - Run as fast enough project generator.
- Run with dry mode (useful to test).
- Support self-upgrade.
- Install via download a standalone single file on system (no pre-requirements like
- A rust library
- Can be included into other tool
- Templates Authoring
- Can be used for any file & folder generation (no specialization to one ecosystem).
- Can start as simple as a folder to copy "as is".
- Can use the [Handlebars] template syntax for file content, extended with functions:
- To transform strings (toUpperCase, toLowerCase, Capitalize,...)
- To retrieve content via http get (eg
gitignore
fromgitignore.io
, license from spdx) - ...
- Can replace variables part in file and folder's name
- Can be composed of other templates (applied as layer)
- Can ignore file / folder under conditions
- Can store the content at the root of the folder or under the subfolder
template
- Templates Hosting[X] template hosted as
- On a local folder
- On a hosted git repository (public / private, github / bitbucket/ gitlab / ...)
- At the root of the repository
- In a subfolder of the repository
- In any revision (branch, tag, commit)
Usages
Install
|
via homebrew
via github releases
Download the binary for your platform from github releases, then unarchive it and place it your PATH.
via cargo
Run
➜ ffizer --help
ffizer 1.2.0
https://github.com/ffizer/ffizer
ffizer is a files and folders initializer / generator. Create any kind (or part) of project from template.
USAGE:
ffizer [FLAGS] <SUBCOMMAND>
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
-v, --verbose Verbose mode (-v, -vv (very verbose / level debug), -vvv) print on stderr
SUBCOMMANDS:
apply Apply a template into a target directory
help Prints this message or the help of the given subcommand(s)
upgrade Self upgrade ffizer executable
Self upgrade the executable
Apply a template
()
-
use a local folder as template
-
use a remote git repository as template
output
Authoring a template
see Template Authoring - ffizer WIP
Templates
- ffizer/templates_default: the default collections of templates for ffizer (WIP)
- davidB31 / cg-starter-multi-rust · GitLab Project template for Multi-Bot in Rust on CodinGame.
- davidB/templates: repository to host the my collections of templates to used with ffizer.
- github repo tagged ffizer-template
- samples (used for test, demo)
templates_default)
- test_1
- test_2 (demo of usage of gitignore.io)
- ffizer/template_sample: a simple template for ffizer used for demo and test
Build
Update CHANGELOG.md
Release a new version by bump patch
(or minor
or major
)
Alternatives
Generic
- Cookiecutter, lot of templates, require python + pip + install dependencies on system (automatic)
- Cookiecutter — Similar projects
- sethyuan/fgen: A file generator library to be used to generate project structures, file templates and/or snippets. Templates are based on mustache. require nodejs
- project_init in rust, use mustache for templating but I have some issues with it (project template creation not obvious, github only) I could contributes but I have incompatible requirements.
- skeleton, good idea but no template file, more like a script.
- porteurbars, very similar but I discovered it too late.
Specialized
specialized to a platform, build tool,...
- The web's scaffolding tool for modern webapps | Yeoman, nodejs ecosystem
- JHipster - Generate your Spring Boot + Angular/React applications! require java, dedicated to java web ecosystem, optionnated template (not generic)
- Giter8 require java + Conscript
- Typesafe activator, require java, target Scala ecosystem
- Maven – Archetypes require java + maven, target maven ecosystem
- cargo-generate, limited capabilities, target rust/cargo ecosystem