#+TITLE: sarso
[[tag][file:https://img.shields.io/github/v/tag/lepisma/sarso.svg?style=flat-square]] [[GitHub Workflow Status][file:https://img.shields.io/github/workflow/status/lepisma/sarso/CI.svg?style=flat-square]]
Sarso is not Jira.
Sarso does a local sync of Jira projects to provide better and faster offline
workflows. This includes integration with Org-mode, faster find and create
methods etc. Sarso is not a replacement for the Jira interface but covers what I
need to do on regular basis, faster.
** Installation
There are two programs here:
+ A CLI executable, =sarso= for syncing issues to an sqlite database.
+ An Emacs package for working with the database.
The CLI can be built and installed using the following:
#+begin_src shell
make
sudo make install
#+end_src
The CLI itself can be used standalone to sync tickets. For this you need to
setup following environment variables:
: export JIRA_BASE="https://company.atlassian.net"
: export JIRA_USER="username"
: export JIRA_TOKEN="token/pass"
Though the recommended way is to interact with the Emacs package that handles
environment variables and other things on its own. You can install the package
using the usual methods. /It's not on melpa/.
Here is an example config for the Emacs package.
#+begin_src emacs-lisp
(setq sarso-jira-root "https://vernacular-ai.atlassian.net"
sarso-jira-user "abhinav@vernacular.ai"
sarso-jira-token "<token>"
sarso-self-email "abhinav@vernacular.ai"
sarso-org-sink-files `((,(concat user-notes-dir "tasks/research.org") . ("RES"))
(,(concat user-notes-dir "tasks/ml-product.org") . ("PROD" "CORE")))
sarso-sync-projects '("RES" "CORE" "PROD"))
(add-hook 'sarso-post-sync-hook #'sarso-self-issues-to-org)
#+end_src
** Usage
*** Syncing tickets locally
Call ~sarso-sync~. Or set on repeat: ~(run-with-timer 60 (* 60 30) #'sarso-sync)~.
*** Showing tickets in Org Agenda
Use ~sarso-self-issues-to-org~. You can also set this in ~sarso-post-sync-hook~ so
it runs automatically after each sync.