home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 11 Util / 11-Util.zip / prcr122.zip / CrProg.cmd next >
OS/2 REXX Batch file  |  1997-01-26  |  5KB  |  197 lines

  1. /* Program Creator v1.22 */
  2. /* Copyright (c) 1995, 1997 Anssi Blomqvist */
  3.  
  4. Call rxfuncadd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
  5. call SysLoadFuncs
  6.  
  7. text.1='                   Program Creator version 1.22'
  8. text.2='                   ----------------------------'
  9. text.3='(c) 1995, 1997 Anssi Blomqvist, abblomqv@rock.helsinki.fi'
  10. text.4='Creating program object...'
  11. text.5='Object was successfully created.'
  12. text.6='Error creating program object!'
  13. text.7="- Check that there aren't already an object with the same name on the desktop."
  14. text.8='Usage:'
  15. text.9='Drag and drop a program file on the Program Creator icon.'
  16. text.10='From command line:'
  17. text.11='CrProg filename (must be a valid file type)'
  18. text.12='Invalid filename!'
  19. text.13='Creating folder...'
  20. text.14='Error creating folder!'
  21. tfile='\PRCRTEMP'
  22. type.1='EXE'
  23. type.2='CMD'
  24. type.3='COM'
  25. type.4='BAT'
  26. type.5='INF'    ; exec.5='VIEW.EXE'
  27. type.6='TXT'    ; exec.6='E.EXE'
  28. type.7='ME'     ; exec.7='E.EXE'
  29. type.8='1ST'    ; exec.8='E.EXE'
  30. type.9='NOW'    ; exec.9='E.EXE'
  31. type.10='DOC'    ; exec.10='E.EXE'
  32. type.11='SYS'    ; exec.11='E.EXE'
  33. type.12='HTM'    ; exec.12='APPLET.EXE'
  34. type.13='HTML'   ; exec.13='APPLET.EXE'
  35. type.14='CLASS'  ; exec.14='JAVAPM.EXE'  ; extension.14='NO'
  36. first=5
  37. last=14
  38.  
  39. Say
  40. Say text.1
  41. Say text.2
  42. Say
  43. Say text.3
  44. Say
  45. Say
  46.  
  47. '@echo off'
  48. n=setlocal()
  49. parse arg Ar
  50. If Ar = '' Then signal Usage
  51. Ar=strip(Ar,,'"')
  52. ndir=directory(Ar)
  53. If filespec('name',ndir)=filespec('name',Ar) then call makefol
  54. else do
  55.    interactive='y'
  56.    call makeprog Ar
  57. end /* do */
  58. if interactive<>'y' then do
  59.    say
  60.    say 'Completed succesfully!'
  61. end  /* Do */
  62. call ending
  63.  
  64. makefol:
  65.    say text.13
  66.    say
  67.    fname=capitalize(filespec('name', Ar))
  68.    objid='<PRCR_'||translate(fname)||'>'
  69.    string='OBJECTID='||objid
  70.    rc=SysCreateObject("WPFolder", fname, "<WP_DESKTOP>", string, "f")
  71.    If rc <> 1 Then call failed
  72.    Else do
  73.       Say text.5
  74.       rc=SysSetObjectData(objid, 'OPEN=DEFAULT')
  75.       call makefile
  76.    end
  77. return
  78.  
  79. failed:
  80.    Beep(440,400)
  81.    Say text.14
  82.    Say
  83.    'Pause'
  84. Exit
  85.  
  86. makefile:
  87.    lastline=0
  88.    'DIR /F *.EXE *.CMD *.INF *.TXT *.1ST *.DOC *.ME 1>'||tfile||' 2>nul'
  89.    rc=stream(tfile,'C','OPEN')
  90.    i=0
  91.    eof=0
  92.    do until eof
  93.       l=linein(tfile)
  94.       if l='' then eof=1
  95.       else do
  96.          i=i+1
  97.          line.i=l
  98.       end  /* Do */
  99.    end /* do */
  100.    rc=stream(tfile,'C','CLOSE')
  101.    lastline=i
  102.    if lastline>0 then do i=1 to lastline
  103.       interactive='n'
  104.       call makeprog line.i
  105.    end /* do */
  106. return
  107.  
  108. makeprog:
  109.    parse arg Argu
  110.    Pnam=filespec('name',Argu)
  111.    pplace=lastpos('.',Pnam)
  112.    Prog = Translate(Argu, ' ', '.')
  113.    Wcount = Words(Prog)
  114.    Ext = Translate(Word(Prog, Wcount))
  115.    hit=0
  116.    do n=1 to last until hit
  117.       if ext=type.n then hit=1
  118.    end
  119.    If hit=0 Then signal Usage
  120.    Pname = substr(Pnam,1,pplace-1)
  121.    Progname=capitalize(Pname)
  122.    drive = filespec('d',Argu)
  123.    path = filespec('p',Argu)
  124.    If path<>'' Then path = Substr(path,1,length(path)-1)
  125.    cdir = Directory(drive||path)
  126.    If cdir ='' then signal error
  127.    If Substr(cdir,length(cdir)) <> '\' then cdir=Insert(cdir,'\')
  128.    prog=cdir||pnam
  129.    if n < first then do
  130.      dstring='STARTUPDIR=' || cdir
  131.      Program = 'EXENAME=' || Prog || ';' || dstring
  132.    end /* do */
  133.    else Program=progn(n)
  134.    if interactive='y' then do
  135.       Say text.4
  136.       Say
  137.    end
  138.    if interactive='y' then loc='<WP_DESKTOP>'
  139.    else loc=objid
  140.    result=SysCreateObject("WPProgram", Progname, loc, Program, "f")
  141.    If result = 1 Then Say text.5
  142.    Else if interactive='y' then Do
  143.       Beep(440,400)
  144.       Say text.6
  145.       Say
  146.       Say text.7
  147.       Say
  148.       'pause'
  149.    End
  150. return
  151.  
  152. capitalize:
  153. parse arg Pname
  154.    Caps = (verify(Pname,Xrange('A','Z'))=0)
  155.    Small = (verify(Pname,Xrange('a','z'))=0)
  156.    If Caps | Small then Progname = Insert(Translate(Substr(Pname,1,1)),Translate(Substr(Pname,2),Xrange('a','z'),Xrange('A','Z')))
  157.    Else Progname = Pname
  158. return Progname
  159.  
  160.  
  161. progn:
  162.    parse arg lin
  163.    pstring='EXENAME=' || exec.lin
  164.    if extension.lin='NO' then par=pname
  165.    else par=filespec('n',Argu)
  166.    if words(par)>1 then par='"'||par||'"'
  167.    vstring='PARAMETERS=' ||par 
  168.    cdir=substr(cdir,1,length(cdir)-1)
  169.    dstring='STARTUPDIR=' || cdir
  170.    pstring=pstring || ';' || vstring || ';' || dstring
  171. return pstring
  172.  
  173.  
  174. Usage:
  175.    Say text.8
  176.    Say
  177.    Say text.9
  178.    Say
  179.    say
  180.    Say text.10
  181.    Say
  182.    say text.11
  183.    say
  184.    say
  185.    'Pause'
  186. Exit
  187.  
  188. Error:
  189.    Beep(440,400)
  190.    Say text.12
  191.    '@pause'
  192. Exit
  193.  
  194. Ending:
  195.    'del '||tfile||' 2>nul'
  196. exit 0
  197.