summaryrefslogtreecommitdiff
path: root/cachedir.md
blob: 2f2607a0fd1b751b8fb2b5292d6e6370a88716a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
---
title: "`cachedir`—cache directory tag management"
author: The Obnam project
bindings:
  - lib/files.yaml
  - lib/runcmd.yaml
  - subplot.yaml
impls:
  rust:
  - subplot.rs
...

# Introduction

[Cache Directory Tagging Specification]: http://www.bford.info/cachedir/

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.

# Data files for testing

We will use two files for testing: one is a valid `CACHEDIR.TAG` and
the other isn't.

~~~{#CACHEDIR.TAG .file}
Signature: 8a477f597d28d172789f06886806bc55
~~~
~~~{#not-a-tag .file}
This is not a cache directory tag.
~~~


# 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

~~~scenario
when I run cachedir find .
then stdout is exactly ""
~~~

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

~~~scenario
given a directory foo
given file foo/CACHEDIR.TAG from not-a-tag
when I run cachedir .
then stdout is exactly ""
~~~

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

~~~scenario
given a directory bar
when I run cachedir tag bar
when I run cachedir find .
then stdout contains "/bar"
~~~

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

~~~scenario
when I run cachedir untag bar
when I run cachedir find .
then stdout is exactly ""
~~~