All Projects β†’ vmchale β†’ Project Init

vmchale / Project Init

Licence: other
Project templates in rust

Programming Languages

rust
11053 projects
haskell
3896 projects
elm
856 projects

Projects that are alternatives of or similar to Project Init

Lc
licensechecker (lc) a command line application which scans directories and identifies what software license things are under producing reports as either SPDX, CSV, JSON, XLSX or CLI Tabular output. Dual-licensed under MIT or the UNLICENSE.
Stars: ✭ 93 (-10.58%)
Mutual labels:  command-line-tool
Blockshell
πŸŽ‰ Minimal Blockchain Learning CLI
Stars: ✭ 1,348 (+1196.15%)
Mutual labels:  command-line-tool
Simpleaudioindexer
Searching for the occurrence seconds of words/phrases or arbitrary regex patterns within audio files
Stars: ✭ 100 (-3.85%)
Mutual labels:  command-line-tool
Wildfish Django Starter
Django 2 cookiecutter starter project template.
Stars: ✭ 93 (-10.58%)
Mutual labels:  cookiecutter
Pytest Cookies
The pytest plugin for your Cookiecutter templates. πŸͺ
Stars: ✭ 96 (-7.69%)
Mutual labels:  cookiecutter
Terminal layout
The project help you to quickly build layouts in terminal,cross-platform(δΈ€δΈͺθ·¨εΉ³ε°ηš„ε‘½δ»€θ‘ŒuiεΈƒε±€ε·₯ε…·)
Stars: ✭ 98 (-5.77%)
Mutual labels:  command-line-tool
Virgil Cli
CLI tool to manage your Virgil account and applications.
Stars: ✭ 89 (-14.42%)
Mutual labels:  command-line-tool
Cookiecutter Lux Python
Cookiecutter template for an idiomatic Python project driven by Makefile
Stars: ✭ 102 (-1.92%)
Mutual labels:  cookiecutter
Api2html
Using the data from your API, generate the HTML on the fly! Server-side rendering of the mustache templates
Stars: ✭ 97 (-6.73%)
Mutual labels:  mustache
Ask Cli
Alexa Skills Kit Command Line Interface
Stars: ✭ 100 (-3.85%)
Mutual labels:  command-line-tool
Matrix Commander
simple but convenient CLI-based Matrix client app for sending and receiving
Stars: ✭ 90 (-13.46%)
Mutual labels:  command-line-tool
Helm Charts
Contains Helm charts for Kubernetes related open source tools
Stars: ✭ 95 (-8.65%)
Mutual labels:  mustache
Tooling
Advancing Node.js as a framework for writing great tools
Stars: ✭ 98 (-5.77%)
Mutual labels:  command-line-tool
Aliasme
A shell script to memorize your command in command line.
Stars: ✭ 92 (-11.54%)
Mutual labels:  command-line-tool
Scriban
A fast, powerful, safe and lightweight scripting language and engine for .NET
Stars: ✭ 1,360 (+1207.69%)
Mutual labels:  mustache
Django Project Template
Thorgate's Django project template - Django, React, Sass, optional Docker and more
Stars: ✭ 91 (-12.5%)
Mutual labels:  cookiecutter
Awesome React Generator
No more clicking around to create files in your react project! Awesome React Generator is Command Line Tool that let's you scaffold your components without leaving your terminal.
Stars: ✭ 98 (-5.77%)
Mutual labels:  command-line-tool
Awesome Cli
A curated list of awesome resources for building immersive CLI experiences.
Stars: ✭ 104 (+0%)
Mutual labels:  command-line-tool
Csv2db
The CSV to database command line loader
Stars: ✭ 102 (-1.92%)
Mutual labels:  command-line-tool
Wavefile
Create, read and write wav files according to the specs. ⭐️ 🎢 ❀️
Stars: ✭ 100 (-3.85%)
Mutual labels:  command-line-tool

project init (pi)

Build Status Windows build status

pi is a command-line utility to initialize projects. It is written in rust.

It is intended to provide something like cookiecutter, but faster.

Reasons to use pi:

  • You want to automate the process of starting a new project, for all your projects.
  • You want project initialization that's quick

Reasons to use pi over cookiecutter:

  • Templates are smaller. Define files you need in a .toml.
  • Fast. pi is 30x faster than cookiecutter when rendering the sample vim plugin template.
  • pi uses mustache, a logic-less language, for templates.
  • pi can initialize a darcs, pijul, mercurial, or git repository inside your projects
  • pi provides opinionated templates for many languages
  • pi is extensible in Rust

Reasons to not use pi over cookiecutter:

  • cookiecutter uses jinja templates, which are far more sophisticated.
  • pi is newer and presumably more buggy
  • cookiecutter is extensible in Python

Benchmarks (with Haskell's bench):

Tool Language Time (vim example plugin) Time (rust library)
pi init rust 10.10 ms 8.809 ms
pi new rust 6.672 ms 8.653 ms
cookiecutter python 317.1 ms 316.9 ms

Installation

Script

Enter the following in a command prompt:

curl -LSfs https://japaric.github.io/trust/install.sh | sh -s -- --git vmchale/project-init

Binary releases

The easiest way for most users is simply to download the prebuilt binaries. You can find binaries for various platforms on the release page.

Cargo

First, install cargo. Then:

 $ cargo install project_init

You will need to use the nightly release for this to work; if in doubt run

rustup run nightly cargo install project_init

Use

pi reads from $HOME/.pi_templates/ and your current directory. So, if you place a template in the $HOME/.pi_templates/idris/, you can initialize a project anywhere with

 $ pi init idris treesod

There is a repo containing pi templates here.

You can also use pi with built-in templates, viz.

 $ pi new haskell really-good-project
Finished initializing project in really-good-project/

Or to fetch a template from github:

 $ pi git vmchale/haskell-ats ambitious-insane-project

Examples

Configuration

Global configuration is via the $HOME/.pi.toml file. The following is an example:

license = "BSD3"         # set default license to BSD3 
version_control = "git"  # initialize new repositories with git
version = "0.1.0"        # start new projects at version 0.1.0

[author]
name = "Vanessa McHale"
email = "[email protected]"
github_username = "vmchale"

# put any custom keys you want under a [[user]] table
[[user]]
website = "https://vmchale.com"

Project-specific config lives in $PROJECT_NAME/template.toml. The following is an example for a vim plugin:

license = "BSD3"        # overrides global value if set
with_readme = true      # add README.md

[files]
files = ["syntax/{{ project }}.vim","plugin/{{ project }}.vim","doc/{{ project }}.txt"] # blank files
directories = ["doc","syntax","plugin"]
templates = ["vimball.txt"] # files to be processed

[config]
version = "0.1.0"
version_control = "darcs"

# put any custom keys you want below [[user]]
[[user]]
vim_org_username = "vmchale"

This will generate the following directory structure:

vim-plugin
β”œβ”€β”€ LICENSE
β”œβ”€β”€ README.md
β”œβ”€β”€ doc
β”‚  └── vim-plugin.txt
β”œβ”€β”€ plugin
β”‚  └── vim-plugin.vim
β”œβ”€β”€ syntax
β”‚  └── vim-plugin.vim
└── vimball.txt

For a more in-depth example, see here. This is a template based off the recursion schemes generator.

Templates

pi uses mustache for templating, via the rustache crate.

You can find examples and help on the mustache page, or you can my look at the example repo.

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].