51 lines
1.2 KiB
Python
51 lines
1.2 KiB
Python
from subprocess import Popen, PIPE
|
|
from os.path import exists
|
|
import sys
|
|
|
|
GIT_BIN = sys.argv[1]
|
|
GIT_CMD = "{} clean -ndX".format(GIT_BIN)
|
|
STDOUT = sys.stdout.buffer
|
|
|
|
def quote(string):
|
|
return b'"' + string + b'"'
|
|
|
|
def process_git_output(root, proc):
|
|
root_bytes = bytes(root, "utf-8")
|
|
|
|
count = 0
|
|
for line in proc.stdout:
|
|
# output has the form 'Would remove /a/b/c'
|
|
# final newline and final slash also need to go
|
|
path = line.replace(b"Would remove ", b"")[:-1]
|
|
if path.endswith(b"/"):
|
|
path = path[:-1]
|
|
|
|
ignored_file = root_bytes + b"/" + path
|
|
ignored_file_parent = ignored_file[:ignored_file.rindex(b"/")]
|
|
|
|
STDOUT.write(quote(ignored_file_parent))
|
|
STDOUT.write(quote(ignored_file))
|
|
|
|
# arbitrary limit of no more than 100 files
|
|
count += 1
|
|
if count > 100:
|
|
break
|
|
|
|
def main():
|
|
roots = sys.argv[2:]
|
|
procs = []
|
|
|
|
for root in roots:
|
|
if exists(root + "/.git"):
|
|
proc = Popen(GIT_CMD, shell=True, stdout=PIPE, bufsize=100, cwd=root)
|
|
procs.append((root, proc))
|
|
|
|
STDOUT.write(b"(")
|
|
|
|
for (root, proc) in procs:
|
|
process_git_output(root, proc)
|
|
|
|
STDOUT.write(b")")
|
|
|
|
main()
|