atlssncli 0.0.3
Simple command-line client unifying access to Atlassian® services.
License: Apache License 2.0

atlssncli
#################################################

.. image::	https://img.shields.io/travis/bkryza/atlssncli.svg
    :target: https://travis-ci.org/bkryza/atlssncli

.. image:: https://img.shields.io/pypi/v/atlssncli.svg
    :target: https://pypi.python.org/pypi/atlssncli

.. image:: https://img.shields.io/pypi/l/atlssncli.svg
    :target: https://pypi.python.org/pypi/atlssncli

.. image:: https://img.shields.io/pypi/pyversions/atlssncli.svg
    :target: https://pypi.python.org/pypi/atlssncli

Simple command-line client unifying access to Atlassian_ ® services.

.. role:: bash(code)
   :language: bash


.. contents::

Overview
========
atlssncli_ is a simple command-line utility written in Python
enabling easy, context-based access to various features of Atlassian®
services over REST API. The context can be specified in the configuration
file in terms of current board or project, and also is extracted
automatically from the Git branch of the current working directory.

The goal of this project is to provide a concise command-line
interface for everyday tasks involving sprint, issue and build
management. atlssncli_ focuses on simplicity over completeness,
to provide as quick as possible access to most commonly used features,
assuming that more complex can be achieved otherwise, e.g. using web
interface or other command line clients.

Please note, that atlssncli_ is tested with Jira® version 7.12.3 and Bamboo®
version 6.9.2 only.

Installation
============

.. code-block:: bash

	pip install atlssncli

Configuration
=============

Configuration file should be placed in `~/.atlssncli/config.ini`:

.. code-block:: bash

	[common]
	username = username
	password = password
	version = 6
	active_project = BKP

	[jira]
	endpoint = https://jira.example.com/rest/api/latest

	[agile]
	endpoint = https://jira.example.com/rest/agile/latest
	board = 7
	sprint_duration = 14

	[bamboo]
	endpoint = https://bamboo.example.com/rest/api/latest
	component1 = BKP-CMP1
	component2 = BKP-CMP2
	component3 = BKP-CMP3

Autocompletion
--------------

Bash
~~~~
Add the following line to your `~/.bashrc`:

.. code-block:: bash

    eval "$(_ATLSSN_COMPLETE=source_bash atlssn)"


Zsh
~~~
Add the following line to your `~/.zshrc`:

.. code-block:: bash

    eval "$(_ATLSSN_COMPLETE=source_zsh atlssn)"


Basic usage
===========

...

Command reference
=================

info
----

Show information about services.

Show information about JIRA® service
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: bash

    atlssn info jira

Show information about Bamboo® service
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: bash

    atlssn info bamboo

agent
-----

Bamboo® agents information, REST API for agents only supports a single method.

Show information about Bamboo® agents
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. code-block:: bash

    atlssn agent list

project
-------

Manage projects in the Jira® and Bamboo® services.

List all available projects
~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: bash

    atlssn project list

Select currently active project
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: bash

    atlssn project select <project_key>

Get information about specific project
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: bash

    atlssn project info [<project_key>]

List project components
~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: bash

    atlssn project list-components [<project_key>]

List project issue types
~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: bash

    atlssn project list-issue-types [<project_key>]

board - manage Jira® boards
---------------------------

Get board backlog
~~~~~~~~~~~~~~~~~
.. code-block:: bash

    atlssn board backlog [-a|--assignee <user_id>] [-q|--jql <jql_query>]

    # Examples
    atlssn board backlog -q 'status = "Open" AND assignee = "bkryza"'
    atlssn board backlog -a bkryza

Get board list
~~~~~~~~~~~~~~
.. code-block:: bash

    atlssn board list

Set default board
~~~~~~~~~~~~~~~~~
.. code-block:: bash

    atlssn board select <board_id>

Get board status
~~~~~~~~~~~~~~~~
.. code-block:: bash

    atlssn board status [<board_id>]

sprint - manage sprints
-----------------------
Below commands, which accept optional sprint_id,
will act on active sprint when sprint_id is not provided.

List all sprints or sprints in a given state
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: bash

    atlssn sprint list [--active|--future|--closed]

