Improved named_python.

This commit is contained in:
voussoir 2021-10-05 16:50:53 -07:00
parent 701cf3e0d3
commit 555e2fccb1
No known key found for this signature in database
GPG key ID: 5F7554F8C26DACCB

View file

@ -1,30 +1,50 @@
'''
Because Python is interpreted, when you look at the task manager process list
named_python
============
Because Python is interpreted, when you look at the task manager / process list
you'll see that every running python instance has the same name, python.exe.
This scripts helps you name the executables so they stand out.
This script helps you name the executables so they stand out.
For the time being this script doesn't automatically call your new exe, you
have to write a second command to actually run it. I tried using
subprocess.Popen to spawn the new python with the rest of argv but the behavior
was different on Linux and Windows and neither was really clean.
> named_python name
Examples:
> named_python myserver && python-myserver server.py --port 8080
> named_python hnarchive && python-hnarchive hnarchive.py livestream
'''
import argparse
import os
import sys
from voussoirkit import betterhelp
from voussoirkit import pathclass
from voussoirkit import winwhich
def main(argv):
python = pathclass.Path(winwhich.which('python'))
def namedpython_argparse(args):
python = pathclass.Path(sys.executable)
name = argv[0].strip()
name = args.name.strip()
named_python = python.parent.with_child(f'python-{name}{python.extension.with_dot}')
if named_python.exists:
return 0
os.link(python.absolute_path, named_python.absolute_path)
print(named_python.absolute_path)
return 0
def main(argv):
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument('name')
parser.set_defaults(func=namedpython_argparse)
return betterhelp.single_main(argv, parser, __doc__)
if __name__ == '__main__':
raise SystemExit(main(sys.argv[1:]))