Files
2022-07-31 11:19:06 +02:00

76 lines
2.2 KiB
TOML

name = "dir_iterators"
description = "Ways of moving around directory trees"
version = "0.0.4"
website = "https://github.com/pyjarrett/dir_iterators"
authors = ["Paul Jarrett"]
licenses = "Apache-2.0"
maintainers = ["Paul Jarrett <jarrett.paul.young@gmail.com>"]
maintainers-logins = ["pyjarrett"]
tags = ["dir", "files", "walk"]
long-description = '''
[![Build Status](https://github.com/pyjarrett/dir_iterators/actions/workflows/build.yml/badge.svg)](https://github.com/pyjarrett/dir_iterators/actions)
[![Alire](https://img.shields.io/endpoint?url=https://alire.ada.dev/badges/dir_iterators.json)](https://alire.ada.dev/crates/dir_iterators.html)
## Iterator-based directory walks
Provides convenient ways to walk directories based on Ada 2012 user-defined
iterators.
Inspired by [walkdir for Rust](https://github.com/BurntSushi/walkdir).
## Walking a directory tree recursively
```ada
with Ada.Directories;
with Ada.Text_IO;
with Dir_Iterators.Recursive;
-- ...
Dir_Walk : constant Dir_Iterators.Recursive.Recursive_Dir_Walk
:= Dir_Iterators.Recursive.Walk (Dir);
for Dir_Entry of Dir_Walk loop
Ada.Text_IO.Put_Line(Ada.Directories.Full_Name(Dir_Entry));
end loop;
```
## Walking a directory tree recursively with a filter
Use a filter to prune directories and files from the walk.
```ada
with Ada.Directories;
with Ada.Text_IO;
with Dir_Iterators.Recursive;
package AD renames Ada.Directories;
-- ...
procedure Foo (Include_Dot_Files : Boolean; Dir_Root : String) is
function Filter (E : Ada.Directories.Directory_Entry_Type) return Boolean is
Name : constant String := Ada.Directories.Simple_Name(E);
begin
return Include_Dot_Files
or else (not (Name'Length > 1 and then Name(1) = '.'));
end Filter;
Walk : constant Dir_Iterators.Recursive.Recursive_Dir_Walk :=
Dir_Iterators.Recursive.Walk (Dir_Root, Filter'Access);
begin
for Dir_Entry of Walk loop
Ada.Text_IO.Put_Line(Ada.Directories.Full_Name(Dir_Entry));
end loop;
end Foo;
```
'''
[origin]
commit = "88741e32827693dd37a1f9d7d7b72703d4ddd42e"
url = "git+https://github.com/pyjarrett/dir_iterators.git"