{"id":32214476,"url":"https://github.com/rlauer6/perl-workflow-inotify","last_synced_at":"2026-02-21T13:01:59.145Z","repository":{"id":65784171,"uuid":"58942304","full_name":"rlauer6/perl-Workflow-Inotify","owner":"rlauer6","description":"inotify Perl workflow framework","archived":false,"fork":false,"pushed_at":"2025-01-28T17:25:14.000Z","size":163,"stargazers_count":2,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-22T07:04:20.791Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"M4","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rlauer6.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2016-05-16T15:11:08.000Z","updated_at":"2025-01-28T17:24:47.000Z","dependencies_parsed_at":"2024-10-29T01:31:54.668Z","dependency_job_id":"ba325ec8-49df-46e6-92be-9d1962fa8e8b","html_url":"https://github.com/rlauer6/perl-Workflow-Inotify","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/rlauer6/perl-Workflow-Inotify","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rlauer6%2Fperl-Workflow-Inotify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rlauer6%2Fperl-Workflow-Inotify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rlauer6%2Fperl-Workflow-Inotify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rlauer6%2Fperl-Workflow-Inotify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rlauer6","download_url":"https://codeload.github.com/rlauer6/perl-Workflow-Inotify/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rlauer6%2Fperl-Workflow-Inotify/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280395976,"owners_count":26323604,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-22T02:00:06.515Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-10-22T07:04:27.048Z","updated_at":"2025-10-22T07:09:27.488Z","avatar_url":"https://github.com/rlauer6.png","language":"M4","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NAME\n\ninotify.pl - script to daemonize a `Linux::Inotify2` handler\n\n# SYNOPSIS\n\n    inotify.pl --config=inotify.cfg\n\n# DESCRIPTION\n\nScript harness for `Workflow::Inotify::Handler` classes.  This is\ntypically launched as a daemon by the `inotifyd` script or using a\n`systemctl` service description.\n\nSee [Workflow::Inotify::Handler](https://metacpan.org/pod/Workflow%3A%3AInotify%3A%3AHandler)\n\n# HOW IT WORKS\n\nThe `inotify.pl` script reads a `.ini` style configuration file and\ninstalls handlers implemented by Perl classes to process kernel events\ngenerated from file or directory changes. Using [Linux::Inotify2](https://metacpan.org/pod/Linux%3A%3AInotify2),\nthe script instantiates one or more handlers which process\ndirectory events and then daemonizes this script.\n\n## The Configuration File\n\nThe configuration file is a `.ini` style configuration file\nconsisting of a `[global]` section and one or more sections named\nusing the convention: `[watch_{name}]` where `{name}` is the snake\ncase representation of the directory to watch.\n\nBoolean values in the configuration file can be set as '0', '1',\n'true', 'false', 'on', 'off', 'yes', or 'no'. Take your pick.\n\nExample:\n\n    [global]\n    daemonize = yes\n    logfile = /var/log/inotify.log\n    block = yes\n    perl5lib = $HOME/lib/perl5\n    \n    [watch_tmp]\n    dir = /tmp\n    mask = IN_MOVED_TO | IN_CLOSE_WRITE\n    handler = Workflow::Inotify::Handler\n\nSections are described below.\n\n- `[global]`\n\n    The `global` section contains configuration values used throughout\n    the script. All of the values in the `global` section are optional.\n\n    - sleep\n\n        Amount of time in seconds to sleep after polling for a watch event. If\n        you do not specify a value for sleep and you set `block` to a false\n        value, then the sleep time will automatically be 1 second otherwise\n        this script would consume 100% of the CPU. ;-)\n\n    - block\n\n        Boolean that indicates if the watcher should block waiting for an\n        event. If you set `block` to a false value, you should also consider\n        a sleep value of a least 1 second.\n\n        default: true\n\n    - logfile\n\n        Name of a file that will receive all STDERR and STDOUT messages.\n\n    - perl5lib\n\n        One or more paths to add to `@INC`. Paths should be ':' separated.\n\n        Example:\n\n            perl5lib = $HOME/lib/perl5:/usr/local/lib/perl5\n\n        Words that begin with '$' are interpretted to be environment variables\n        (for this variable only). You can also use '~' to denote your home\n        directory ($HOME) if it is defined.\n\n    - verbose\n\n        Output messages at beginning of script.\n\n        default: true\n\n    - daemonize\n\n        Boolean that indicates whether the script should be daemonized using\n        [Proc::Daemon](https://metacpan.org/pod/Proc%3A%3ADaemon).\n\n        default: true\n\n- `[watch_{name}]`\n\n    The `watch` section contains settings for the directories to watch.\n\n    - dir\n\n        Directory to watch.\n\n        Example:\n\n            [watch_example]\n\n            dir =  /var/spool/junk\n\n        _Note: events on files in subdirectories will not generate\n        events. You must explicitly include those subdirectories if you want\n        them watched._\n\n    - mask\n\n        One or more `inotify` event names as described in _man 7\n        inotify_. These events should be pipe delimited (as in \"oring\" them\n        together).\n\n        Example:\n\n            mask = IN_MOVED_FROM | IN_MOVED_TO\n\n        These are also described in [Workflow::Inotify::Handler](https://metacpan.org/pod/Workflow%3A%3AInotify%3A%3AHandler).\n\n        You can also use the mask value of 'IN\\_ALL' which will trigger your\n        handler for all events that are supported by `inotify`.\n\n    - handler\n\n        The name of a Perl class that has at least a `handler()` method. This\n        handler will be called with a [Linux::Inotify::Event](https://metacpan.org/pod/Linux%3A%3AInotify%3A%3AEvent) object.\n\n        Example:\n\n            handler = Workflow::Inotify::Handler\n\n        A typical handler might look something like this:\n\n            package MyHandler;\n            \n            use strict;\n            use warnings;\n            \n            use Data::Dumper;\n\n            use parent qw(Workflow::Inotify::Handler);\n            \n            sub new {\n              my ( $class, @args ) = @_;\n            \n              return $class-\u003eSUPER::new(@args);\n            }\n            \n            sub handler {\n              my ( $self, $event ) = @_;\n            \n              return print {*STDERR} Dumper( [ event =\u003e $event ] );\n            }\n\n        1;\n\n## Application Configuration\n\nYou can create a section in the configuration file that is named for\nthe handler class. For example, if your handler class is\n`Workflow::S3::Uploader`, then create a section in the configuration\nfile named `workflow_s3_uploader`. Place any values you wish in that\nsection. The configuration object is passed to your handler's `new()`\nmethod so you can access the values as needed. The configuration\nobject is an instance of [Config::IniFiles](https://metacpan.org/pod/Config%3A%3AIniFiles).\n\nIf you use the parent class [Workflow::Inotify::Handler](https://metacpan.org/pod/Workflow%3A%3AInotify%3A%3AHandler), its\n`new()` method will automatically create setters and getters for these\nvalues.\n\nSee [Workflow::Inotify::Handler](https://metacpan.org/pod/Workflow%3A%3AInotify%3A%3AHandler) for more details.\n\n# VERSION\n\nThis documentation refers to version 1.0.7\n\n# REPOSITORY\n\n[https://github.com/rlauer6/perl-Workflow-Inotify.git](https://github.com/rlauer6/perl-Workflow-Inotify.git)\n\n# AUTHOR\n\nRob Lauer - \u003crlauer6@comcast.net\u003e\n\n# SEE ALSO \n\n[Linux::Inotify2](https://metacpan.org/pod/Linux%3A%3AInotify2), [Config::IniFiles](https://metacpan.org/pod/Config%3A%3AIniFiles), [Workflow::Inotify::Handler](https://metacpan.org/pod/Workflow%3A%3AInotify%3A%3AHandler)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frlauer6%2Fperl-workflow-inotify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frlauer6%2Fperl-workflow-inotify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frlauer6%2Fperl-workflow-inotify/lists"}