blob: ccabb695396ef81539dda574d6831ffc7843da6e (
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
---
title: "`cachedir`—cache directory tag management"
author: The Obnam project
template: rust
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.
~~~scenario
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.
~~~scenario
given a directory foo
given 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.
~~~scenario
given a directory bar
when I run cachedir tag bar
when 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.
~~~scenario
when I run cachedir untag bar
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
~~~
|