arkade-lvlup
is a CLI tool designed to help users synchronize, install, and manage their tools using arkade
.
- Synchronize tools based on a configuration file.
- Install or reinstall specific tools.
- Remove tools.
- Update shell configuration to include
arkade-lvlup
in the PATH.
TODO: Include installation steps.
Here are the available flags and their explanations:
-f
: Force sync. This is only valid with-sync
or--sync
.-p
: Displayarkade
outputs.-sync
or-s
: Synchronize tools based on the configuration.-get
or-g [tool1,tool2,...]
: Install or reinstall specified tools.-remove
or-r [tool1,tool2,...]
: Remove specified tools.-config-shell
or-c
: Update the shell configuration to includearkade-lvlup
in the PATH.
-
Synchronizing tools based on a configuration:
arkade-lvlup -s
-
Forcefully synchronizing tools:
arkade-lvlup -s -f
-
Installing a tool:
arkade-lvlup -g [tool_name1,tool_name2,tool_name3,...]
-
Removing a tool:
arkade-lvlup -r [tool_name1,tool_name2,tool_name3,...]
-
Updating shell configuration:
arkade-lvlup -c
The configuration is stored in a YAML file and specifies which tools should be installed. Here is an example structure:
tools:
- tool1
- tool2
- tool3
When you synchronize using arkade-lvlup, it will ensure that the tools listed in the configuration are installed and any tools not in the list are removed.
./arkade-lvlup
├── LICENSE
├── README.md
├── arkade-lvlup
├── cmd
│ ├── get.go
│ ├── remove.go
│ ├── shellconfig.go
│ └── sync.go
├── config
│ ├── flags.go
│ ├── model.go
│ └── reader.go
├── go.mod
├── go.sum
├── handlers
│ ├── gethandler.go
│ ├── removehandler.go
│ ├── shellconfighandler.go
│ └── synchandler.go
├── main.go
├── shell
│ └── configurer.go
└── tools
├── config_utils.go
├── file_ops.go
├── general_utils.go
├── installer.go
├── remover.go
└── syncer.go
6 directories, 24 files
Our project uses GitHub Actions to automate the processes of building, testing, and releasing versions of the application. Here's a brief overview:
- Pushes to main: Every push to the main branch will trigger the build and test jobs.
- Pull Requests to main: Any PR opened against the main branch will also initiate the build and test workflows.
- Commit Message Triggers: Including the [FORCE BUILD] keyword in your commit message will force a build regardless of the branch you're working on.
- Tagging Releases: When a new semantic version tag (e.g., 1.2.3) is pushed to the repository, this will initiate the release process.
- Build & Test:
- Checkout the code from the repository.
- Setup the desired Go environment.
- Cache and download Go module dependencies.
- Run all tests in the project using go test ./....
- Release:
- Triggered after a successful build when a new tag is pushed.
- Creates a new release on GitHub using the tag name.
- Builds a binary named arkade-lvlup.
- Attaches the binary to the release as an asset.
We follow the versioning style of arkade, which is semantic versioning without the 'v' prefix. When you're ready to create a new release:
- Tag the commit: git tag 1.0.1.
- Push the tag: git push --tags.
The CI/CD pipeline will then automatically create a release for that version.
We welcome contributions! Please open an issue or submit a pull request if you would like to help improve arkade lvlup.
This project is licensed under the MIT License.