npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@simonrauch/harvey

v2.5.15

Published

A simple CLI for Harvest.

Downloads

34

Readme

npm npm

Harvey

A simple CLI for Harvest.

Installation

You can install harvey via NPM by running:

npm i -g @simonrauch/harvey

Or if you're using Homebrew on MacOS by running:

brew tap simonrauch/tap
brew install harvey

After harvey is installed, you have to initialize your configuration, by running:

harvey init

You'll be asked for your Harvest account ID and personal access token, so you'll have to create one in the Developers section on Harvest.

This will create a configuration file (default: ~/.config/harvey/config.json).

Usage

Help

If you're having trouble using Harvey, please refer to the --help flag. For example:

harvey --help

or

harvey timer --help

Time input formats

Harvey will interpret time inputs according to following criteria:

  • integer input will be interpreted as minutes: 15 will be interpreted as 15 minutes.
  • decimal inputs will be intepreted as hours: 0.25, 0,25, .25 and ,25 will be interpreted as 15 minutes.
  • integers separated by : will be intepreted as hours and minutes: 0:15 and :15 will be interpreted as 15 minutes.

Date input formats

Harvey uses the following date format YYYY-MM-DD (Example: 2022-03-20). Not passing any date will default to the current date.

Alternativly Harvey can interpret relative dates using the following format: <+/-><number><day/days/d/week/weeks/w>. If you want to for example add a time entry with yesterdays date, you can use:

harvey book TEST-123 1:30 --date="-1day"

Aliases

To modify time entries on Harvest, we need to specify which project and task they are reffering to. To make this easier Harvey creates aliases and saves them to a file (default: ~/.config/harvey/aliases.json). The alias is typically a unique substring of the tasks name, like a Jira issue reference. For the most part Harvey will manage those aliases automatically, but you can modify them, by using the following commands:

  • harvey alias add <alias> will create an alias, by searching all available tasks on Harvest for <alias>. If you don't want to use the alias itself as the search term you can pass a different search term by passing the -s option. Example: harvey alias add TA -s "Technical Analysis"
  • harvey alias remove <alias> will remove the alias.
  • harvey alias remove-all will remove all aliases from your aliases file.

Booking

You can add a time entry by running:

harvey book <alias> <time>

You can add notes by using the -n option and specify the date for the entry by using the -d option. The date option will default to the current date.

Example:

harvey book TEST-1234 45 -n "my comment" -d "2022-03-09"

Days time entries

You can list a days time entries by running:

harvey day

or

harvey day status

You can specify the date for the entry by using the -d option. The date option will default to the current date.

Example:

harvey day -d "2022-03-09"

Modifying a days entries

To modify an entry you can run the following command and follow the prompts:

harvey day modify

One option is to round up an entry in a defined interval. The default interval is set in minutes in your config file (default: ~/.config/harvey/config.json), but you can override this setting by passing the --ri option to the command.

Example:

harvey day modify --ri 30

If you want to round up all entries of a day, you can run:

harvey day round

This command also accepts the --ri option.

Timer

To track the time of the task you're working on you can use the harvey timer commands:

  • harvey timer or harvey timer status will show you the status of the current timer.
  • harvey timer start <alias> will start a timer. Similar to the harvey book command you can also specify the -d and -n options, to define the time entries notes and date.
  • harvey timer pause will pause the currently running timer.
  • harvey timer resume will resume the currently paused timer.
  • harvey timer stop will stop the current timer.
  • harvey timer update let's you update the -d and -n options of the current timer.

Parser

Harvey can parse files with multiple time entries. Which file parser is used and it's configuration can be specified in your config file. To parse a file, run:

harvey parse <file>

Similar to the harvey book command you can also specify the -d and -n options, to define the time entries notes and date.

For example:

harvey parse Report_Team_Alpaca_03.03.2022.xlsx -d "2022-03-03" -n "sprintchange"

XLSX file parser

The XLSX file parser will select a worksheet in your XLSX file. Search for the heading cells for your alias and minutes, and will traverse down from your alias cell until it reaches the first empty cell.

The configuration (stored by default at ~/.config/harvey/config.json) could for example look like this:

{
  ...
  "fileParser": {
    "type": "xlsx",
    "worksheet": "Timebooking",
    "aliasColumn": "Issue",
    "minutesColumn": "Minutes"
  }
}

This would mean, that the parser will look for a worksheet called "Timebooking" and parse it like this:

| Issue | Task | Minutes | |----------|------|---------| | TEST-101 | ... | 15 | | TEST-103 | ... | 30 | | TEST-102 | ... | 45 | | | | 90 | | | | | | TEST-201 | ... | 30 |

The entries for TEST-101, TEST-102 and TEST-103 will be created. The summed up 90 minutes won't be booked. The entry for TEST-201 also won't be booked because the parser will stop at the first empty line.

Setup for development

  • Make sure there is NO harvey command linked right now. Verify by running harvey --version. If there is harvey installed on your system right now, unlink the executable or simply uninstall.
  • Install using npm i
  • Link the the package npm link .
  • Start the tsc watcher npm run dev
  • Let the watcher run and open a second terminal. Running harvey in the second terminal will now run from the built executable in your project files and code changes should update it automatically.
  • If you want to install the release version of Harvey again, unlink your local project by running npm unlink ., before doing so.