The application that can be used for personal usage to manage jira from terminal.

Overview

Jira Terminal

This application can be used for personal usage to manage jira from terminal.

Installation

This application can be used in multiple platform.

Arch Linux

This package is availabe in aur repository as jira-terminal-bin

Debian/Ubuntu

On debian based system, the deb file is available in releases. You can download latest release from there. Please make sure libc is installed in your system.

Cargo

If you already have a Rust environment set up, you can use the cargo install command: cargo install jira-terminal

Cargo will build the jira-terminal binary and place it in $HOME/.cargo/bin. You can also setup Rust toolchain from Rust official site

Manual Installation from Github

Compiled binary versions of jira-terminal are uploaded to GitHub when a release is made. You can install jira-terminal manually by downloading a release , extracting it, and copying the binary to a directory in your $PATH, such as /usr/local/bin.

Usage

When running the application for first time, you will be asked with following values.

  • hostname [This will be used to identify the jira hostname to be used.]
  • email [Email address you use to login with the application.]
  • token [You can obtain the app password from the link specified in the application]

After that, you can use following commands for help.

jira-terminal help
jira-terminal help list
jira-terminal help transition
jira-terminal help alias
jira-terminal help detail
jira-terminal help fields
jira-terminal help update
jira-terminal help new
jira-terminal help assign
jira-terminal help comment
JIRA Terminal 1.1.0
Amrit Ghimire <[email protected]>
This is a command line application that can be used as a personal productivity tool for interacting with JIRA

USAGE:
    JIRA Terminal [SUBCOMMAND]

FLAGS:
    -h, --help       
            Prints help information

    -V, --version    
            Prints version information


SUBCOMMANDS:
    alias         Configuration for alias. One of add,list or remove is required.
    assign        Assign a ticket to user.
    comment       List or add comments to a ticket. Default action is adding.
    detail        Detail of a JIRA tickets..
    fields        List of possible Fields for details...
    help          Prints this message or the help of the given subcommand(s)
    list          List the issues from JIRA.
    new           Create a new ticket.
    transition    Transition of ticket across status.
    update        Update a field for a ticket

List of Tickets

jira-terminal-list 
List the issues from JIRA.

USAGE:
    jira-terminal list [FLAGS] [OPTIONS]

FLAGS:
    -h, --help       Prints help information
    -M, --me         Issues assigned to you.
    -V, --version    Prints version information

OPTIONS:
    -A, --alias <ALIAS>               Save the applied options as an alias. You can use it with jql option later.
    -a, --assignee <ASIGNEE>...       Assignee username or email to filter with.
    -c, --component <COMPONENT>...    Component name or ID to filter with.
    -d, --display <DISPLAY>            Comma separated list of fields to display.
                                      Possible options for fields are: 
                                      key,resolution,priority,assignee,status,components,creator,reporter,issuetype,project,summary
                                      
                                      You can pass alias as option for display. You can save alias using alias
                                      subcommand for the application.
                                      
                                       Default options are
                                       key,summary,status,assignee
                                                         
    -e, --epic <EPIC>...              EPIC name or issue key of epic to filter with.
    -f, --filter <FILTER>...          Filter name or filter id that you saved in JIRA.
    -j, --jql <JQL>                   JQL Query or alias to JQL query to filter with.
    -l, --label <LABEL>...            Search for issues with a label or list of labels.
    -m, --main <PARENT>...            Search for subtask of a particular issue.
    -P, --priority <PRIORITY>...      Search for issues with a particular priority.
    -p, --project <PROJECT>...        Project Code to filter with.
    -r, --reporter <REPORTER>...      Search for issues that were reported by a particular user.
    -s, --sprint <SPRINT>...          Search for issues that are assigned to a particular sprint.
    -S, --status <STATUS>...          Search for issues that have a particular status.
    -T, --text <TEXT>                 This is a master-field that allows you to search all text fields for issues.
    -t, --type <TYPE>...              Search for issues that have a particular issue type. 

