pupdates

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$