All Projects → ffizer → ffizer

ffizer / ffizer

Licence: CC0-1.0 License
ffizer is a files and folders initializer / generator. Create any kind (or part) of project from template.

Programming Languages

rust
11053 projects
shell
77523 projects
Handlebars
879 projects

Projects that are alternatives of or similar to ffizer

tokio-tun
Asynchronous allocation of TUN/TAP devices in Rust using tokio
Stars: ✭ 17 (-70.18%)
Mutual labels:  crates
altstack
Alpine.js, Laravel, and Tailwind. An alternative full-stack development solution.
Stars: ✭ 39 (-31.58%)
Mutual labels:  scaffolding
MysteryCrate
PLUGIN ARCHIVED. USE https://github.com/DaPigGuy/PiggyCrates instead!
Stars: ✭ 30 (-47.37%)
Mutual labels:  crates
pytorch-gpu-data-science-project
Template repository for a Python 3-based (data) science project with GPU acceleration using the PyTorch ecosystem.
Stars: ✭ 16 (-71.93%)
Mutual labels:  template-project
rtriangulate
A Rust implementation of the Bourke Delaunay triangulation algorithm.
Stars: ✭ 20 (-64.91%)
Mutual labels:  crates
jekyll-skeleton
Scaffolding to start with a Jekyll website
Stars: ✭ 27 (-52.63%)
Mutual labels:  scaffolding
doodba-copier-template
A Copier template for Doodba projects
Stars: ✭ 36 (-36.84%)
Mutual labels:  template-project
flaskage
Flaskage is a complete and carefully designed template for use with the Flask web framework.
Stars: ✭ 36 (-36.84%)
Mutual labels:  scaffolding
rails hotwire base
Rails + Hotwire base app
Stars: ✭ 54 (-5.26%)
Mutual labels:  template-project
python-data-science-project
Template repository for a Python 3-based (data) science project
Stars: ✭ 54 (-5.26%)
Mutual labels:  template-project
rs-poker
No description or website provided.
Stars: ✭ 32 (-43.86%)
Mutual labels:  crates
tfstage
TFStage: TensorFlow Project Scaffolding
Stars: ✭ 64 (+12.28%)
Mutual labels:  scaffolding
vuelectro
Bare minimum, simplistic, production ready scaffolding/build tool for developing with Electron and Vue.Js
Stars: ✭ 19 (-66.67%)
Mutual labels:  scaffolding
baby-chrome
Get your scaffolded chrome extension project. No more copy-paste!
Stars: ✭ 13 (-77.19%)
Mutual labels:  scaffolding
Happy
Happy 🥳 | Rocketseat 💜 - NLW 03 👩‍🚀
Stars: ✭ 61 (+7.02%)
Mutual labels:  template-project
fast-sg
Fast-SG: An alignment-free algorithm for ultrafast scaffolding graph construction from short or long reads.
Stars: ✭ 22 (-61.4%)
Mutual labels:  scaffolding
reactcci
React create component interactive CLI
Stars: ✭ 49 (-14.04%)
Mutual labels:  scaffolding
packman
Code scaffolding tool by SecureNative
Stars: ✭ 17 (-70.18%)
Mutual labels:  scaffolding
justgo
Skeleton for jump-starting a Go-powered microservice project with Docker and Go best-practices + easy code hot-reloading (for dev environments)!
Stars: ✭ 29 (-49.12%)
Mutual labels:  scaffolding
flutter ducafecat news getx
flutter2 + dio4 + getx4
Stars: ✭ 283 (+396.49%)
Mutual labels:  template-project

ffizer

crates license crate version

Project Status: Active – The project has reached a stable, usable state and is being actively developed. Actions Status test coverage

crates download GitHub All Releases

ffizer is a files and folders initializer / generator. It creates or updates any kind (or part) of project from template(s).

keywords: file generator, project template, project scaffolding, quick start, project bootstrap, project skeleton

asciicast: ffizer demo

