]> arthur.barton.de Git - bup.git/blob - dev/make-random-paths
pylint: enable unidiomatic-typecheck
[bup.git] / dev / make-random-paths
1 #!/bin/sh
2 """": # -*-python-*-
3 bup_exec="$(dirname "$0")/bup-exec" || exit $?
4 exec "$bup_exec" "$0" ${1+"$@"}
5 """
6
7 from __future__ import absolute_import, print_function
8
9 from os.path import abspath, dirname
10 from random import randint
11 from sys import stderr, stdout
12 import errno, re, sys
13
14 from bup.compat import fsencode, get_argv, get_argvb, range
15
16 argv = get_argv()
17
18 def usage(out=stdout):
19     print('Usage:', argv[0], 'NUM', 'DEST_DIR', file=out)
20
21 def misuse():
22     usage(stderr)
23     exit(2)
24
25 if sys.version_info[0] >= 3:
26     def bytes_from_ints(ints):
27         return bytes(ints)
28 else:
29     def bytes_from_ints(ints):
30         return ''.join([chr(x) for x in ints])
31
32 invalid_fragments = re.compile(br'(\x00|[./]|\.\.)')
33
34 def random_filename():
35     n = randint(1, 32)
36     def random_candidate():
37         return invalid_fragments.sub(b'', bytes_from_ints([randint(1, 255)
38                                                            for x in range(n)]))
39     candidate = random_candidate()
40     while not candidate:
41         candidate = random_candidate()
42     return candidate
43
44 if len(argv) != 3:
45     misuse()
46
47 count, dest = get_argvb()[1:]
48 count = int(count)
49
50 i = 0
51 while i < count:
52     with open(dest + b'/' + random_filename(), 'w') as _:
53         i += 1