Initial commit
This commit is contained in:
97
pgm/datafilepath
Executable file
97
pgm/datafilepath
Executable file
@ -0,0 +1,97 @@
|
||||
#!/usr/bin/env python3
|
||||
import os
|
||||
import sys
|
||||
import time
|
||||
|
||||
USAGE = """
|
||||
Usage:
|
||||
|
||||
datafilepath <proposal> [<instrument>] [<year>]
|
||||
|
||||
set current proposal for an instrument for fit
|
||||
"""
|
||||
|
||||
instrument = os.environ.get('dat_defspec', None)
|
||||
proposal = os.environ.get('dat_proposal', None)
|
||||
printit = True
|
||||
|
||||
filename = '/tmp/.senv_%s.%s' % (os.environ['USER'], os.getppid())
|
||||
lines = []
|
||||
envdict = {}
|
||||
try:
|
||||
with open(filename, 'r') as f:
|
||||
for line in f:
|
||||
if not line.startswith('setenv '):
|
||||
if line.strip() != '#':
|
||||
lines.append(line)
|
||||
continue
|
||||
head, name, value = line.split()
|
||||
if value[0] == "'" and value[-1] == "'":
|
||||
value = value[1:-1]
|
||||
envdict[name] = value
|
||||
except FileNotFoundError:
|
||||
lines = ['test $$ = %s && rm -f %s' % (os.getppid(), filename)]
|
||||
|
||||
proposal = os.environ.get('dat_proposal', envdict.get('dat_proposal', None))
|
||||
if len(sys.argv) > 1:
|
||||
proposal = sys.argv[1]
|
||||
elif proposal is None:
|
||||
if printit:
|
||||
print(USAGE)
|
||||
printit = False
|
||||
proposal = input('proposal: ')
|
||||
envdict['dat_proposal'] = proposal
|
||||
|
||||
instrument = os.environ.get('dat_defspec', envdict.get('dat_defspec', None))
|
||||
if len(sys.argv) > 2:
|
||||
instrument = sys.argv[2]
|
||||
elif instrument is None:
|
||||
if printit:
|
||||
print(USAGE)
|
||||
printit = False
|
||||
instrument = input('instrument: ')
|
||||
envdict['dat_defspec'] = instrument
|
||||
|
||||
if len(sys.argv) > 3:
|
||||
envdict['dat_defyear'] = sys.argv[3]
|
||||
|
||||
key = 'dat_spec_%s' % instrument
|
||||
datspec = envdict.get(key, os.environ.get(key, None))
|
||||
if datspec is None:
|
||||
if printit:
|
||||
print(USAGE)
|
||||
printit = False
|
||||
datspec = input('file path (containing ****** for numor): ')
|
||||
|
||||
elements = []
|
||||
for spc in datspec.split(','):
|
||||
res = []
|
||||
for elm in spc.split('/'):
|
||||
if elm.startswith(instrument + '%%%%n'):
|
||||
res[-1] = proposal
|
||||
res.append(elm)
|
||||
elements.append('/'.join(res))
|
||||
datspec = ','.join(elements)
|
||||
envdict[key] = datspec
|
||||
|
||||
with open(filename, 'w') as f:
|
||||
for key, value in envdict.items():
|
||||
f.write("setenv %s '%s'\n#%s\n" % (key, value, os.environ.get(key, '')))
|
||||
f.write('\n'.join(lines))
|
||||
f.write('\n')
|
||||
|
||||
year = envdict.get('dat_defyear', time.strftime('%Y' , time.localtime()))
|
||||
datspec = datspec.replace('%%%%', year)
|
||||
|
||||
if len(sys.argv) < 2:
|
||||
if printit:
|
||||
print(USAGE)
|
||||
printit = False
|
||||
|
||||
print('data file path:\n')
|
||||
last = ''
|
||||
for element in datspec.split(','):
|
||||
if '/' not in element:
|
||||
element = last.rsplit('.', 1)[0] + element
|
||||
print(element)
|
||||
last = element
|
Reference in New Issue
Block a user