You can specify the following fields multiple time to filter by multiple values.
assignee, component, epic, filter, label, main, priority, project, reporter, sprint, status, type.

For example to fetch list of tickets in Backlog and In progress, you can use
jira-terminal list -s Backlog -s 'In Progress'

Transition

jira-terminal-transition 
Transition of ticket across status.

USAGE:
    jira-terminal transition [FLAGS] <STATUS> --ticket <TICKET>

FLAGS:
    -h, --help       Prints help information
    -l, --list       List the possible transitions.
    -V, --version    Prints version information

OPTIONS:
    -t, --ticket <TICKET>    Ticket ID from JIRA.

ARGS:
    <STATUS>    Status or alias of status to move the ticket to.

Alias

jira-terminal-alias 
Configuration for alias. One of add,list or remove is required.

USAGE:
    jira-terminal alias [FLAGS] <NAME> --add <add> --list --remove

FLAGS:
    -h, --help       Prints help information
    -l, --list       List the alias saved.
    -r, --remove     List the alias saved.
    -V, --version    Prints version information

OPTIONS:
    -a, --add <add>    Value to associate with provided alias name.

ARGS:
    <NAME>    Name of alias. (Required except for list option)

Sample usage:

  • jira-terminal alias -l
  • jira-terminal alias alias_name -a "Alias Value"
  • jira-terminal alias -r alias_name

Detail

jira-terminal-detail 
Detail of a JIRA tickets..

USAGE:
    jira-terminal detail [OPTIONS] <TICKET>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -f, --fields <fields>    Comma separated lists of fields or alias to show.
                             Possible options are: 
                             key,summary,description,status,issuetype,priority,labels,assignee,components,creator,reporter,project,comment
                             
                             You can use all to show all fields.
                             Default selection are:
                             key,summary,description
                                                 

ARGS:
    <TICKET>    Ticket id for details.

Fields

jira-terminal-fields 
List of possible Fields for details...

USAGE:
    jira-terminal fields <TICKET>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

ARGS:
    <TICKET>    Ticket id for details.

Update

jira-terminal-update 
Update a field for a ticket

USAGE:
    jira-terminal update <TICKET> --field <field> --value <value>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -f, --field <field>    Key of field to update. You can use jira-terminal fields <TICKET> to see possible set of
                           keys.
    -v, --value <value>    Value of the field to update.

ARGS:
    <TICKET>    Ticket ID to update

New

jira-terminal-new 
Create a new ticket.

USAGE:
    jira-terminal new [FLAGS] [OPTIONS] --main <main> --project <project>

FLAGS:
    -h, --help       Prints help information
    -M, --mininal    Only summary and description will be asked if not available.
    -q, --quiet      Do not ask for missing options.
    -V, --version    Prints version information

OPTIONS:
    -a, --assignee <assignee>          Assignee email of ticket
    -c, --components <components>      Comma separated list of components of ticket
    -C, --custom <custom>              Comma separated value pair for custom fields. You can use alias in value or key
                                       itself. Example- "customfield_12305:value,alias_to_key:value2. You can use fields
                                       subcommand to check the list of custom fields available. 
    -d, --description <description>    Description of ticket
    -l, --labels <labels>              Comma separated list of labels.
    -m, --main <main>                  Main tiecket to create the sub-ticket.
    -p, --priority <priority>          Priority Of the ticket.
    -P, --project <project>            Project Key to create the ticket.
    -s, --summary <summary>            Summary of ticket
    -t, --type <type>                  Issue type for new ticket.

Assign

jira-terminal-assign 
Assign a ticket to user.

USAGE:
    jira-terminal assign --ticket <ticket> --user <user>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -t, --ticket <ticket>    Ticket to use.
    -u, --user <user>        Assign the ticket to the provided user.

Comment

jira-terminal-comment 
List or add comments to a ticket. Default action is adding.

USAGE:
    jira-terminal comment [FLAGS] [OPTIONS] --ticket <ticket>

