A Rust library and a CLI tool to help interacting with cache directories and CACHEDIR.TAG files as defined in Cache Directory Tagging Specification.
You can find the library documentation on docs.rs.
To install the CLI tool run cargo install cachedir
. To see what options are available
run cachedir --help
. Only one subcommand, is-tagged
, is implemented right now.
It allows checking if a directory is tagged with CACHEDIR.TAG
(prints the relevant
information to stderr and sets an appropriate exit-code: 0 for true, 1 for false, 2 for an error):
~/projects/cachedir% ls -lah target
total 16
drwxr-xr-x@ 6 user staff 192B Dec 10 17:02 ./
drwxr-xr-x 10 user staff 320B Dec 10 17:16 ../
-rw-r--r-- 1 user staff 1.4K Dec 12 21:52 .rustc_info.json
-rw-r--r-- 1 user staff 177B Dec 10 15:52 CACHEDIR.TAG
drwxr-xr-x 13 user staff 416B Dec 12 21:47 debug/
drwxr-xr-x@ 5 user staff 160B Dec 10 17:02 rls/
~/projects/cachedir% cat target/CACHEDIR.TAG
Signature: 8a477f597d28d172789f06886806bc55
# This file is a cache directory tag created by cargo.
# For information about cache directory tags see https://bford.info/cachedir/
~/projects/cachedir% cachedir is-tagged does-not-exist
No such file or directory (os error 2)
% echo $?
2
~/projects/cachedir% cachedir is-tagged .
. is not tagged with CACHEDIR.TAG
~/projects/cachedir% echo $?
1
~/projects/cachedir% cachedir is-tagged target
target is tagged with CACHEDIR.TAG
~/projects/cachedir% echo $?
0
Versions 0.1.0 and 0.1.1 of this crate on crates.io are actually distributions of a different, abandonded project by Lilian Anatolie Moraru. Credits to Lilian for transferring the name to me.