https://github.com/dhth/punchout
punchout takes the suck out of logging time on JIRA
https://github.com/dhth/punchout
bubbletea jira tui
Last synced: 11 months ago
JSON representation
punchout takes the suck out of logging time on JIRA
- Host: GitHub
- URL: https://github.com/dhth/punchout
- Owner: dhth
- License: mit
- Created: 2024-03-12T00:58:43.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-11-21T19:02:02.000Z (over 1 year ago)
- Last Synced: 2024-11-21T20:18:18.493Z (over 1 year ago)
- Topics: bubbletea, jira, tui
- Language: Go
- Homepage: https://tools.dhruvs.space/punchout
- Size: 306 KB
- Stars: 14
- Watchers: 1
- Forks: 2
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- charm-in-the-wild - punchout - Takes the suck out of logging time on JIRA. (_built with Bubble Tea_) (Applications / Productivity and Organization)
README
punchout
`punchout` takes the suck out of logging time on JIRA.
💾 Installation
---
**homebrew**:
```sh
brew install dhth/tap/punchout
```
**go**:
```sh
go install github.com/dhth/punchout@latest
```
⚡️ Usage
---
`punchout` can receive its configuration via command line flags, or a config
file.
### Using a config file
Create a toml file that looks like the following. The default location for this
file is `~/.config/punchout/punchout.toml`. The configuration needed for
authenticating against your JIRA installation (on-premise or cloud) will depend
on the kind of the installation.
```toml
[jira]
jira_url = "https://jira.company.com"
# for on-premise installations
installation_type = "onpremise"
jira_token = "your personal access token"
# for cloud installations
installation_type = "cloud"
jira_token = "your API token"
jira_username = "example@example.com"
# put whatever JQL you want to query for
jql = "assignee = currentUser() AND updatedDate >= -14d ORDER BY updatedDate DESC"
# I don't know how many people will find use for this.
# I need this, since the JIRA on-premise server I use runs 5 hours behind
# the actual time, for whatever reason 🤷
jira_time_delta_mins = 300
# this comment will be used for worklogs when you don't provide one; optional"
fallback_comment = "comment"
```
### Basic usage
Use `punchout -h` for help.
```bash
punchout \
-db-path='/path/to/punchout/db/file.db' \
-jira-url='https://jira.company.com' \
-jira-installation-type 'onpremise' \
-jira-token='XXX' \
-jql='assignee = currentUser() AND updatedDate >= -14d ORDER BY updatedDate DESC'
punchout \
-db-path='/path/to/punchout/db/file.db' \
-jira-url='https://jira.company.com' \
-jira-installation-type 'cloud' \
-jira-token='XXX' \
-jira-username='example@example.com' \
-jql='assignee = currentUser() AND updatedDate >= -14d ORDER BY updatedDate DESC'
```
Both the config file and the command line flags can be used in conjunction, but
the latter will take precedence over the former.
```bash
punchout \
-config-file-path='/path/to/punchout/config/file.toml' \
-jira-token='XXX' \
-jql='assignee = currentUser() AND updatedDate >= -14d ORDER BY updatedDate DESC'
```
🖥️ Screenshots
---
📋 Reference Manual
---
```
punchout Reference Manual
punchout has 5 panes:
- Issues List View Shows you issues matching your JQL query
- Worklog List View Shows you your worklog entries; you sync these entries
to JIRA from here
- Worklog Entry View You enter/update a worklog entry from here
- Synced Worklog Entry View You view the worklog entries synced to JIRA
- Help View (this one)
Keyboard Shortcuts
General
1 Switch to Issues List View
2 Switch to Worklog List View
3 Switch to Synced Worklog List View
Go to next view/form entry
Go to previous view/form entry
q/ Go back/reset filtering/quit
Cancel form/quit
? Show help view
General List Controls
k/ Move cursor up
j/ Move cursor down
h Go to previous page
l Go to next page
/ Start filtering
Issue List View
s Toggle recording time on the currently selected issue,
will open up a form to record a comment on the second
"s" keypress
S Quick switch recording; will save a worklog entry without
a comment for the currently active issue, and start
recording time for another issue
Update active worklog entry (when tracking active), or add
manual worklog entry (when not tracking)
Go to currently tracked item
Discard currently active recording
Open issue in browser
Worklog List View
/u Update worklog entry
Delete worklog entry
s Sync all visible entries to JIRA
Refresh list
Worklog Entry View
enter Save worklog entry
k Move timestamp backwards by one minute
j Move timestamp forwards by one minute
K Move timestamp backwards by five minutes
J Move timestamp forwards by five minutes
h Move timestamp backwards by a day
l Move timestamp forwards by a day
Synced Worklog Entry View
Refresh list
```
Acknowledgements
---
`punchout` is built using the awesome TUI framework [bubbletea][1].
[1]: https://github.com/charmbracelet/bubbletea
[2]: https://community.atlassian.com/t5/Atlassian-Migration-Program/Product-features-comparison-Atlassian-Cloud-vs-on-premise/ba-p/1918147