A long-lived project that still receives updates
Command-line connector for Foobara
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies

Runtime

>= 0.1.1, < 2.0.0
 Project Readme

Foobara::ShCliConnector

A command connector for Foobara that exposes commands via a shell command-line interface (CLI). This connector parses command-line arguments and routes them to Foobara commands, making it easy to build CLI tools from your Foobara commands.

  • Foobara::ShCliConnector
    • Installation
    • Usage
      • Connecting multiple commands in a CLI script
      • Single Command Mode
    • Development
    • Contributing
      • Reporting bugs or requesting features
      • Contributing code
    • License

Installation

Typical stuff: add gem "foobara-sh-cli-connector" to your Gemfile or .gemspec file. Or even just gem install foobara-sh-cli-connector if that's your jam.

Usage

Connecting multiple commands in a CLI script

require "foobara/sh_cli_connector"

class Greet < Foobara::Command
  inputs do
    who :string, default: "World"
  end
  result :string

  def execute
    build_greeting

    greeting
  end

  attr_accessor :greeting

  def build_greeting = self.greeting = "Hello, #{who}!"
end

connector = Foobara::CommandConnectors::ShCliConnector.new
connector.connect(Greet)
connector.run

Then run your CLI script:

$ ./cli_demo.rb
Usage: cli_demo.rb [GLOBAL_OPTIONS] [ACTION] [COMMAND_OR_TYPE] [COMMAND_INPUTS]

Available actions:

  run, help, describe, manifest

Default action: run

Available commands:

 Greet
$ ./cli_demo.rb help Greet
Usage: cli_demo.rb [GLOBAL_OPTIONS] Greet [COMMAND_INPUTS]

Command inputs:

 -w, --who WHO                    Default: World

$ ./cli_demo.rb Greet
Hello, World!
$ ./cli_demo.rb Greet -w Fumiko
Hello, Fumiko!

Single Command Mode

If you want to make a CLI script that only exposes one command, you can use single command mode:

connector = Foobara::CommandConnectors::ShCliConnector.new(single_command_mode: Greet)
connector.run

Now you can run this without specifying the command name:

$ ./greet-cli --help
Usage: greet-cli [INPUTS]

Inputs:

 -w, --who WHO                    Default: World
$ ./greet-cli --who Barbara
Hello, Barbara!

Development

Contributing

I would love help with this and other Foobara gems! Feel free to hit me up at miles@foobara.org if you think helping out would be fun or interesting! I have tasks for all experience levels and am often free to pair on Foobara stuff.

Reporting bugs or requesting features

Bug reports and feature requests can be made as github issues at https://github.com/foobara/sh-cli-connector

Contributing code

You should be able to fork the repo, clone it locally, run bundle and then rake to run the test suite and linter. Make your changes and push them up and open a PR! If you need any help please reach out and we're happy to help!

License

foobara-sh-cli-connector is licensed under your choice of the Apache-2.0 license or the MIT license. See LICENSE.txt for more info about licensing.