36 lines
731 B
Text
36 lines
731 B
Text
|
#!/usr/bin/python
|
||
|
from configparser import ConfigParser
|
||
|
from os import chdir, getcwd
|
||
|
from os.path import isfile
|
||
|
from pathlib import Path
|
||
|
from signal import signal, SIGPIPE, SIG_DFL
|
||
|
from sys import argv
|
||
|
|
||
|
config = ConfigParser()
|
||
|
FILE = f'{getcwd()}/.goto'
|
||
|
while not isfile(FILE):
|
||
|
if(getcwd() == '/'):
|
||
|
exit()
|
||
|
else:
|
||
|
chdir(Path(getcwd()).parent)
|
||
|
FILE = f'{getcwd()}/.goto'
|
||
|
config.read(FILE)
|
||
|
places = config['goto']
|
||
|
|
||
|
if len(argv) == 0:
|
||
|
exit()
|
||
|
|
||
|
if argv[1] == '-l' or argv[1] == '--list':
|
||
|
for title in places:
|
||
|
print(f'{title} -> {places[title]}')
|
||
|
exit()
|
||
|
|
||
|
if argv[1] not in places:
|
||
|
exit()
|
||
|
|
||
|
path = places[argv[1]]
|
||
|
if path.startswith('./'):
|
||
|
path = f'{str(Path(FILE).parent)}/{path[2:]}'
|
||
|
signal(SIGPIPE, SIG_DFL)
|
||
|
print(path)
|