Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/onox/inotify-ada
An Ada 2012 library for monitoring filesystem events using Linux' inotify API
https://github.com/onox/inotify-ada
ada filemonitor filesystem inotify linux
Last synced: 14 days ago
JSON representation
An Ada 2012 library for monitoring filesystem events using Linux' inotify API
- Host: GitHub
- URL: https://github.com/onox/inotify-ada
- Owner: onox
- License: apache-2.0
- Created: 2019-06-30T16:50:39.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2022-07-30T07:37:29.000Z (over 2 years ago)
- Last Synced: 2024-07-31T20:44:51.091Z (3 months ago)
- Topics: ada, filemonitor, filesystem, inotify, linux
- Language: Ada
- Size: 80.1 KB
- Stars: 8
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
- awesome-ada - inotify-ada - An Ada 2012 library for monitoring filesystem events using Linux' inotify API. (Libraries / Linux and POSIX)
README
[![Build status](https://github.com/onox/inotify-ada/actions/workflows/build.yaml/badge.svg)](https://github.com/onox/inotify-ada/actions/workflows/build.yaml)
[![Alire crate](https://img.shields.io/endpoint?url=https://alire.ada.dev/badges/inotify.json)](https://alire.ada.dev/crates/inotify.html)
[![License](https://img.shields.io/github/license/onox/inotify-ada.svg?color=blue)](https://github.com/onox/inotify-ada/blob/master/LICENSE)
[![GitHub release](https://img.shields.io/github/release/onox/inotify-ada.svg)](https://github.com/onox/inotify-ada/releases/latest)
[![IRC](https://img.shields.io/badge/IRC-%23ada%20on%20libera.chat-orange.svg)](https://libera.chat)
[![Gitter chat](https://badges.gitter.im/gitterHQ/gitter.svg)](https://gitter.im/ada-lang/Lobby)# inotify-ada
An Ada 2012 library to monitor filesystem events using Linux' inotify API.
## Usage
```ada
with Ada.Command_Line;
with Ada.Text_IO;with Inotify.Recursive;
procedure Example is
Instance : Inotify.Recursive.Recursive_Instance;procedure Handle_Event
(Subject : Inotify.Watch;
Event : Inotify.Event_Kind;
Is_Directory : Boolean;
Name : String)
is
Kind : constant String := (if Is_Directory then "directory" else "file");
begin
Ada.Text_IO.Put_Line (Event'Image & " " & Instance.Name (Subject));
Ada.Text_IO.Put_Line (" [" & Kind & "] '" & Name & "'");
end Handle_Event;
begin
Instance.Add_Watch
(Path => Ada.Command_Line.Argument (1),
Mask => (Modified | Closed_Write | Closed_No_Write => True, others => False));while Instance.Has_Watches loop
Instance.Process_Events (Handle_Event'Access);
end loop;
end Example;
```An optional second access-to-procedure parameter can be added to `Process_Events`
to handle move events. See [`examples/monitor.adb`][url-example].## Dependencies
In order to build the library, you need to have:
* An Ada 2012 compiler implementing `GNAT.OS_Lib`
* [Alire][url-alire] and (optionally) `make`
## Using the library
Use the library in your crates as follows:
```
alr with inotify
```## Installing the tools
A tool to monitor a folder for any event can be build and run with:
```
$ alr run --args="path/to/folder"
```Alternatively, it can be build and installed with:
```
$ make
$ make PREFIX=~/.local install
```Run `inotify-ada path/to/folder` to monitor the folder for events.
## Contributing
Please read the [contributing guidelines][url-contributing] before opening
issues or pull requests.## License
This library is distributed under the terms of the [Apache License 2.0][url-apache].
[url-alire]: https://alire.ada.dev/
[url-apache]: https://opensource.org/licenses/Apache-2.0
[url-contributing]: /CONTRIBUTING.md
[url-example]: /examples/monitor.adb