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, quickstart, project initializer, project skeleton
Motivations
Main features
- project generator as a standalone executable (no shared/system dependencies (so no python + pip + ...))
- a simple and generic project template (no specialisation to one ecosystem)
- template as simple as possible, like a
- copy or clone with file/folder renames without overwrite
- few search and replace into file
- template hosted as a local folder on the file system
- template hosted as a git repository on any host (not only public github)
- at root of the repository
- in subfolder of the repository
- in any revision (branch, tag, commit)
- template composed of other template
- composite template are regular standalone template
- composite template can be apply at root folder
- a fast enough project generator
Sub features
- dry mode (usefull to test)
- chain commands (eg: 'git init') (like a post-hook)
- raw command
- composite template include under conditions
- file / folder ignored under conditions (ignores'item in ffizer.yaml are defined as handlerbar expression)
- handlebars helpers
- transform strings (toUpperCase, toLowerCase, Capitelize,...)
- render content of GET url
- render content from https://gitignore.io
- suggestions welcomes ;-)
- ability to update / diff / overwrite existing file
Limitations
Some of the following limitations could change in the future (depends on gain/loss):
- no conditionals file or folder creation
- no framework X dedicated features
- no plugin and not extensible (without change the code)
- handlebars is the only template language supported (support for other is welcome)
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 0.12.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.
- 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
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