home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / VSCPPv7.zip / VACPP / IBMCPP / smarts / SCRIPTS / DAXSCR.CMD < prev    next >
OS/2 REXX Batch file  |  1995-06-02  |  11KB  |  265 lines

  1. /*REXX*/
  2.  
  3. /*   DAXSCR.CMD   Project Smarts install script for a Data Access Builder project
  4.  *
  5.  *   Licensed Materials - Property of IBM
  6.  *
  7.  *   "Restricted Materials of IBM"
  8.  *
  9.  *   IBM WorkFrame
  10.  *
  11.  *   (C) Copyright IBM Corp. 1995. All Rights Reserved.
  12.  *
  13.  *   US Government Users Restricted Rights - Use, duplication or
  14.  *   disclosure restricted by GSA ADP Schedule Contract with
  15.  *   IBM Corp.
  16.  *
  17.  */
  18.  
  19.  
  20. /* Initialize - use a global stem variable. */
  21. stem = "stem"
  22. RC_OK     = 0
  23. RC_CANCEL = 95
  24.  
  25. /* Open the installation console. */
  26. rc = IwfOpenConsole(stem);
  27.  
  28. /* Load the REXX utility functions. */
  29. rc = RxFuncAdd('SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs');
  30. rc = SysLoadFuncs();
  31.  
  32.  
  33. /* Extract the passed parameters. */
  34. if (Arg() <> 3) Then
  35.    call Abort("Error in parameter list.");
  36. Parse Arg Proj,Src,Cat;
  37.  
  38. SAY Cat
  39.  
  40. /* Initialize the progress, status, and log. */
  41. stem.usPercent     = 0
  42. stem.pszStatusText = "Initializing..."
  43. rc = IwfUpdateConsoleProgress(stem);
  44. rc = IwfUpdateConsoleStatus(stem);
  45. SAY "Initializing the Project Smarts install..."
  46. SAY " "
  47.  
  48. /* Present disclaimers. */
  49. stem.usPercent     = 10
  50. stem.pszStatusText = "Presenting disclaimers..."
  51. rc = IwfUpdateConsoleProgress(stem);
  52. rc = IwfUpdateConsoleStatus(stem);
  53. line1 = 'DISCLAIMER OF WARRANTIES.  The code that will be installed is '
  54. line2 = 'template code created by IBM Corporation. This code is not '
  55. line3 = 'part of any standard or IBM product and is provided to you solely '
  56. line4 = 'for  the purpose of assisting you in the development of your '
  57. line5 = 'applications.  The code is provided "AS IS", without '
  58. line6 = 'warranty of any kind.  IBM shall not be liable for any damages '
  59. line7 = 'arising out of your use of the sample code, even if they have been '
  60. line8 = 'advised of the possibility of such damages.'
  61. SAY line1||line2||line3||line4||line5||line6||line7||line8
  62. SAY " "
  63.  
  64. /* Query the target location for the install. */
  65. stem.usPercent     = 30
  66. stem.pszStatusText = "Querying the install location..."
  67. rc = IwfUpdateConsoleProgress(stem);
  68. rc = IwfUpdateConsoleStatus(stem);
  69. SAY "Enter the project name, target directory, and folder for the installation."
  70. /* Set defaults for Location dialog */
  71. env='OS2ENVIRONMENT';                  /* Default target directory */
  72. tmploc = VALUE('tmp',,env)             /* is on TMP variable dir   */  
  73. tmploc = STRIP(tmploc,Trailing,'\');   /* Strip any backslashes at end of path */
  74. Locn = tmploc||'\daxprj';
  75. stem.pszTargetProject   = Proj
  76. stem.pszTargetDirectory = Locn
  77. stem.pszTargetFolder    = "Desktop"
  78. do until (rc = RC_OK)
  79.    rc = IwfQueryLocation(stem);
  80.    if (rc  = RC_CANCEL) then call Cancel
  81.    else
  82.    if (rc <> RC_OK) then call Abort("Error querying target information.");
  83. end
  84.  
  85.  
  86. /* Set up default variable settings for the installation. */
  87. stem.usPercent     = 40
  88. stem.pszStatusText = "Confirming variable settings..."
  89. stem.usVariableCount = 8
  90.  
  91. stem.pszVariableName.1        = "Your_Name"
  92. stem.pszVariableDescription.1 = "Your name for the source code prolog."
  93. stem.pszVariableValue.1       = "Your name"
  94. stem.pszVariableName.2        = "Date"
  95. stem.pszVariableDescription.2 = "The date for the source code prolog."
  96. stem.pszVariableValue.2       = Date()
  97. stem.pszVariableName.3        = "Application_Type"
  98. stem.pszVariableDescription.3 = "The type of DAX application you want to create: \n1 for C++ \n2 for SOM IDL"
  99. stem.pszVariableValue.3       = "1"
  100. stem.pszVariableName.4        = "File_name"
  101. stem.pszVariableDescription.4 = "The file name for the generated application files, for example, DAXBASIC.\n"
  102. stem.pszVariableValue.4       = "daxbasic"
  103. stem.pszVariableName.5        = "Prolog" 
  104. stem.pszVariableDescription.5 = "The prolog that appears at the head of all the generated source files." 
  105. stem.pszVariableValue.5       = "/* %FILE_NAME%.  This file was created for %YOUR_NAME% by Project Smarts on %DATE%. */"
  106. stem.pszVariableName.6        = "Datastore_Name"
  107. stem.pszVariableDescription.6 = "The name of an existing DB2/2 datastore whose data to access. A connection is established to this datastore in the generated application. "
  108. stem.pszVariableValue.6       = "DATASTOR"
  109. stem.pszVariableName.7        = "DAX_Class"
  110. stem.pszVariableDescription.7 = "Name of the Data Access class to be generated by the Data Access Builder tool."
  111. stem.pszVariableValue.7       = "DAX_Class"
  112. stem.pszVariableName.8        = "DAX_File"
  113. line1 = "File stem of the data access source files to be generated by the Data Access Builder tool.  For a C++ application, a 'v' is "
  114. line2 = "appended to this value to form the generated header file name.  For a SOM application, an 'i' is appended."
  115. stem.pszVariableDescription.8 = line1||line2;
  116. stem.pszVariableValue.8       = "daxfile"
  117. stem.pszVariableName.9        = "GenType"
  118. stem.pszVariableDescription.9 = ""
  119. stem.pszVariableValue.9       = "Parts"
  120. stem.pszVariableName.10        = "IDLNote"
  121. stem.pszVariableDescription.10 = ""
  122. stem.pszVariableValue.10       = ""
  123. rc = IwfUpdateConsoleProgress(stem);
  124. rc = IwfUpdateConsoleStatus(stem);
  125. SAY "Confirm the settings of variables used to customize the installation."
  126. /* Restore any saved variable settings */
  127. stem.pszCatalog = Cat;
  128. stem.pszApplication = 'VAPSDAX';
  129. rc = IwfRestoreVariables(stem);
  130. if (rc <> RC_OK) then SAY ("Could not restore variable settings. Will use defaults.");
  131. /* Restore date to current date */
  132. stem.pszVariableValue.2 = Date()
  133. /* Display variable settings window */
  134. do until (rc = RC_OK)
  135.    rc = IwfQueryVariables(stem);
  136.    if (rc  = RC_CANCEL) then call Cancel
  137.    else
  138.    if (rc <> RC_OK) then call Abort("Error querying variable settings.");
  139.    call CheckVars;
  140. end
  141. /* Save variable settings */
  142. rc = IwfSaveVariables(stem);
  143. if (rc <> RC_OK) then SAY ("Error saving variable settings.");
  144.  
  145.  
  146. /* Process variable settings */
  147. stem.usVariableCount = 10
  148. if stem.pszVariableValue.3 = "1" then stem.pszVariableValue.9 = "Parts"
  149.                                  else stem.pszVariableValue.9 = "IDL"
  150.  
  151. IDLNote = "\nNote: You also need to generate the .xh files for the Data Access SOM Class \nLibrary, if you have not already done so.\n "
  152. if stem.pszVariableValue.3 = "1" then stem.pszVariableValue.10 = " "
  153.                                  else stem.pszVariableValue.10 = IDLNote
  154.  
  155. /* Copy the files over, substituting the variable settings. */
  156. stem.usPercent     = 50
  157. stem.pszStatusText = "Copying files, with substitution."
  158. rc = IwfUpdateConsoleProgress(stem);
  159. rc = IwfUpdateConsoleStatus(stem);
  160. /* Copy the readme file over */
  161. stem.pszSourceFileMask = Src
  162. rc = IwfCopyWithSubstitution(stem);
  163. if (rc <> RC_OK) then call Abort("Error copying readme file.");
  164. /* Copy source files from the correct directory */
  165. if (DAXType="1") then stem.pszSourceFileMask = Src'\DAXCPP'
  166.                  else stem.pszSourceFileMask = Src'\DAXSOM';
  167. SAY "The project source files in" stem.pszSourceFileMask "are being copied to" stem.pszTargetDirectory"."
  168. rc = IwfCopyWithSubstitution(stem);
  169. if (rc <> RC_OK) then call Abort("Error performing copy with substitution.");
  170.  
  171.  
  172. /* Renaming files */
  173. stem.usPercent     = 60
  174. stem.pszStatusText = "Renaming files."
  175. rc = IwfUpdateConsoleProgress(stem);
  176. rc = IwfUpdateConsoleStatus(stem);
  177. curdir = DIRECTORY();
  178. newdir = DIRECTORY(stem.pszTargetDirectory);
  179. SAY "Renaming files in "newdir" to "stem.pszVariableValue.4;
  180. rename 'daxbasic.* 'stem.pszVariableValue.4'.*'
  181. if (rc <> RC_OK) then call Abort("Error renaming files. The specified file name may be invalid or the disk is full. Please delete any created files and start over.");
  182. call DIRECTORY curdir;
  183.  
  184.  
  185. /* Create the WorkFrame project */
  186. stem.usPercent     = 90;
  187. stem.pszStatusText = "Creating the Workframe/2 project.";
  188. rc = IwfUpdateConsoleProgress(stem);
  189. rc = IwfUpdateConsoleStatus(stem);
  190. SAY "The project will be created in "stem.pszTargetFolder;
  191. /* Get the path of the shell projects */
  192. ShellPath = VALUE('CPPMAIN',,env);   /* on CPPMAIN variable path */
  193. if ShellPath='' then call Abort("Error obtaining Project Smarts path.");
  194. ShellPath = ShellPath'\smarts\projects';
  195. if (DAXType="1") then stem.pszSourceProject = ShellPath'\DAXCPP';
  196. if (DAXType="2") then stem.pszSourceProject = ShellPath'\DAXSOM';
  197. SAY "Shell project: "stem.pszSourceProject;
  198. pszTarDir = stem.pszTargetDirectory;
  199. stem.pszTargetProjectSetup = 'TARGETNAME='stem.pszVariableValue.4'.dll;MAKEFILENAME='stem.pszVariableValue.4'.mak;PAMLOCATION:IWFBPAM='pszTarDir';PAMDEFAULT:IWFBPAM='pszTarDir';INHERITLIST=<CPPDFTPRJ>;TITLE='stem.pszTargetProject';'
  200. SAY stem.pszTargetProjectSetup;
  201. rc = IwfCreateProjectFromProject(stem)
  202. if (rc <> RC_OK) then call Abort("Error creating project.");
  203.  
  204.  
  205. /* Done! */
  206. stem.usPercent     = 100
  207. stem.pszStatusText = "Installation successful."
  208. rc = IwfUpdateConsoleProgress(stem);
  209. rc = IwfUpdateConsoleStatus(stem);
  210. SAY "The installation is complete and was successful."
  211. rc = RxMessageBox("The WorkFrame project has been created.", "Done!", "OK", "Information");
  212.  
  213. /* We are done. */
  214. call Done(0);
  215.  
  216.  
  217. CheckVars:
  218. /**** Process variable settings ****/
  219. /* Take only an 8-character file name */
  220. /* stem.pszVariableValue.4 = SUBSTR(stem.pszVariableValue.4,1,8); */
  221. /* stem.pszVariableValue.4 = STRIP(stem.pszVariableValue.4);      */
  222. SAY "New file name is: "stem.pszVariableValue.4;
  223. /* stem.pszVariableValue.8 = SUBSTR(stem.pszVariableValue.8,1,8); */
  224. /* stem.pszVariableValue.8 = STRIP(stem.pszVariableValue.8);      */
  225. SAY "Include file name is: "stem.pszVariableValue.8;
  226. /* Strip any backslashes from the end of the specified target path */
  227. stem.pszTargetDirectory = STRIP(stem.pszTargetDirectory,Trailing,'\');
  228. /* Strip any leading or trailing spaces from numeric variable values */
  229. stem.pszVariableValue.3 = STRIP(stem.pszVariableValue.3);
  230. DAXType = stem.pszVariableValue.3
  231. /* Check for invalid values */
  232. if \((DAXType = "1") | (DAXType = "2")) then
  233. DO
  234.  call ErrorMsg("Invalid application type specified.");
  235.  stem.pszVariableValue.3 = "1"
  236.  rc = RC_NOTOK
  237. END
  238. return;
  239.  
  240.  
  241. Cancel:
  242. rcCancel = RxMessageBox("Do you really want to cancel?", , "YesNo", "Query")
  243. if (rcCancel = 6) Then
  244.    call Done(8)
  245. return;
  246.  
  247. Abort:
  248. parse arg abortMessage
  249. rcAbort = RxMessageBox(abortMessage, , "OK", "Error")
  250. call Done(16);
  251.  
  252. ErrorMsg:
  253. parse arg errorMsg
  254. rcMsg = RxMessageBox(errorMsg, , "OK", "Error")
  255. return
  256.  
  257. Done:
  258. arg exitRc
  259. /* Close the installation console. */
  260. rcDone = IwfCloseConsole(stem);
  261. exit(exitRc);
  262.  
  263.  
  264.  
  265.