lita-cmd

Run scripts from your lita machine and get the output back.

Install

Add lita-cmd to your Lita instance’s Gemfile:

ruby gem "lita-cmd"

Configuration

Config Option Description Type Notes
scripts_dir Full path to location of scripts String required
stdout_prefix Prefix for text returned to STDOUT String  
stderr_prefix Prefix for text returned to STDERR String  
output_format Format string used to encapsulate code String  
command_prefix Command to use for executing scripts String  

Example

```ruby Lita.configure do |config| # Lita CMD - required parameters config.handlers.cmd.scripts_dir = “/path/to/dir/you/expose”

# Lita CMD - optional parameters

# Set the output format. Default: “%s” # Note that %s will contain the returned text config.handlers.cmd.output_format = “/code %s”

# Set the prefix of stdout and stderr. config.handlers.cmd.stdout_prefix = “” config.handlers.cmd.stderr_prefix = “ERROR: “

# Set the prefix for running scripts. config.handlers.cmd.command_prefix = “run “

end ```

Usage

In your chatroom, try one of these commands

lita cmd list

Query the configured directory for filenames and return the list

lita cmd <file>

Execute a file in the configured directory

Group Control

You can control what groups have access to your Lita scripts.

In your scripts directory make a sub directory named after each of your groups. Only users that belong to these groups can list and execute the scripts inside them.

This is the basic directory structure

scripts/ |- devops/ | - secret_script |- script1 |- script2

When you run lita cmd list you will only see scripts that you have access to. For example:

``` me: lita cmd list

lita: devops/secret_script script1 script2

me: lita cmd devops/secret_script

lita: Executing the secret script ```

Notes

  • The user name of the calling user will be saved in an environment variable called LITA_USER.
  • Make sure that your files are executables (chmod +x FILE)
  • Make sure that your files have the proper sheband (#!/bin/bash)

Todo

  • [x] Include support for directory-based access control
  • [ ] Help text for individual commands
  • [ ] Add tests