Notoriously Psychedelic Modules

    tender-cli

    0.2.2 • Public • Published

    Tender CLI

    A command line tool for interacting with ENTP's Tender API.

    Features

    • List and filter discussions from the command line
    • Output discussion lists in a variety of formats, including JSON and CSV
    • Show discussion details and comments
    • Create and reply to discussions
    • Resolve, acknowledge, queue and more actions are all supported
    • Credentials can be stored in a local configuration file for ease of use

    Installation

    Install with npm:

    $ npm install -g tender-cli
    

    If you don't already have Node.js installed, download and install it first.

    Usage

    Usage: tender [options] [command]
    
    Commands:
    
      list [options]            List discussions with optional filters
      show [options] [id]       Show single discussion with comments
      create [options]          Create a new discussion
      reply [options] [id]      Reply to an existing discussion
      ack [id]                  Acknowledge a discussion
      resolve [id]              Close a discussion
      reopen [id]               Reopen a discussion
      queue [options] [id]      Assign a discussion to a queue
      unqueue [options] [id]    Remove a discussion from a queue
      categorize [options] [id] Change a discussion's category
      delete [id]               Delete a discussion
      restore [id]              Restore a deleted discussion
      toggle [id]               Toggle a discussion from public to private   
    
    Options:
    
      -h, --help                   output usage information
      -V, --version                output the version number
      -u, --username <name>        set Tender username
      -p, --pass <password>        set Tender password
      -a, --api <token>            set Tender API token
      -d, --subdomain <subdomain>  set Tender subdomain name
    

    Basic example

    $ tender list --state pending
    
    ┌──────────┬─────────────────────────────────────────────┬────────────────┬──────────┬──────────┐
    │ Id       │ Title                                       │ Author         │ State    │ Age      │
    ├──────────┼─────────────────────────────────────────────┼────────────────┼──────────┼──────────┤
    │ 1234567  │ Login issue                                 │ John Smith     │ pending  │ 1 hour   │
    ├──────────┼─────────────────────────────────────────────┼────────────────┼──────────┼──────────┤
    │ 1234567  │ All of my permissions are gone!             │ Jane Smith     │ pending  │ 2 days   │
    └──────────┴─────────────────────────────────────────────┴────────────────┴──────────┴──────────┘
    

    Authentication

    Authentication via username/password or API token are both supported. These can either be specified on the command line itself or stored in a .tenderrc file located in your home directory. The file should follow the below format, though note that only username/password or token are required, not both.

    {
      "subdomain": "your-sub-domain",
      "username": "someone@somewhere.com",
      "password": "supersecret",
      "token": "your-api-token",
    }
    

    Example of command line auth:

    $ tender list --subdomain your-sub-domain --token your-api-token
    

    Listing discussions

    Usage: list [options]
    
    Options:
    
      -h, --help             output usage information
      -q, --queue <name>     filter by queue
      -s, --state <name>     filter by state
      -c, --category <name>  filter by category
      -t, --title <pattern>  filter by title pattern
      -m, --max <number>     max records to retrieve (defaults to 1000)
      -r, --reporter <name>  Specify the reporter to use
      -o, --output <name>    specify file name for csv reporters 
      --reporters            List available reporters
    

    Several filters and reporters are available for selecting discussions. Below are examples of some common filtering actions.

    List all pending discussions

    $ tender list -s pending
    

    List all open discussions in "Test" queue

    $ tender list -s open -q test
    

    List discussions in the "Bar" queue with "Foo" in the title

    $ tender list -t foo -q bar
    

    List all assigned discussions in the "Problems" category

    $ tender list -c problems -s assigned
    

    Discussion details

    Use the show command to get additional details on a specific discussion, including the comments.

    Usage: show [options] [id]
    
    Options:
    
      -h, --help             output usage information
      -r, --reporter <name>  Specify the reporter to use
      --reporters            List available reporters
    

    Example

    $ tender show 1234567
    
    Discussion #1234567
    =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    Title    : Login issue
    Author   : John Smith (john@smith.com)
    Created  : 11/15/2012 15:11 pm
    URL      : https://test.tenderapp.com/discussions/1234567
    State    : open
    Comments : 1
    Details  : [acknowledged] [responded] [public] [via web] 
    
    Description:
    
    I can't login to my account! Help!
    

    Creating discussions

    Usage: create [options]
    
    Options:
    
      -h, --help             output usage information
      -t, --title <name>     title for the new discussion [required]
      -c, --category <name>  category to post under [required]
      -b, --body <text>      the body of the new discussion [required]
      --private              set discussion to private
      -n, --name <name>      Name to create discussion under
      -e, --email <email>    Email to create discussion under
    

    Example

    $ tender create -c 'Problems' -t 'Big issue' -b 'The sky is falling!'
    

    Replying to discussions

    Usage: reply [options] [id]
    
      Options:
    
        -h, --help           output usage information
        -b, --body <text>    the body of the reply [required]
        --internal           set reply to internal
        -n, --name <name>    Name to reply from
        -e, --email <email>  Email to reply from
    

    Example

    $ tender reply 10672812 -b 'This is a public reply'
    $ tender reply 10672812 -b 'This is an internal only reply' --internal
    

    Discussion actions

    All discussion actions are supported through individual subcommands. For more information on each action, please see the discussion API documentation

    Examples

    $ tender acknowledge 10672629
    $ tender resolve 10672631
    $ tender queue 10672632 -q critical
    $ tender delete 10672633
    

    Discussion list reporters

    Table

    This reporter displays discussions in a table format with a few key columns. This is the default reporter.

    ┌──────────┬─────────────────────────────────────────────┬────────────────┬──────────┬──────────┐
    │ Id       │ Title                                       │ Author         │ State    │ Age      │
    ├──────────┼─────────────────────────────────────────────┼────────────────┼──────────┼──────────┤
    │ 1234567  │ Login issue                                 │ John Smith     │ pending  │ 1 hour   │
    ├──────────┼─────────────────────────────────────────────┼────────────────┼──────────┼──────────┤
    │ 1234567  │ All of my permissions are gone!             │ Jane Smith     │ pending  │ 2 days   │
    └──────────┴─────────────────────────────────────────────┴────────────────┴──────────┴──────────┘
    

    Basic

    This reporter displays a very simple list of discussion ids and titles.

    (2) discussions: 
    
    #1234567: Login issue
    #1234567: All of my permissions are gone!
    

    List

    This reporter outputs a vertical list of discussions with a few key fields.

    Displaying (2) discussions: 
    
    Discussion #1234567
    =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    Title  : Login issue
    State  : pending
    Author : John Smith
    Age    : 1 hour
    
    Discussion #1234567
    =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    Title  : All of my permissions are gone!
    State  : pending
    Author : Jane Smith
    Age    : 2 days 
    

    JSON

    This reporter will output a JSON file with all available columns. The file name defaults to tender_output.jsonin the current working directory, but can be specified with the --output command line option.

    CSV

    This reporter will output a CSV file with the same columns as the default Table reporter. The file name defaults to tender_output.csv in the current working directory, but can be specified with the --output command line options.

    CSVFull

    Same as above, but will output all available columns.

    Discussion detail reporters

    Basic

    This reporter will output the basic headers as well as the first comment on the discussion.

    Thread

    This is identical to the basic reporter but will show all comments on the discussion.

    $ tender show 1234567

    Discussion #1234567
    =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    Title    : Login issue
    Author   : John Smith (john@smith.com)
    Created  : 11/15/2012 15:11 pm
    URL      : https://test.tenderapp.com/discussions/1234567
    State    : open
    Comments : 1
    Details  : [acknowledged] [responded] [public] [via web] 
    
    Description:
    
    I can't login to my account! Help!
    
    ---------------------------------------------------------------------
    Date: 11/15/2012 15:15 pm                                  [internal]
    From: Support One (support@company.com) 
    
    Can someone look at this please?
    
    ---------------------------------------------------------------------
    Date: 11/15/2012 15:19 pm                                  
    From: Support Two (supportone@company.com) 
    
    Hi John, do you actually have an account here?
    

    Running the tests

    To run the test suite, invoke the following commands in the repository:

    $ npm install
    $ npm test
    

    Keywords

    none

    Install

    npm i tender-cli

    DownloadsWeekly Downloads

    15

    Version

    0.2.2

    License

    MIT

    Last publish

    Collaborators

    • cmoncrief