WakaToToggle is a utility to sync your WakaTime entries for a given day to your Toggl account.
I love WakaTime's automated time tracking of dev time, but the time I spend working in an IDE is usually part of a larger context of time spent in a project. It seemed most useful to incorporate this data into Toggl, where I do my broader project time tracking.
Hopefully this is helpful for someone else.
Feedback and PRs always welcome.
You can run
wakaToToggl as a nodejs script...
./wakaToToggl.js [options] or
node wakaToToggl.js [options]
...or as a self-contained CLI executable (does not require node on your system). OS X executable here, or compile your own for other platforms (See Compiling below).
The default behavior is to run once, and sync yesterday's WakaTime data to Toggl. This can be sceduled on the system level with something like
WakaToToggle can also be set to execute once every 24 hours as long as it's running by passing in the
--keepRunning option. This is useful for running on a remote server with a process manager like
For example, to run the script every day at 5:00am:
node wakaToToggle.js --keepRunning --hour=5
All options are optional except for your WakaTime and Toggl API keys. Options can be passed in via Environment Variables or CLI Flags
These can be set in your shell environment or saved in a
.env file in the same directory as the script. (See dotenv)
WakaToToggle looks for the following environment variables: TOGGLKEY="xxxxxxx" Define user's Toggl API key. WAKAKEY="xxxxxxx" Define user's WakaTime API key. KEEPRUNNING=true If keepRunning is set to true, wakaToToggle will automatically run every 24h. [default: false] HOUR=n [0 - 23] Define hour at which wakaToToggl runs if keepRunning is true. [default: 4] DAYS=n Get data from how many days back (ie - '1' would be yesterday, '4' would be 4 days ago. [default: 1]
NOTE: Arguments passed via the command line will override environment variables.
Options: --help, -h Displays help information about this script 'wakaToToggl -h' or 'wakaToToggl --help' --version Displays version info 'wakaToToggl --version' --togglKey, -t Define user's Toggl API key. 'wakaToToggl --togglKey=value' or 'wakaToToggl -t value' --wakaKey, -w Define user's WakaTime API key. 'wakaToToggl --wakaKey=value' or 'wakaToToggl -w value' --keepRunning, -k If keepRunning is set to true, wakaToToggle will automatically run every 24h. [default: false] 'wakaToToggl --keepRunning' or 'wakaToToggl -k' --hour, -r Define hour at which wakaToToggl runs if keepRunning is true. [default: 4] 'wakaToToggl --hour=value' or 'wakaToToggl -r value' --daysBack, -b Get data from how many days back (ie - '1' would be yesterday, '4' would be 4 days ago. [default: 1] 'wakaToToggl --daysBack=value' or 'wakaToToggl -b value' --dryRun, -d Pulls and processes project data, but does not write anything to Toggl. Automatically sets 'verbose' to true. 'wakaToToggl --dryRun' or 'wakaToToggl -d' --verbose, -v Print all log statements. 'wakaToToggl --verbose' or 'wakaToToggl -v'
WakaToToggl uses nexe to create standalone executables.
npm install && node run-script compile