Rewrite allexecutables.py for windows and linux.

master
voussoir 2020-09-21 19:37:31 -07:00
parent 81d0761292
commit 3564918a49
1 changed files with 32 additions and 11 deletions

View File

@ -1,15 +1,36 @@
import os import os
import sys
paths = os.getenv('PATH').split(';') from voussoirkit import pathclass
paths = [p for p in paths if os.path.exists(p)]
extensions = os.getenv('PATHEXT').split(';') def windows():
extensions = [e.lower() for e in extensions] paths = os.getenv('PATH').strip(' ;').split(';')
print('Extensions according to PATHEXT:', extensions) paths = (pathclass.Path(p) for p in paths)
paths = (p for p in paths if p.is_dir)
for path in paths: extensions = os.getenv('PATHEXT').split(';')
print(path)
files = os.listdir(path) files = (file for path in paths for file in path.listdir())
files = [f for f in files if any(f.lower().endswith(e) for e in extensions)] executables = (file for file in files if file.extension in extensions)
files = [' ' + f for f in files] yield from executables
print('\n'.join(files))
def linux():
paths = os.getenv('PATH').strip(' :').split(':')
paths = (pathclass.Path(p) for p in paths)
paths = (p for p in paths if p.is_dir)
files = (file for path in paths for file in path.listdir())
executables = (file for file in files if os.access(file.absolute_path, os.X_OK))
yield from executables
def main(argv):
if os.name == 'nt':
executables = windows()
else:
executables = linux()
for executable in executables:
print(executable.absolute_path)
if __name__ == '__main__':
raise SystemExit(main(sys.argv[1:]))