Projet ocaml-fileutils
Le but de ocaml-fileutils est de fournir un ensemble de fonction OCaml afin de permettre la manipulation de fichier directement en OCaml.
Les spécification de ce projets sont :
ecrit entièrement en OCaml
la sémantique des fonctions est similaire à celle de GNU fileutils
les opérations ne portent que sur les ensembles commun Win32/POSIX
Cette version permet l'utilisation d'un ensemble de base des fonctions GNU fileutils :
cp : copie de fichier
mv : déplacement de fichier
rm : destruction de fichier
test : test sur l'existence, les propriétés d'un fichier
find : recherche d'un ensemble de fichier sur la base d'un test
mkdir : création d'un répértoire ( et éventuellement de ses parents )
ls : liste le contenu d'un répertoire
touch : créé un fichier vide ( et met à jour son timestamp )
which : recherche d'un exécutable dans un ensemble de chemin
readlink : transformation d'un chemin qui contient des liens en chemin sans lien
du : retourne la taille d'un ensemble de fichier
stat : abstraction de la fonction Unix.stat
cmp : comparaison de deux fichiers
De plus, en support de ces fonctionnalités, un ensemble de fonctions relatives à la manipulation des noms de fichiers sous différents OS est fourni :
OS supportés :
Win32
Unix
MacOS
Cygwin
Fonctions :
Comparaison : is_subdir, is_updir, compare
Manipulation : make_absolute, make_relative, reduce
Extension : chop_extension, check_extension
Manipulation d'un ensemble de chemin encodé sous forme de chaine
Ajout de quelques fonctionalité :
Fonction : cmp, du, stat, readlink
Réecriture de la fonction find pour qu'elle puisse prendre une fonction a executer. Cela simplifie l'ecriture d'autre fonction et donne une flexibilité plus importante à l'utilisateur.
Ajout de fonction pour le traitement des liens/boucle de récursion des systèmes de fichiers. Lors du parcours d'un ensemble de fichier, on vérifie désormais systèmatiquement que l'on ne se trouve pas dans un cycle ( cas classique de "ln -s . recurse" ).
Traitement de la taille, ajout d'opération sur la taille
Cette première version publique, offre un ensemble de fonctionnalité assez complet. Cette version est encore une phase de test de portabilité. Elle a été testé de façon importante sur un système Linux.
Tous les testeurs et utilisateurs potentiels sont invités à tester les fonctionnalités de cette version pour valide la portabilité du code.