#!/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()