= validate_workflows

== Intro

A cli tool which uses different validators to validate workflows.

== design goals

* simple use
* bash only
* no config file
* statistic output for each workflow

== cli commands

* --help - help output
* --watch-folder=DIR - watches folder for files which should be evaluated
* --result-folder=DIR - target folder to store validation results
* --files-mode=[sort|delete|nothing] - if sort it sorts files to valid-folder
  and invalid-folder, if delete, it removes checked files, if nothing, files 
  are untouched, delete is default
* --valid-folder=DIR - if --files-mode=sort it moves files from watch-folder to
  valid-folder
*  --invalid-folder=DIR - if --files-mode=sort it moves files from watch-folder
  to valid-folder
* --statistics - print a statistic
* --mode=[auto, mediathek, fotothek, save, kitodo, digas] - the mode auto tries
  to check files based on file endings and best guess. The other modes are
  concrete workflow names.
* --daemon - starts a daemon, works only with delete mode
* --stage=[current,upcoming,any] - valides with current or upcoming profile
  /validator or any if any is valid
* --pipe - use program as a filter

== related files

The tool used the following files:

* $\{HOME\}/.cache/validate_workflows/statistics.cnt
* /var/lock/validate_workflows.lock

== Statistics

we need following criteria:

* last_delta_t
* avg_delta_t
* stddev_delta_t
* avg_duration
* stddev_duration
* cnt_valid_$filetype
* cnt_invalid_$filetype
* cnt_valid_workflow
* cnt_invalid_workflow
* ratio_valid_$filetype
* ratio_invalid_$filetype
* ratio_valid_$filetype by date
* ratio_invalid_$filetype by date

Could result in csv table for each file scan

date | cnt_valid | cnt_invalid | duration | filetype | workflow | stage

== Ideas

* env variables for profiles