# Getting started
Tenpureto is a language-agnostic project scaffolding tool. It helps you skip the tedious part of the project setup and lets you focus on the actual logic.
# Installing tenpureto
On macOS you can install tenpureto
with Homebrew (opens new window):
$ brew tap rtimush/tap
$ brew install tenpureto
Alternatively, you can just download a binary from the GitHub Releases (opens new window) page.
On Linux you can download the static binary from the
GitHub Releases (opens new window) page, or install tenpureto
with
Linuxbrew (opens new window).
# Scaffolding a new project
First, you need to find a suitable template. There are not so many
open-source templates (opens new window) available yet (but you can always
create your own). If your company uses tenpureto
as a project templating solution, ask your
colleagues about the templates they use. For this guide, let's assume you want to create a Scala
project using
rtimush/scala-project-template (opens new window) as a template.
Run tenpureto create
providing the name of the template you want to use and the name of your project. It will ask you
for template features to include, refine some variable values, and after that will create a git repository with your new
project content.
$ tenpureto create --template rtimush/scala-project-template my-cool-project
✓ 1) scala Basic template to kickstart Scala projects
✓ 2) ci.travis Build on Travis CI
𐄂 3) ci.circle Build on Circle CI [conflict]
Organization [org.organization] my.organization
Project name [scala-project-template] my-cool-project
Created /workspace/my-cool-project/.
# Creating your own templates
Let's now create a very simple template for an Open Source project. Let's assume that every Open Source project needs a README file and a LICENSE which is either Apache License 2.0 or MIT. So, we will create a template with the following features:
master
license.apache
license.bsd
First we will create a new git repository for the template:
$ git init open-source-project-template
$ cd open-source-project-template
Create a README.md
file with the following content:
# open-source-project-template
Project description
As you see the README file contains some placeholder text. We can tell Tenpureto that this placeholders needs to be
replaced with user-provided values by creating a .template.yaml
:
variables:
Project name: open-source-project-template
Description: Project description
features:
- master:
description: Basic Open Source project
$ git add README.md .template.yaml
$ git commit -m "Basic template"
Now we can create two branches for different licenses
$ git checkout -b license.apache master
Copy Apache License 2.0 text to LICENSE
, and change the features
section of .template.yaml
(do not change the
variables
section):
features:
- master:
description: Basic Open Source project
- license.apache:
description: Apache License 2.0
Commit your changes:
$ git add LICENSE .template.yaml
$ git commit -m "Apache License 2.0"
Repeat the same for a BSD license branch (use license.bsd
as a branch name).
Now you can test your template:
$ cd /tmp
$ tenpureto create --template /full/path/to/open-source-project-template cool-project
✓ 1) master Basic Open Source project
✓ 2) license.apache Apache License 2.0
3) license.bsd BSD License
Add or remove a feature:
Project name [open-source-project-template] cool-project
Description [Project description] Trying out Tenpureto
Created /tmp/cool-project/.
$ cat /tmp/cool-project/README.md
# cool-project
Trying out Tenpureto
If you want to make you template available to other people, create a public repository on GitHub (or you can of course use any other Git hosting), and push all three branches to the remote.
For more details see the authoring templates section.