Create sprint
~~~~~~~~~~~~~
.. code-block:: bash

    atlssn sprint create [-n|--name <name>]
                         [-s|--start-date YYYY-MM-DD]
                         [-d|--duration <days>]

Rename sprint
~~~~~~~~~~~~~
.. code-block:: bash

    atlssn sprint rename <sprint_id> <new_name>

Start sprint
~~~~~~~~~~~~
.. code-block:: bash

    atlssn sprint start <sprint_id> [<start_date> [<duration>]]

Stop sprint
~~~~~~~~~~~
.. code-block:: bash

    atlssn sprint stop <sprint_id>

Get sprint status
~~~~~~~~~~~~~~~~~
.. code-block:: bash

    atlssn sprint status [<sprint_id>]

List sprint issues
~~~~~~~~~~~~~~~~~~
.. code-block:: bash

    atlssn sprint issues [<sprint_id>]

List sprint issues by assignee
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: bash

    atlssn sprint issues [<sprint_id>] --assignee johndoe

List sprint issues by status
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: bash

    atlssn sprint issues [<sprint_id>] --resolved --closed

issue - manage issues
---------------------

Get issue types for active project
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: bash

    **atlssn issue types

Get issue types for specific project
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: bash

    **atlssn issue types <project_id>

Create issue
~~~~~~~~~~~~
.. code-block:: bash

	**atlssn issue create <summary> [-t|--type <issue_type>]
	                              [-a|--assignee <username>]
	                              [-r|--reporter <username>]
	                              [-i|--priority <priority>]
	                              [-l|--labels <label>,<label>,...,<label>]
	                              [-d|--description <text>]
	                              [-x|--fix-versions <versions>]
	                              [-c|--components <component>,...,<component>]

Edit issue
~~~~~~~~~~
.. code-block:: bash

	**atlssn issue edit <issue_id> [-t|--type <issue_type>]
	                             [-a|--assignee <username>]
	                             [-r|--reporter <username>]
	                             [-i|--priority <priority>]
	                             [-l|--labels <label>,<label>,...,<label>]
	                             [-d|--description <text>]
	                             [-x|--fix-versions <versions>]
	                             [-c|--components <component>,...,<component>]

Get issue status
~~~~~~~~~~~~~~~~
.. code-block:: bash

		atlssn issue status <issue_id>

Assign issue
~~~~~~~~~~~~
.. code-block:: bash

		atlssn issue assign <issue_id> <username>

Get issue changelog
~~~~~~~~~~~~~~~~~~~
.. code-block:: bash

		**atlssn issue changelog <issue_id>

Add issue comment
~~~~~~~~~~~~~~~~~
.. code-block:: bash

		**atlssn issue comment <issue_id> <comment>

Change issue state
~~~~~~~~~~~~~~~~~~
.. code-block:: bash

		**atlssn issue update <issue_id> <comment>

Link issues
~~~~~~~~~~~
.. code-block:: bash

    **atlssn issue link <issue_id> <outward_issue_id>

List issue attachments
~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: bash

    **atlssn issue attachments <issue_id>

Add issue attachment
~~~~~~~~~~~~~~~~~~~~
.. code-block:: bash

		**atlssn issue attach <issue_id> <file_path>

Delete issue attachment
~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: bash

		**atlssn issue detach <issue_id> <file_name>

List possible issue transitions
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: bash

		**atlssn issue transitions <issue_id>

Transition issue to different state
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: bash

		**atlssn issue transition <issue_id> <state_name>

List possible issue resolutions
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: bash

		**atlssn issue resolutions <issue_id>

Resolve issue
~~~~~~~~~~~~~
.. code-block:: bash

		**atlssn issue resolve <issue_id> <resolution>

Create branch from issue
~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: bash

		**atlssn issue branch <issue_id> <state_name>

List Git branches for issue
~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: bash

		**atlssn issue branches <issue_id>



TODO
====

* Refactor output formatting to enable custom formatters
* Add OAuth support
* Move todo's to GitHub issues

License
=======

Copyright 2019-present Bartosz Kryza <bkryza@gmail.com>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

All Atlassian® services referenced in this project are registered
trademarks of Atlassian Corporation Plc.

The author of this project is not affiliated in any way with
Atlassian Corporation Plc.

.. _Atlassian: https://www.atlassian.com/