Go-starter allows to bootstrap a new project from a template. It uses Git repositories as templates and is shipped with batch of utilities to make bootstarpping easier.
Download latest release from release page using one of the commands below.
Mac OS
curl https://github.com/adobe/go-starter/releases/latest/download/go-starter-darwin-amd64.tgz \
-sSfL -o go-starter.tgz
Linux
curl https://github.com/adobe/go-starter/releases/latest/download/go-starter-linux-amd64.tgz \
-sSfL -o go-starter.tgz
Unpack content of the archive to a directory listed in $PATH
. The archive includes multiple binaries shipped with go-starter
.
tar -xvzf go-starter.tgz -C /usr/local/bin
rm go-starter.tgz
Run go-starter
to verify it's installed correctly.
Run go-starter with template repository URL and path where you would like to create a new project, for example:
go-starter https://github.com/adobe/go-service-starter awesome-project
You can specify full GitHub URL or just repository name (like so adobe/go-service-starter
).
Now, go-starter will clone go-service-starter into ./awesome-project
directory and run tasks defined in .starter.yml
. See "Templates" for more details.
You can skip cloning, for example if template is already cloned, but task failed to execute by passing -skip-clone
flag.
You can also pass additional variables (or pre-define variables instead of entering them using prompt) using -var
flag.
Templates are regular Git repositories like this one. If you try to use go-starter with random repository it will just clone it to your computer. To make use of go-starter you would need to let it know how to "post-process" template repository after it has been cloned. To do so, you need to define .starter.yml
configuration file.
After go-starter clones repository it tries to load .starter.yml
to execute additional actions and turn template into a project. This configuration file defines two sections:
questions
- list of questions to be asked from user, for example: project name, binary name, team etctasks
- list of commands to be executed (these can be globally installed binaries, or binaries packed with template itself)Here is an example of .starter.yml
:
questions:
- message: Application name
name: "application_name"
type: input
regexp: ^[a-z0-9\-]+$
help_msg: Must be lowercase characters or digits or hyphens
- message: GitHub owners
name: "github_owners"
type: input
regexp: ^[a-z0-9\-]+$
help_msg: Must be lowercase characters or digits or hyphens
tasks:
- command: [ "go-starter-replace" ]
- command: [ "rm", ".starter.yml" ]
This file defines two questions, asking user to enter application_name
and github_owners
variables. Then, go-starter will execute go-starter-replace
binary (shipped with go-starter) to replace placeholders in the files of the template, turning generic tempalte into something more specific to the project. Finally it will use standard rm
command to remove .starter.yml
.
Each template may contain custom tasks placed in .starter
folder. For example, you can create a bash script which would generate CODEOWNERS file and place it under .starter/make-owners
. Then, add it as tasks in .starter.yml
like so:
...
tasks:
...
- command: [ "./.starter/make-owners" ]
Custom scripts may access variables (answers to the questions) through environment variables. They are uppercased and prefixed with STARTER_
. Following example above, ./.starter/make-owners
may get github_owners
variable using STARTER_GITHUB_OWNERS
environment variable.
Go-starter ships with few additional binaries which can be used as tasks in .starter.yml
.
This binary recursively goes through files in current folder and replaces placeholders to variable values in files and their names. By default, placeholders are surrounded by <
and >
.
This binary automatically created GitHub repository, initiates local Git repository, adds GitHub remote and pushes changes to GitHub.
This binary configures drone integration and runs first build.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。