From bd7649285c768f8625ab24b6a117db89e2019a56 Mon Sep 17 00:00:00 2001
From: Joe Garcia <joe.garcia@ssec.wisc.edu>
Date: Fri, 23 Jun 2017 12:22:03 -0500
Subject: [PATCH] re-l documentation!

---
 ShellB3/sbin/re-l | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/ShellB3/sbin/re-l b/ShellB3/sbin/re-l
index 17ed5c7d..9033c9f2 100755
--- a/ShellB3/sbin/re-l
+++ b/ShellB3/sbin/re-l
@@ -51,9 +51,11 @@ def getLine(f,linenumber=1):#returns native string (ascii or unicode)
             v=''
     return v
 
+#deterimine if the script is a single-parameter env-based script file
 def isRelScript(filepath):
     return getLine(filepath,linenumber=1)=='#!/usr/bin/env re-l'
 
+#extract the interpreter from a scriptfile
 def extractRelInterpreter(filepath):
     if not isRelScript(filepath):
         raise RuntimeError("Not a re-l script!")
@@ -63,11 +65,12 @@ def extractRelInterpreter(filepath):
             return l.split(':',1)[1].strip()
     raise RuntimeError("Couldn't find re-lative interpreter line (starts with '#re-l:')")
 
-def relexec(interpreter,scriptfile,*_args):
+#executes a scriptfile using a relative interpreter with given commandline args
+def relexec(scriptrelativeinterpreter,scriptfile,*_args):
     args=[None,None]+list(_args)
-    LOG('%s %s' % (interpreter,scriptfile))
+    LOG('%s %s' % (scriptrelativeinterpreter,scriptfile))
     scriptpath=os.path.dirname(os.path.realpath(scriptfile))
-    interpreter=os.path.normpath(os.path.join(scriptpath,interpreter))
+    interpreter=os.path.normpath(os.path.join(scriptpath,scriptrelativeinterpreter))
     LOG('%s %s' % (scriptpath,interpreter))
     args[0]=interpreter
     args[1]=scriptfile
@@ -84,6 +87,17 @@ def relexec(interpreter,scriptfile,*_args):
     raise RuntimeError('Exec Failed')
 
 def main():
+    if len(sys.argv)<2 or (len(sys.argv)<3 and not isRelScript(sys.argv[1])):
+        print('re-l relative interpreter proxy script')
+        print('Usage: with re-l anywhere in the path modify any script shebang to be:')
+        if 'darwin' in sys.platform:
+            print('\t#!/usr/bin/env re-l relative/path/to/interpeter')
+        else:
+            print('\t#!/usr/bin/env re-l')
+            print('and then for the second or third line, add the line:')
+            print('\t#re-l:relative/path/to/interpeter')
+        print('where the interpreter is identified relative to the script file itself')
+        sys.exit(0)
     if len(sys.argv)==2 or isRelScript(sys.argv[1]):
         assert(isRelScript(sys.argv[1]))
         relexec(extractRelInterpreter(sys.argv[1]),sys.argv[1],*sys.argv[2:])
-- 
GitLab