Files
EsfRixsApps/AppTemplate.py
2024-09-17 10:36:47 +02:00

75 lines
2.6 KiB
Python
Executable File

#!/usr/bin/env python
#*-----------------------------------------------------------------------*
#| |
#| Copyright (c) 2019 by Paul Scherrer Institute (http://www.psi.ch) |
#| |
#| Author Thierry Zamofing (thierry.zamofing@psi.ch) |
#*-----------------------------------------------------------------------*
'''
generate .subs and _startup.script files
mode bits:
0x001: unused
0x002: genIOC()
0x004: genConfig()
0x008: genLauncher()
0x010: genIOCgalil()
0x100: dumpEPICS()
0x200: updateSetPoints()
to test gpasciiComander e.g type:
gpasciiCommander -p cfg -n generate/cfg/SAROP21-OOMV092.cfg
or
for fn in generate/cfg/*.cfg; do echo $fn; gpasciiCommander -n $fn -p cfg/ >> /tmp/cfg.log; done
To check which modules versions are used:
for H in SAROP11-CPPM-MOT6761 SAROP31-CPPM-MOT6761 SATOP11-CPPM-MOT5531 SAROP11-CPPM-MOT6762 SAROP31-CPPM-MOT6762 SATOP31-CPPM-MOT553A SATOP11-CPPM-MOT5532 SATOP11-CPPM-MOT5533 SAROP21-CPPM-MOT6762 SAROP21-CPPM-MOT6763 SAROP11-CPPM-MOT6765 SAROP11-CPPM-MOT6766 SATOP31-CPPM-MOT6421 SAROP31-CPPM-MOT7173
do
caget $H:MOD_VER | grep OOM
done
Long Doc'''
tplApp='''\
#!/bin/bash
# Check if Python version is less than 3.6
if python -c 'import sys; exit(1) if sys.version_info[0] < 3 or sys.version_info[1] < 6 else exit(0)'
then
BIN=python
else
BIN=/opt/gfa/python-3.8/latest/bin/python
fi
APP={app}
echo $BIN $APP
$BIN $APP
'''
import os, sys
if __name__=='__main__':
def parse_args():
import argparse
(h, t)=os.path.split(sys.argv[0]);cmd='\n '+(t if len(h)>20 else sys.argv[0])+' '
#print(sys.argv,h,t)
exampleCmd=(
'-b /tmp -a sample',
'-b /sf/controls -a PSAS079',
'-b /sf/furka -a ARESvis -p EsfRixsApps',
)
epilog=__doc__+'\nExamples:'+''.join(map(lambda s:cmd+s, exampleCmd))+'\n'
parser = argparse.ArgumentParser(epilog=epilog,formatter_class=argparse.RawDescriptionHelpFormatter)
parser.add_argument('-b', '--base', type=str, help='base path', default='')
parser.add_argument('-a', '--app', type=str, help='application ', default='s')
parser.add_argument('-p', '--pkg', type=str, help='package ', default='')
args = parser.parse_args()
fn=os.path.join(args.base,'bin',args.app)
app=os.path.join(args.base,'applications',args.pkg,args.app,args.app+'.py')
print('generate {} that links to {}'.format(fn,app))
with open(fn,'w') as fh:
fh.write(tplApp.format(app=app))
os.chmod(fn,0o755)
parse_args()