gitnim linux_x64
choosenim for choosey nimions
What Is It?
The aim of this tool is two-fold:
- Provide an easy way to install the Nim compiler and tools.
- Manage multiple Nim installations and allow them to be selected on-demand.
Basically, it gits nim for you.
Okay, But I Heard It Was Different. And, Like, Scary?
Yes, it’s different. But not in a scary way; it’s open and simple.
This program adds a git subcommand for Nim git nim
and installs itself
next to your Nim compiler so that if your compiler is in your PATH
, so is
gitnim.
It Installs Itself? Wait, Maybe It’s Already Installed…
No, nimpleton, it’s not already installed. 🤦
When you compile the source code, gitnim.nim
, the output is a binary adjacent
to your nim
compiler and named git-nim
.
This binary is detected by git
such that git nim
is a command you can run
on the command-line and it will do a thing.
Yeah, Okay, a git
Subcommand. But What Does It Do?
The git nim
subcommand allows you to choose from precompiled Nim releases and
download or install them by managing your Nim installation as any other git
repository.
So? Why Should I Care? I Already Have Nim Installed.
Yeah, well, you can keep using your current Nim installation. 🤷
The aim of this tool is two-fold:
- Provide an easy way to install the Nim compiler and tools.
- Manage multiple Nim installations and allow them to be selected on-demand.
If you don’t need either of these features, then gitnim is not for you.
So It’s a Git Repo with Branches Matching Nim Versions? Is That All?
This Nim repository also links to the distribution from https://github.com/nim-works/dist, which is a hand-curated monorepo holding the most useful Nim modules from the ecosystem.
Okay, So What Makes That a Feature I Should Care About?
When run, gitnim displays or switches branches in the Nim repository and updates the dist submodules to ensure you always have easy access to the latest features and fixes as matched to your active compiler.
Y’know, That Actually Makes A Lot Of Sense.
Yeah, I know. You’re welcome.
Installation
Clone the Repository
We use git for distribution; what else?
$ git clone https://github.com/nim-works/gitnim /somewhere
Add bin
to $PATH
A critical step; humor me on this one. The location of the compiler is used to infer the installation directory for gitnim itself.
$ export PATH=/somewhere/bin:$PATH
Build gitnim
You now have a statically-linked Nim binary for your Linux-x64 system, so you can immediately compile gitnim.
This will automatically install the gitnim binary next to the compiler
binary according to your PATH
, enabling the git nim
subcommand.
$ cd /somewhere
$ nim c gitnim/gitnim.nim
Usage
List Available Releases
With no additional arguments, git nim
will check the network for updates and
present the available Nim releases for selection.
The current distribution will be updated from the network, if necessary.
$ git nim
Choose a Release by Version
When a version is provided, git nim
will switch to that version immediately
without querying the network, provided the version exists locally.
The distribution will be updated without querying the network, if possible.
$ git nim 1.4.3
Choose a Release by Tag
When a tag is provided, git nim
will switch to the tagged version immediately
without querying the network, provided the tagged reference exists locally.
The distribution will be updated without querying the network, if possible.
$ git nim devel
$ git nim stable
Advanced Usage
Creating Your Own Nim Distribution
$ git checkout -b "my favorite nims"
Publishing Your Nim Distribution
$ git remote rename origin upstream
$ git remote add origin "git@github.com:your_name/gitnim.git"
$ git push --set-upstream origin "your branch name"
Adding a Custom Release Tag
$ git tag -a "tag_name" -m "your description"
Sharing Your Tags With Others
$ git push --tags
Revoking Your Tags With Others
$ git push --delete origin tag_name
Adding a Friend’s Tags
$ git remote add jeff https://github.com/jeff/gitnim
Using a Friend’s Tag
$ git nim jeff/1.3.3
Contributing
https://github.com/nim-works/gitnim
License
MIT