cachedir—cache directory tag management

The Obnam project

2022-09-07 20:03

1 Introduction

The cachedir utility manages tags for cache directories. A cache directory tag is specified in Cache Directory Tagging Specification, and is a file called CACHEDIR.TAG, where the first line consists of:

Signature: 8a477f597d28d172789f06886806bc55

Creating such files by hand is easy enough, but cachedir makes it a little easier.

Many backup programs recognize cache directory tags and can exclude such directories.

2 Data files for testing

We will use a dummy tag file for testing: something that is named CACHEDIR.TAG, but doesn’t have the right contents.

File: not-a-tag

This is not a cache directory tag.

3 Managing cache directories

Requirement: The tool must find cache directories, and add and remove tags as requested.

We should find no cache directories, if there aren’t any.

given an installed cachedir
when I run cachedir find .
then stdout is exactly ""
when I try to run cachedir is-cache foo
then command fails
when I try to run cachedir is-cache bar
then command fails

When we create a directory, and a CACHEDIR.TAG file with the wrong contents, it’s not a cache directory.

given a directory foo
and file foo/CACHEDIR.TAG from not-a-tag
when I run cachedir find .
then stdout is exactly ""
when I try to run cachedir is-cache foo
then command fails
when I try to run cachedir is-cache bar
then command fails

When we create an actual tag, the directory is found.

given a directory bar
when I run cachedir tag bar
and I run cachedir find .
then stdout contains "/bar"
when I try to run cachedir is-cache foo
then command fails
when I try to run cachedir is-cache bar
then command is successful

Finally, we should again find no cache directories if we remove that tag.

when I run cachedir untag bar
and I run cachedir find .
then stdout is exactly ""
when I try to run cachedir is-cache foo
then command fails
when I try to run cachedir is-cache bar
then command fails