GGem

A gem utility CLI.

$ cd /my/projects
$ ggem -h
Usage: ggem [COMMAND] [options]

Options:
        --version
        --help

Commands:
  generate (g) # Create a gem given a GEM-NAME
$ ggem generate mygem
created gem in /my/projects/mygem
initialized gem git repo
$ cd mygem/
$ ggem -h
Usage: ggem [COMMAND] [options]

Options:
        --version
        --help

Commands:
  generate (g) # Create a gem given a GEM-NAME
  build    (b) # Build mygem-0.0.1.gem into the pkg directory
  install  (i) # Build and install mygem-0.0.1.gem into system gems
  push     (p) # Push built mygem-0.0.1.gem to https://rubygems.org
  tag      (t) # Tag v0.0.1 and push git commits/tags
  release  (r) # Tag v0.0.1 and push built mygem-0.0.1.gem to https://rubygems.org

Usage

Generate

$ ggem generate -h
Usage: ggem generate [options] GEM-NAME

Options:
        --version
        --help

Description:
  Create a gem given a GEM-NAME
$ ggem generate mygem
$ git commit -m "Gem created with ggem"

The generate command creates a folder and files for developing, testing, and releasing a gem. It is safe to run on existing gem folders, adding/overwriting where necessary.

  • creates lib and gem files similar to bundle gem (as of Bundler 1.2.4)
  • creates test files
  • adds TODO entries in files where user input is needed
  • source control using Git
  • test using Assert

You can also call this command using the g alias: ggem g -h.

Build

$ ggem build -h
Usage: ggem build [options]

Options:
        --version
        --help

Description:
  Build mygem-0.0.1.gem into the pkg directory

The build command creates a .gem file and copies it into the pkg/ directory. You can also call this command using the b alias: ggem b -h.

Install

$ ggem install -h
Usage: ggem install [options]

Options:
        --version
        --help

Description:
  Build and install mygem-0.0.1.gem into system gems

The install command first builds a .gem file and then installs it. The command is the equivalent of running ggem build && gem install pkg/mygem-0.0.1.gem. You can also call this command using the i alias: ggem i -h.

Push

Usage: ggem push [options]

Options:
        --version
        --help

Description:
  Push built mygem-0.0.1.gem to https://rubygems.org

The push command first builds a .gem file and then pushes it to a gem host. The command is the equivalent of running ggem build && gem push pkg/mygem-0.0.1.gem --source https://rubygems.org. You can also call this command using the p alias: ggem p -h.

Using a custom gem host

To override the default https://rubygems.org push host, add a metadata entry to the .gemspec file:

# ...
gem.["allowed_push_host"] = "https://gems.example.com"
# ...

Now GGem will now use the allowed push host when pushing/releasing the gem.

$ ggem push -h
Usage: ggem push [options]

Options:
        --version
        --help

Description:
  Push built mygem-0.0.1.gem to https://gems.example.com

Tag

$ ggem tag -h
Usage: ggem tag [options]

Options:
        --version
        --help

Description:
  Tag v0.0.1 and push git commits/tags

The tag command will tag the current git commit with the version data from the .gemspec file. It then pushes any commits and tags. The command is the equivalent of running git tag -a -m "Version {version}" v{version} && git push && git push --tags. You can also call this command using the t alias: ggem t -h.

Release

$ ggem release -h
Usage: ggem release [options]

Options:
        --version
        --help

Description:
  Tag v0.0.1 and push built mygem-0.0.1.gem to https://rubygems.org
  (macro for running `ggem tag && ggem push`)

As the help message says, this command is just a macro for running ggem tag && ggem push. You can also call this command using the r alias: ggem r -h.

Installation

$ gem install ggem

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am "Added some feature")
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request