6 releases (1 stable)
1.0.0 | Jan 5, 2023 |
---|---|
0.2.1 | Dec 30, 2022 |
0.1.2 | Dec 7, 2022 |
0.1.0 | Nov 29, 2022 |
#2082 in Command line utilities
21 downloads per month
205KB
5K
SLoC
projectctl
CLI tool to manage project.
Getting started
- Install from binary
VERSION=1.0.0
# Linux x64
curl -Lfo /usr/local/bin/projectctl https://github.com/leroyguillaume/projectctl/releases/download/v$VERSION/projectctl-$VERSION-linux-x64
# Linux aarch64
curl -Lfo /usr/local/bin/projectctl https://github.com/leroyguillaume/projectctl/releases/download/v$VERSION/projectctl-$VERSION-linux-aarch64
# MacOS x64
curl -Lfo /usr/local/bin/projectctl https://github.com/leroyguillaume/projectctl/releases/download/v$VERSION/projectctl-$VERSION-macos-x64
# MacOS ARM
curl -Lfo /usr/local/bin/projectctl https://github.com/leroyguillaume/projectctl/releases/download/v$VERSION/projectctl-$VERSION-macos-aarch64
sudo chmod +x /usr/local/bin/projectctl
# Allow projectctl to source environment variables automatically when you're entering into a directory present in ~/.projectctl/allowed-dirs
# If you're using bash
echo 'eval "$(projectctl hook bash)"' >> ~/.bashrc
source ~/.bashrc
# If you're using zsh
echo 'eval "$(projectctl hook zsh)"' >> ~/.zshrc
source ~/.zshrc
- Install from cargo
cargo install projectctl
# Allow projectctl to source environment variables automatically when you're entering into a directory present in ~/.projectctl/allowed-dirs
# If you're using bash
echo 'eval "$(projectctl hook bash)"' >> ~/.bashrc
source ~/.bashrc
# If you're using zsh
echo 'eval "$(projectctl hook zsh)"' >> ~/.zshrc
source ~/.zshrc
- Install from source
git clone https://github.com/leroyguillaume/projectctl
cargo install --path projectctl
# Allow projectctl to source environment variables automatically when you're entering into a directory present in ~/.projectctl/allowed-dirs
# If you're using bash
echo 'eval "$(projectctl hook bash)"' >> ~/.bashrc
source ~/.bashrc
# If you're using zsh
echo 'eval "$(projectctl hook zsh)"' >> ~/.zshrc
source ~/.zshrc
Project
To create a new project from a template, you can use new
subcommand.
By default, leroyguillaume/projectctl-templates is used as templates repository. Each directory matches a template. Feel free to open a pull request to add one if you want! You can override it by using --git
option.
Liquid is using as template engine. Each file with .liquid
extension will be rendered. You can templatize filenames.
projectctl injects some variables:
name
that has for value the project namedescription
that has for value the project description (can be set with-d
option, unset by default)env
that contains all environment variablesgit
that contains default git configuration
You can also define any variable you want but keep in mind that you will have to set it when you run command by adding --values
option.
Examples:
projectctl new rs-lib my-project-name
projectctl new --values '{"repository-url":"https://github.com/username/project-name"}' rs-lib my-project-name
projectctl automatically updated ~/.projectctl/allowed-dirs
.
When you want to delete a project, you can run the following command to make sure everything is clean-up:
projectctl destroy my-project-name
Configuration files
When you run projectctl env
, these configuration files are loaded (from least to most priority):
projectctl.yml
projectctl.local.yml
Note that you can override these locations with option -c
(or --config
).
All configuration files must match this JSON schema.
You can find here some configuration examples.
Dependencies
~25–40MB
~768K SLoC