First 'jim' beta is available!
The first beta of jim has been released!
Jim is a build and release tool for Ruby. It explicitly only supports pure-Ruby gems.
If you’ve used Bork, Jim will likely feel familiar.
The recommended installation method is to download the packed jim.rb file:
curl -L https://github.com/duckinator/jim/releases/download/1.0.0b1/jim.rb -o jim.rb
Basic Usage
The most basics commands are “build” (to build a gemfile) and “clean” (to remove the build directory).
~/dev/duckinator/jim$ ls
bin/ lib/ spec/ Gemfile.lock LICENSE.txt README.md
exe/ sig/ Gemfile jim.gemspec Rakefile Steepfile
~/dev/duckinator/jim$ jim.rb build
Name: jim
Version: 1.0.0b1
Output: /home/puppy/dev/duckinator/jim/build/jim-1.0.0b1.gem
~/dev/duckinator/jim$ ls build/
checksums.yaml.gz data.tar.gz jim-1.0.0b1.gem metadata.gz
~/dev/duckinator/jim$ jim.rb clean
~/dev/duckinator/jim$ ls
bin/ lib/ spec/ Gemfile.lock LICENSE.txt README.md
exe/ sig/ Gemfile jim.gemspec Rakefile Steepfile
~/dev/duckinator/jim$
Packed Gems
Jim can “pack” a gem into a single file, as long as it has no dependencies.
~/dev/duckinator/jim$ jim.rb pack
build/pack/jim.rb
~/dev/duckinator/jim$ ruby build/pack/jim.rb
Usage: jim [COMMAND] [OPTIONS] [ARGS...]
Commands
jim signin
jim signout
jim build
jim clean
jim pack
jim release
jim help
~/dev/duckinator/jim$
Making A New Release
Jim can release gems via GitHub Releases, and eventually also push to gem hosts.
In order to use GitHub Releases, you need to set two pieces of metadata in your gemspec:
spec.metadata["jim/github_repo"] = "duckinator/jim"
spec.metadata["jim/gem_host"] = "https://gem-server.example"
If you already have spec.metadata["allowed_push_host"] specified, you can use this variant:
spec.metadata["jim/gem_host"] = spec.metadata["allowed_push_host"]
You also need to create a Fine-grained Personal Access Token on GitHub
with “Contents” permissions, and set the JIM_GITHUB_TOKEN environment variable accordingly.
With all of that in place, you can now do jim release:
~/dev/duckinator/jim$ jim.rb release
Packing gem...
Building gem...
Creating GitHub release 1.0.0b1 as a draft (commit=8e7b731c7bb0405f6816cad101fa218ea2943687)
Adding asset jim.rb to release (original file: build/pack/jim.rb)
Adding asset jim-1.0.0b1.gem to release (original file: /home/puppy/dev/duckinator/jim/build/jim-1.0.0b1.gem)
FIXME: Actually publish /home/puppy/dev/duckinator/jim/build/jim-1.0.0b1.gem to https://rubygems.pkg.github.com/duckinator
Publishing GitHub release.
~/dev/duckinator/jim$