Files
emacs/lisp/treemacs/treemacs-find-ignored-files.py
2025-03-11 21:14:26 +01:00

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()