@ariya/berkala
v1.3.0
Published
Run scheduled tasks
Downloads
40
Readme
Berkala
Berkala runs scheduled tasks specified in a YAML-based configuration.
To get started, first download the binary for your operating system from the Releases page. Unpack the ZIP file and run the executable.
Since a config file does not exist yet, you will be offered to create one.
Simply accept it and berkala.yml
will be created, which may look like the following:
tasks:
# Without an explicit interval, the task runs immediately
boot:
steps:
- notify: Berkala starts now
stay-hydrated:
interval: every 1 hour
steps:
- notify: Drink some water! # TODO: how much?
- print: Reminder was sent
lunch:
interval: at 11:58am
steps:
- notify: It's lunch time very soon
title: Important
- say: Get ready for lunch
sign-of-life:
interval: every 2 hours
steps:
- run: ping -c 7 google.com
timeout-minutes: 2
weekend-exercise:
cron: 0 9 * * 6 # every 9 morning on Saturday
steps:
- notify: Time for some exercises!
title: Stay healthy
Just like any regular YAML, everything from the #
character until the end of the line will be ignored. Use this to insert comments.
The schedule for each task can be specified as:
- a human-friendly interval, e.g.
every 5 minutes
,at 5pm
, or - a cron expression, e.g.
0 9 * * 6
If neither is explicitly stated, then the task runs right away.
Each task consists of one or more steps.
Every step must be one of the following:
Example:
sign-of-life:
interval: every 30 minutes
steps:
- run: ping -c 7 google.com
Optionally, timeout-minutes
can be used to limit the execution time and working-directory
can be used to set the directory to start the execution from.
Another example:
sys-resource:
interval: every 2 hours
steps:
- run: |
date >> resources.log
top | head -n 4 >> resources.log
timeout-minutes: 3
working-directory: /var/log
Example:
morning:
interval: at 7:00am
steps:
- print: Good morning!
Optionally, title
can be used to set the notification title.
Example:
mahlzeit:
interval: at 11:58am
steps:
- notify: It's lunch time very soon
title: Yummy
The notification is supported on the following system:
- Windows: Windows.UI.Notifications via Powershell scripting
- macOS:
display notification
with AppleScript - Linux: notify-send, e.g. part of
libnotify-bin
package on Debian/Ubuntu
Example:
vaya-con-dios:
interval: 0 17 * * 1-5 # every workday late afternoon
steps:
- say: Time to go home
The text-to-speech conversion is supported on the following system:
- Windows: System.Speech.Synthesis via Powershell scripting
- macOS:
say
with AppleScript - Linux: Festival speech synthesis, e.g.
festival
andfestvox-kallpc16k
on Debian/Ubuntu
Found a problem or have a new idea? File an issue!
With Node.js v14 or later (that has npx):
npx @ariya/berkala
To run the development version, check out this repo and then:
npm install
npm start