blob: 6ceb585cdcfc734171787fee86c5753727c9195c (
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
|
#!/usr/bin/env python
import fcntl, os, subprocess, sys, errno
# from http://stackoverflow.com/a/600612
def mkdir_p(path):
try:
os.makedirs(path)
except OSError as exc: # Python >2.5
if exc.errno == errno.EEXIST and os.path.isdir(path):
pass
else: raise
def flock(lockfile, cmd_list, verbose = False):
mkdir_p(os.path.dirname(lockfile))
fd = os.open(lockfile, os.O_RDONLY | os.O_NOCTTY | os.O_CREAT, 0o666)
fcntl.flock(fd, fcntl.LOCK_EX)
if verbose:
print(' '.join(cmd_list))
return subprocess.call(cmd_list)
if '__main__' == __name__:
try:
if sys.argv[1] == '-v':
sys.exit(flock(sys.argv[2], sys.argv[3:], True))
else:
sys.exit(flock(sys.argv[1], sys.argv[2:]))
except KeyboardInterrupt:
sys.exit(1)
|