Skip to content

kick-project/kick

Repository files navigation

Github Actions Go Report Card License

Kick

For docs and getting started see https://kick-project.github.io/kick/

About

Kick is a cli tool to start a project using templates under version control or from a path on local disk.

Its features include

  • A way to add templates using a git remote location, URL or local path.
kick install go https://github.com/kick-project/template-go.git      # Install a go template
kick install pypi https://github.com/kick-project/template-pypi.git  # Install a pypi template
kick install custom_handle1 git@example.com:your/git/project.git     # Install from a private git repository
kick install custom_handle2 /path/to/template_directory              # Install a custom template from disk
  • A cli to start projects
kick start go ~/workspace/mygoproject
kick start pypi ~/workspace/mypypiproject
  • Simple templates using environment variables or dotenv variables from ${HOME}/.env.

    Dotenv files provide a way to create "environment" variables without polluting the users environment variables as they are only loaded when a program sourcing the .env file runs. Note that .env variables will not override existing environment variables. Using the sample variables below, a template file is easily populated.

    • ${PROJECT_NAME}: The directory name parsed from <path> when the command kick start <handle> <path> is called.
cat > Makefile <<EOF
# kick:render <- Tell "kick start ..." to render this file as a template. Stripped from the generated file.

_build:
  go build ./cmd/${PROJECT_NAME}

EOF
  • Template directory paths
mkdir -p pypi/src/\${PROJECT_NAME}/
touch pypi/src/\${PROJECT_NAME}/\${PROJECT_NAME}.py

Benefits of using Kick

Kick saves time and supercharges the creation of a project by using cookie cutter "starter files" that will work with the CI, add task automation using make, Rake, Invoke, add support to create packages such as gems, pypi, rpms, debs and many more files and tools that are needed in the development process.

Starting a project from scratch can be time consuming, there are a few CLI tools that help (E.G. go mod init ... Go project, rails new Ruby on Rails, pip-init Pypi project) but they tend to be specific to a type of project and may not include all the bells and whistles. Consider the following additions that a project may include...

  • CI Integration
    • Github Workflows: .github/workflows/...
    • Gitlab CI: .gitlab-ci.yml
  • Ignore files
    • Git ignore: .gitignore
    • Docker ignore: .dockerignore
  • Testing tools & libraries
  • Linters
  • Editor config
  • Task automation
    • Make: Makefile
    • Python Invoke: tasks.py
    • Ruby Rake: Rakefile

This can all be added to a template which can be called from the command line.

Documents

  • BUILD.md - Build and development guide