🔀 Merge branch 'website/epic-games' into next
[rhynodge.git] / README.md
index 74d5cb0..460f783 100644 (file)
--- a/README.md
+++ b/README.md
@@ -12,22 +12,25 @@ Rhynodge’s configuration uses JSON files (I tried using XML first but apparent
 
 ## Running Rhynodge
 
-Rhynodge uses Maven as build and dependency management tool. Maven can also run Rhynodge:
+Rhynodge uses Gradle as build and dependency management tool. After creating a â€śfat jar” (a JAR file containing all required dependencies), simply run the jar file with
 
-> $ mvn clean compile exec:java
+> $ java -jar build/libs/rhynodge-all-*.jar
 
-Rhynodge accepts the following command-line parameters:
+Rhynodge accepts the following options using environment variables:
 
-- ``--chains <directory>``, ``-c <directory>``: directory to load chain configurations from.
-- ``--states <directory>``, ``-s <directory>``: directory to store states in.
+- ``SMTP_HOSTNAME``: the hostname of the SMTP server, is used for error emails; default is â€ślocalhost”
+- ``ERROR_EMAIL_SENDER``: the email address to use as sender for error emails
+- ``ERROR_EMAIL_RECIPIENT``: the email address to send error emails to
+- ``CHAIN_DIRECTORY``: directory to load chain configurations from; default is â€śchains”
+- ``STATE_DIRECTORY``: directory to store states in; default is â€śstates”
 
-Both directories need to be created before running Rhynodge.
+Both chain and state directories need to be created before running Rhynodge.
 
 Rhynodge also periodically scans the chains directory to find changed or new chain configuration files. New files will be added to the running instance, changed files will be reloaded, and removing files will remove the corresponding job from Rhynodge.
 
 ## Internal Concepts
 
-The core of Rhynodge comprises ``Reaction``s which in turn consist of ``Query``s, ``Filter``s, ``Trigger``s, and ``Action``s.
+The core of Rhynodge comprises ``Reaction``s which in turn consist of ``Query``s, ``Filter``s, ``Merger``s, and ``Action``s.
 
 ### Query
 
@@ -41,18 +44,18 @@ A filter is an optional component that turns a ``State`` into a different ``Stat
 
 The result of a ``Filter`` is a ``State``, again.
 
-### Trigger
+### Merger
 
-A trigger decides if, given the current state and the previous state, a noteworthy change has occured. It could calculate the difference between two file lists, or of two Facebook post lists.
+A merger merges two states into a new state; the new state is responsible for detecting whether a noteworthy change has occured.
 
-The result of a ``Trigger`` is an ``Output``.
+The result of a ``Merger`` is — once again — a ``State``.
 
 ### Watcher
 
-A watcher combines a query, a list of filters, and a trigger into a single unit which can be configured a lot easier than the separate components. For example, you could have a â€śTwitter” that finds new status updates for a username and that only needs to be configured with that username; the rest of the configuration is contained in the watcher.
+A watcher combines a query, a list of filters, and a merger into a single unit which can be configured a lot easier than the separate components. For example, you could have a â€śTwitter” that finds new status updates for a username and that only needs to be configured with that username; the rest of the configuration is contained in the watcher.
 
-A ``Watcher`` does not do any processing but instead offers a ``Query``, a list of ``Filter``s, and a ``Trigger``.
+A ``Watcher`` does not do any processing but instead offers a ``Query``, a list of ``Filter``s, and a ``Merger``.
 
 ### Action
 
-If a trigger found a change, the action is then executed. Again, an action can be almost anything: it can send an email, it can execute programs, print documents, initiate phone calls, take a picture from a webcam — anything you can program can be used an an action.
+If a noteworthy change has been detected, the action is then executed. Again, an action can be almost anything: it can send an email, it can execute programs, print documents, initiate phone calls, take a picture from a webcam — anything you can program can be used an an action.