yoav-lavi / crispr

A scaffolding CLI

Home Page:https://yoav-lavi.github.io/crispr/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CRISPR 🧬

crispr is a CLI tool allowing to scaffold a project from a template with a .crispr.{toml,json} configuration file.

The template uses tokens that need to be replaced per scaffolded project (e.g. {{REPO_NAME}}), which are set in the configuration file as either user replaceable or with predetermined values.

crispr reads the configuration, asks the user for any needed values and makes the replacements as needed, showing a diff in the process.

crispr respects .gitignore files and only changes files that should be committed.

The .crispr.{toml,json} configuration file itself is automatically ignored when replacing tokens.

usage

Name

Named after the CRISPR-cas9 genetic engineering technique used for targeted gene editing

Supported Platforms

crispr is currently built for and tested on the following platforms:

  • x86_64-apple-darwin (Intel macOS)

Install

Homebrew

brew install yoav-lavi/tap/crispr

Binary

Binaries can be downloaded from the releases page

Usage

crispr [FLAGS] [PATH]

Arguments

  • <PATH> The path to run crispr ('.' by default)

Flags

  • -c, --config The path to an alternative configuration file ('.crispr.{toml,json}' by default)

  • -d, --dry Dry run - prints output without making changes

  • -h, --help Prints help information

  • -V, --version Prints version information

Configuration File

crispr uses a TOML or JSON configuration file detailing the tokens to be replaced.

In case both file types are found, the priority is as follows:

  • .crispr.toml
  • .crispr.json

Fields

  • replacements - a map (Option<HashMap<String, String>>) of replacement tokens to values
  • user_replacements - an array (Option<Vec<String>>) of replacements for which the user will be asked to supply a value

Example

  • .crispr.toml
user_replacements = [
    "{{REPO_NAME}}"
]

[replacements]
"{{YEAR}}" = "2021"
  • .crispr.json
{
  "replacements": {
    "{{YEAR}}": "2021"
  },
  "userReplacements": ["{{REPO_NAME}}"]
}

Limitations

  • crispr reads files line-by-line, so a token broken into multiple lines (e.g. by formatting) will not be replaced

Prior Art

  • crispr takes some inspiration and ideas from Ruplacer but does not intend to replace (pun may be intended) Ruplacer as the use case and goal are different.

Acknowledgements

crispr uses the following dependencies:

About

A scaffolding CLI

https://yoav-lavi.github.io/crispr/

License:MIT License


Languages

Language:Rust 100.0%