FLAGS:
    -h, --help       Prints help information
    -l, --list       List all the comments of a ticket.
    -V, --version    Prints version information

OPTIONS:
    -b, --body <body>        Body of the comment. To mention someone, you can use @(query) The query can include jira
                             username or display name or email address.
    -t, --ticket <ticket>    Ticket to use.

Notes

  • The credentials and other configuration are stored in a file ~/.jira_terminal_configuration.json. The base64 encoded version of credentials are only written tin the configuration file.
Comments
  • cargo install jira-terminal failed

    cargo install jira-terminal failed

    error[E0658]: use of unstable library feature 'str_split_once': newly added
      --> /Users/songtianyi/.cargo/registry/src/github.com-1ecc6299db9ec823/jira-terminal-1.4.0/src/jira/new_issue.rs:59:58
       |
    59 |                 if let Some((key, value)) = custom_field.split_once(":") {
       |                                                          ^^^^^^^^^^
       |
       = note: see issue #74773 <https://github.com/rust-lang/rust/issues/74773> for more information
       = help: add `#![feature(str_split_once)]` to the crate attributes to enable
    
    error[E0658]: use of unstable library feature 'str_split_once': newly added
       --> /Users/songtianyi/.cargo/registry/src/github.com-1ecc6299db9ec823/jira-terminal-1.4.0/src/jira/new_issue.rs:108:26
        |
    108 |         let split = main.split_once("-");
        |                          ^^^^^^^^^^
        |
        = note: see issue #74773 <https://github.com/rust-lang/rust/issues/74773> for more information
        = help: add `#![feature(str_split_once)]` to the crate attributes to enable
    
    error: aborting due to 2 previous errors
    
    For more information about this error, try `rustc --explain E0658`.
    error: failed to compile `jira-terminal v1.4.0`, intermediate artifacts can be found at `/var/folders/db/wkkn_2bs71s7gj97hh1rw40c0000gn/T/cargo-installbiQt2Y`
    
    Caused by:
      could not compile `jira-terminal`
    
    opened by songtianyi 1
  • Error codes and messages not reported

    Error codes and messages not reported

    Steps to reproduce

    1. Run jira-terminal detail for an issue that does not exist
    $ jira-terminal --version
    JIRA Terminal 1.2.0
    
    # when issue FOO-123456 does not exist
    $ jira-terminal detail FOO-123456
    Error occured when searching tickets.
    Err(Status(404, Response[status: 404, status_text: Not Found, url: https://example.atlassian.net/rest/api/2/issue/FOO-123456]))
    $ echo $?
    0
    
    1. Exit code is 0 and error message is printed on STDOUT instead of STDERR

    Expected results

    1. A non-zero exit code is reported when jira-terminal exits with an error
    2. Error messages are printed on STDERR instead of STDOUT

    Why this would be useful

    When using jira-terminal inside a script, it's important to know if the tool encountered an error. That is what the non-zero exit code is for. Additionally, it's useful to separate result output from error output because of usage like:

    result="$(jira-terminal detail FOO-123456)"
    

    In this scenario, typically you only want successful output to be captured into the result variable. That way error output is still printed to the user running the script.

    opened by justinhoward 1
  • Allow specifying multiple statuses

    Allow specifying multiple statuses

    When listing my issues, it'd be helpful to be able to filter on "New Request,In Review,To Do" or some other similar syntax.

    Note I was able to do jira-terminal list -j 'assignee = "[email protected]" AND status != "Closed"' so this issue is low priority, I guess.

    opened by chx 1
  • Bump regex from 1.5.4 to 1.5.5

    Bump regex from 1.5.4 to 1.5.5

    Bumps regex from 1.5.4 to 1.5.5.

    Changelog

    Sourced from regex's changelog.

    1.5.5 (2022-03-08)

    This releases fixes a security bug in the regex compiler. This bug permits a vector for a denial-of-service attack in cases where the regex being compiled is untrusted. There are no known problems where the regex is itself trusted, including in cases of untrusted haystacks.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • jira-terminal doesn't display more than 50 tasks

    jira-terminal doesn't display more than 50 tasks

    What happens?

    jira-terminal list displays at most 50 tasks.

    What should happen?

    jira-terminal list should be able to display all tasks matching the given criteria (i.e., all tasks, all tasks selected by the given JQL clause with -j etc.

    opened by mbork 0
  • `jira-terminal` output doesn't have newline in the end

    `jira-terminal` output doesn't have newline in the end

    Screenshot 2021-05-29 at 21 48 42

    Commands such as list do end with a new line.

     $ uname -a
    Darwin speyside.local 20.4.0 Darwin Kernel Version 20.4.0: Fri Mar  5 01:14:14 PST 2021; root:xnu-7195.101.1~3/RELEASE_X86_64 x86_64
    

    Using alacritty with and without t-mux.

    opened by ahirner 0
  • Tasks for First releases

    Tasks for First releases

    • [x] Setup Basic API Backbone
    • [x] Setup util for transition
    • [x] Setup Clap for system argument parsing
    • [x] Add Feature to list transitions
    • [x] Add feature to list tickets by certain filter
    • [x] Allow user to specify Alias and use it
    • [x] Allow user to enter jql or alias for list feature
    • [x] Allow user to move the ticket among the transition
    • [x] Allow user to view summary and description for a ticket
    • [x] Allow user to create a new JIRA Ticket
    • [x] Add feature to view possible fields and view custom fields as well in detail view
    • [x] Allow user to update the fields value
    • [x] Allow user to assign the ticket
    • [x] Allow user to view comment and add comment
    enhancement 
    opened by amritghimire 0
  • Implement XDG base directory specification

    Implement XDG base directory specification

    https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html describes how most freedesktop software (which includes Linux) interacts with user configuration. Please consider implementing it.

    good first issue hacktoberfest-accepted hactoberfest 
    opened by ghost 0
  • Can't log in to self-hosted Jira with API Key

    Can't log in to self-hosted Jira with API Key

    I generated an API key to connect to my company's Jira instance, but it does not seem to work. Set up fails with:

    thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Status(401, Response[status: 401, status_text: , url: https://jira.vonage.com/rest/api/3/user/[email protected]])', src/config/cache.rs:29:42
    note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    

    I know this is not a lot of useful information, but I don't know exactly what to do do debug it.

    I surmise this might be related to the Jira instance being set up with Okta SSO. Any guesses?

    edit: seems the instance is using the de.resolution.apitokenauth plugin for API token authentication, if that could be the cause..

    help wanted up-for-grabs 
    opened by danielkza 12
Releases(v2.0.0)
Owner
Amrit Ghimire
Coding for passion
Amrit Ghimire
dua (-> Disk Usage Analyzer) is a tool to conveniently learn about the usage of disk space of a given directory

dua (-> Disk Usage Analyzer) is a tool to conveniently learn about the usage of disk space of a given directory. It's parallel by default and will max

Sebastian Thiel 1.8k Jan 2, 2023
A CLI tool which can help you automatically kill process of your choice. Useful for freeing up memory and CPU usage!

Quickiller There are always programs such as chrome that keep eating up your resources even when closed! The only way to prevent this is to kill all o

Codingsquirrel 1 Dec 8, 2021
ask.sh: AI terminal assistant that can read and write your terminal directly!

ask.sh: AI terminal assistant that read from & write to your terminal ask.sh is an AI terminal assistant based on OpenAI APIs such as GPT-3.5/4! What'

hmirin 5 Jun 20, 2023
A lightweight terminal tool to manage processes in Unix machines.

TTV v0.0.1 TTV (term-task-viewer) is a lightweight tool to view and manage active processes in Unix machines. It provides an easy interface with vim-l

Caio Ishikawa 9 Aug 29, 2023
Testing out if Rust can be used for a normal Data Engineering Pipeline.

RustForDataPipelines Testing out if Rust can be used for a normal Data Engineering Pipeline. Check out the full blog post here. https://www.confession

Daniel B 7 Feb 17, 2023
A command-line tool for re-packaging an epub that has been unzipped. Can also be used as a library.

?? zaino A command-line tool for re-packaging an epub that has been unzipped. Can also be used as a library. Installation To use zaino as a library, a

Zachary Golba 3 Aug 17, 2023
Tool that was built quickly for personal needs, you might find it useful though

COPYCAT Produced with stable-diffusion Clipboard (copy/paste) history buffer for terminal emulators, MAC OS gui and VIM* environment usage. Rrequireme

Dragan Jovanović 4 Dec 9, 2022
A fun rust terminal program so you can make Christmas trees!

Xmastree 2021 A fun christmas tree where you can add ornaments! Then, you can export the file into either: a rust file a txt file About Taking a break

Junhao 2 Dec 21, 2021
zigfi is an open-source stocks, commodities and cryptocurrencies price monitoring CLI app, written fully in Rust, where you can organize assets you're watching easily into watchlists for easy access on your terminal.

zigfi zigfi is an open-source stocks, commodities and cryptocurrencies price monitoring CLI app, written fully in Rust, where you can organize assets

Aldrin Zigmund Cortez Velasco 18 Oct 24, 2022
A small command-line application to view images from the terminal written in Rust.

A small command-line application to view images from the terminal written in Rust. It is basically the front-end of viuer

Atanas Yankov 1.9k Jan 3, 2023
A tiny library and application for animating text in the terminal.

?? snailshell A tiny library and application for animating text in the terminal. ?? It's so easy to add some flair to your text RPGs or console progra

null 45 Mar 5, 2023
Zenith - sort of like top or htop but with zoom-able charts, CPU, GPU, network, and disk usage

Zenith - sort of like top or htop but with zoom-able charts, CPU, GPU, network, and disk usage

Benjamin Vaisvil 1.6k Jan 4, 2023
Memory usage monitor for process trees

gotta-watch-em-all Executes a process with given arguments and monitors, logs when memory usage grows to a new peak. Example: cargo run -- cargo -- bu

Aaron Friel 8 Dec 8, 2022
Coppers is a custom test harnass for Rust that measures the energy usage of your test suite.

Coppers Coppers is a test harness for Rust that can measure the evolution of power consumptions of a Rust program between different versions with the

Thijs Raymakers 175 Dec 4, 2022
Calculate a player's skill level using Elo, DWZ, Ingo, TrueSkill, Glicko and Glicko-2 algorithms known from their usage in chess and online games.

skillratings Skillratings allows you to calculate the player's skill instantly in 1v1 matches or after tournaments/rating periods with a list of resul

null 10 Dec 30, 2022
Blazingly fast Rust CLI app to sync data from a folder of excel workbooks into generated c# code for unity usage

Extensions supported ( .xls, .xlsx, .xlsm, .xlsb, .xla, .xlam, .ods ) Speed Test Image shows the results of 5000defs synced from 2 workbooks and 5 she

null 4 Feb 16, 2023
A small script in rust to get the cpu usage in %'s with a gradient color for the text

cpu_usage-polybar A small script in rust to get the cpu usage in %'s with a gradient color for the text To get it to work on your PC you will have to

Sara 4 Apr 18, 2023
App to collect ram/cpu usage from OS and show it in pretty graphs

System info collector This is simple app to collect data about system cpu and memory usage over time. After collecting results into csv file, html fil

Rafał Mikrut 3 Jul 11, 2023
Scan the symbols of all ELF binaries in all Arch Linux packages for usage of malloc_usable_size

Scan the symbols of all ELF binaries in all Arch Linux packages for usage of malloc_usable_size (-D_FORTIFY_SOURCE=3 compatibility)

null 3 Sep 9, 2023