1.3.0 • Published 3 years ago

@ariya/berkala v1.3.0

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

Berkala

GitHub license Tests

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:

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:

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:

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

npm version npm bundle size (minified)

1.3.0

3 years ago

1.2.1

3 years ago

1.2.0

3 years ago

1.1.9

3 years ago

1.1.8

3 years ago

1.1.7

3 years ago

1.1.6

3 years ago

1.1.5

3 years ago

1.1.4

3 years ago

1.1.2

3 years ago

1.1.1

3 years ago

1.1.0

3 years ago

1.0.4

3 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago