/tenpureto

Simple and flexible project templates

Primary LanguageHaskellBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

tenpureto Build Status

Introduction

tenpureto is a tool that allows to easily bootstrap software projects from a template. Almost every programming language ecosystem provides some bootstrapping solution. What makes tenpureto different is simplicity with a reasonable amount of flexibility:

  • Templates can be split into independent features that you can selectively include.
  • Projects created from a template can be updated to include upstream changes.
  • Contributing to a template is as easy as contributing to any other project.

Installation

macOS

You can install tenpureto with Homebrew:

$ brew tap rtimush/tap # you need it only once 
$ brew install tenpureto

Build from sources

You need to get Haskell Stack first.

If you are building on macOS, you will also need icu4c:

$ brew install icu4c 

Let Stack know the location of the icu4c library by adding the following snippet to your ~/.stack/config.yaml:

extra-lib-dirs:
  - /usr/local/opt/icu4c/lib

extra-include-dirs:
  - /usr/local/opt/icu4c/include 

On Linux you will need to install libicu-devel (on RPM-based distributions) or libicu-dev (on DEB-based distibutions).

Once you have everything set up, get tenpureto sources and run

# will install tenpureto binary to ~/.local/bin
$ stack install

or

# will run tenpureto without installing
$ stack run -- <tenpureto options here>

Usage

To create a new project run the following command:

$ tenpureto create --template <repository> <directory> 

where

  • <repository> — Git URL of a template repository (for GitHub you can just use organization/repo).
  • <directory> — where to create a project.

If you have a local clone of a Git repository with --mirror, you can pass its path instead of a Git URL as the <repository> argument.

You will be asked to choose a subset of template features you want to include, and to provide some variable values, and then the project will be created.

If you want to incorporate changes that were made in a template into a project that you previously created, run

$ tenpureto update <directory>