Features

  • Create or update files and folder from one (or several) template(s).
  • A native executable (cli)
    • Install via download a standalone single file on system (no requirements like python, ruby, nodejs, java, ...).
    • Run as fast enough project generator.
    • Run with dry mode (useful to test).
    • Support self-upgrade.
  • 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 (like .gitignore from gitignore.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 sub-folder template
  • Templates Hosting
    • On a local folder
    • On a hosted git repository (public / private, github / bitbucket/ gitlab / ...)
      • At the root of the repository
      • In a sub-folder of the repository
      • In any revision (branch, tag, commit)

Suggestions are welcomes ;-)

A list of alternatives is available on the wiki, feel free to complete / correct.

Usages

Install

curl https://raw.githubusercontent.com/ffizer/ffizer/master/scripts/getLatest.sh | bash

Or download the binary for your platform from github releases, then un-archive it and place it your PATH.

via homebrew (MacOs & Linux)

brew install ffizer/ffizer/ffizer-bin
ffizer upgrade

via cargo

cargo install ffizer --force --features cli

Run

➜  ffizer --help

ffizer 2.1.0
https://github.com/ffizer/ffizer
ffizer is a files and folders initializer / generator.
It creates or updates any kind (or part) of project from template(s)

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)
    inspect             Inspect configuration, caches,... (wip)
    show-json-schema    Show the json schema of the .ffizer.yaml files
    test-samples        test a template against its samples
    upgrade             Self upgrade ffizer executable

Self upgrade the executable

➜  ffizer upgrade

Apply a template (to create or update)

➜  ffizer apply --help

ffizer-apply 2.1.0
https://github.com/ffizer/ffizer
Apply a template into a target directory

USAGE:
    ffizer apply [FLAGS] [OPTIONS] --destination <dst-folder> --source <uri>

FLAGS:
    -h, --help              Prints help information
    -y, --no-interaction    should not ask for confirmation (to use default value, to apply plan, to override, to run
                            script,...)
        --offline           in offline, only local templates or cached templates are used

OPTIONS:
        --confirm <confirm>               ask for plan confirmation [default: Never]  [possible values:
                                          Auto, Always, Never]
    -d, --destination <dst-folder>        destination folder (created if doesn't exist)
    -v, --variables <key-value>...        set variable's value from cli ("key=value")
        --rev <rev>                       git revision of the template [default: master]
        --source-subfolder <subfolder>    path of the folder under the source uri to use for template
        --update-mode <update-mode>       mode to update existing file [default: Ask]  [possible values:
                                          Ask, Keep, Override, UpdateAsRemote,
                                          CurrentAsLocal, ShowDiff, Merge]
    -s, --source <uri>                    uri / path of the template
  • use a local folder as template

    ffizer apply --source $HOME/my_templates/tmpl0 --destination my_project
  • use a remote git repository as template

    ffizer apply --source https://github.com/ffizer/template_sample.git --destination my_project

    output

    Configure variables
    
    project_name: my_project
    
    
    Plan to execute
    
      - mkdir "my_project/"
      - mkdir "my_project/dir_1"
      - copyraw "my_project/dir_1/file_1_1.txt"
      - mkdir "my_project/dir_2_my_project"
      - copyraw "my_project/dir_2_my_project/file_1_2.txt"
      - copyraw "my_project/file_1.txt"
      - copyrender "my_project/file_2.txt"
      - keep "my_project/file_2.txt"
      - copyrender "my_project/file_3.txt"
      - copyraw "my_project/file_4_my_project.txt"
      - copyrender "my_project/file_5_my_project.txt"
      - copyraw "my_project/file_6.hbs"

Authoring a template

Start with Template Authoring Tutorial

Few templates

Build

cargo install cargo-make --force
cargo make ci-flow

Update CHANGELOG.md

cargo make update-changelog
git add CHANGELOG.md
git commit -m ':memo: (CHANGELOG) update'

Release a new version by bump patch (or minoror major)

cargo make publish -- patch --dry-run
cargo make publish -- patch
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].