home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.0 / NeXTSTEP3.0.iso / NextAdmin / Installer.app / package < prev   
Text File  |  1992-03-26  |  5KB  |  192 lines

  1. #! /bin/csh -ef
  2.  
  3. set prog = `/usr/bin/basename $0`
  4. set usage = "Usage: $prog [-B] [-f] root-dir info-file [tiff-file] [-d dest-dir]"
  5. set noglob
  6.  
  7. # gather parameters
  8. if ($#argv == 0) then
  9.     echo $usage
  10.     exit(1)
  11. endifile ( $#argv > 0 )
  12.     switch ( $argv[1] )
  13.     case -d:
  14.         if ( $?destDir ) then
  15.         echo ${prog}: dest-dir parameter already set to ${destDir}.
  16.         echo $usage
  17.         exit(1)
  18.         else if ( $#argv < 2 ) then
  19.         echo ${prog}: -d option requires destination directory.
  20.         echo $usage
  21.         exit(1)
  22.         else
  23.         set destDir = $argv[2]
  24.         shift; shift
  25.         breaksw
  26.         endif
  27.     case -f:
  28.         if ( $?rootDir ) then
  29.         echo ${prog}: root-dir parameter already set to ${rootDir}.
  30.         echo $usage
  31.         exit(1)
  32.         else if ( $#argv < 2 ) then
  33.         echo ${prog}: -f option requires package root directory.
  34.         echo $usage
  35.         exit(1)
  36.         else
  37.         set rootDir = $argv[2]
  38.         set fflag
  39.         shift; shift
  40.         breaksw
  41.         endif
  42.     case -B:
  43.         set bigTarFlag
  44.         shift
  45.         breaksw
  46.     case -*:
  47.         echo ${prog}: Unknown option: $argv[1]
  48.         echo $usage
  49.         exit(1)
  50.     case *.info:
  51.         if ( $?info ) then
  52.         echo ${prog}: info-file parameter already set to ${info}.
  53.         echo $usage
  54.         exit(1)
  55.         else
  56.         set info = "$argv[1]"
  57.         shift
  58.         breaksw
  59.         endif
  60.     case *.tiff:
  61.         if ( $?tiff ) then
  62.         echo ${prog}: tiff-file parameter already set to ${tiff}.
  63.         echo $usage
  64.         exit(1)
  65.         else
  66.         set tiff = "$argv[1]"
  67.         shift
  68.         breaksw
  69.         endif
  70.     default:
  71.         if ( $?rootDir ) then
  72.         echo ${prog}: unrecognized parameter: $argv[1]
  73.         echo $usage
  74.         exit(1)
  75.         else
  76.         set rootDir = "$argv[1]"
  77.         shift
  78.         breaksw
  79.         endif
  80.     endsw
  81. end
  82.  
  83. # check for mandatory parameters
  84. if ( ! $?rootDir ) then
  85.     echo ${prog}: missing root-dir parameter.
  86.     echo $usage
  87.     exit(1)
  88. else if ( ! $?info) then
  89.     echo ${prog}: missing info-file parameter.
  90.     echo $usage
  91.     exit(1)
  92. endif
  93.  
  94. # destDir gets default value if unset on command line
  95. if ( $?destDir ) then
  96.     /bin/mkdirs $destDir
  97. else
  98.     set destDir = .
  99. endif
  100.  
  101. # derive the root name for the package from the root name of the info file
  102. set root = `/usr/bin/basename $info .info`
  103.  
  104. # create package directory
  105. set pkg = ${destDir}/${root}.pkg
  106. echo Generating Installer package $pkg ...
  107. if ( -e $pkg ) /bin/rm -rf $pkg
  108. /bin/mkdirs -m 755 $pkg
  109.  
  110. # tar and compress root directory to package archive
  111. set pkgArchive = $pkg/$root.tar.Z
  112. echo -n "    creating package archive ... "
  113. if ( $?fflag ) then
  114.     set pkgTop = ${rootDir:t}
  115.     set parent = ${rootDir:h}
  116.     if ( "$parent" == "$pkgTop" ) set parent = "."
  117.     if ( $?bigTarFlag ) then
  118.     (cd $parent; /NextAdmin/Installer.apstaller_bigtar cf - $pkgTop) | /usr/ucb/compress -f -c > $pkgArchive
  119.     else 
  120.     (cd $parent; /bin/tar cf - $pkgTop) | /usr/ucb/compress -f -c > $pkgArchive
  121.     endif
  122. else
  123.     if ( $?bigTarFlag ) then
  124.     (cd $rootDir; /NextAdmin/Installer.app/installer_bigtar cf - .) | /usr/ucb/compress -f -c > $pkgArchive
  125.     else
  126.     (cd $rootDir; /bin/tar cf - .) | /usr/ucb/compress -f -c > $pkgArchive
  127.     endif
  128. endif
  129. /bin/chmod 444 $pkgArchive
  130. echo done.
  131.  
  132. # copy info file to package
  133. set pkgInfo = $pkg/$root.info
  134. echo -n "    copying ${info:t} ... "
  135. /bin/cp $info $pkgInfo
  136. /bin/chmod 444 $pkgInfo
  137. echo done.
  138.  
  139. # copy tiff file to package
  140. if ( $?tiff ) then
  141.     set pkgTiff = $pkg/$root.tiff
  142.     echo -n "    copying ${tiff:t} ... "
  143.     /bin/cp $tiff $pkgTiff
  144.     /bin/chmod 444 $pkgTiff
  145.     echo done.
  146. endif
  147.  
  148. # generate bom file
  149. set pkgBom = $pkg/$root.bom
  150. echo -n "    generating bom file ... "
  151. if ( $?bigTarFlag ) then
  152.     /usr/ucb/zcat $pkgArchive | /NextAdmin/Installer.app/installer_bigtar tvf - > $pkgBom
  153. else
  154.     /usr/ucb/zcat $pkgArchive | /NextAdmin/Installer.app/installer_tar tvf - > $pkgBom
  155. endif
  156. /bin/chmod 444 $pkgArchive
  157. echo done.
  158.     
  159. # generate sizes file
  160. set pkgSizes = $pkg/$root.sizes
  161. echo -n "    generating sizes file ... "
  162.  
  163. # compute number of files in package
  164. set numFiles = `/bin/cat $pkgBom | /usr/ucb/wc -l`
  165.  
  166. # compute package size when compressed
  167. @ compressedSize = `/bin/du -s $pkg | /bin/awk '{print $1}'`
  168. @ compressedSize += 3        # add 1KB each for sizes, location, status files
  169.  
  170. @ infoSize = `/bin/ls -s $pkgInfo | /bin/awk '{print $1}'`
  171. @ bomSize = `/bin/ls -s $pkgBom | /bin/awk '{print $1}'`
  172. if ( $?tiff ) then
  173.     @ tiffSize = `/bin/ls -s $pkgTiff | /bin/awk '{print $1}'`
  174. else
  175.     @ tiffSize = 0
  176. endif 
  177.  
  178. @ installedSize = `/bin/du -s $rootDir | /bin/awk '{print $1}'`
  179. @ installedSize += $infoSize + $bomSize + $tiffSize + 3
  180.  
  181. # echo size parameters to sizes file
  182. echo NumFiles $numFiles > $pkgSizes
  183. echo InstalledSize $installedSize >> $pkgSizes
  184. echo CompressedSize $compressedSize >> $pkgSizes
  185. echo done.
  186. echo " ... finished generating $pkg."
  187.  
  188. exit(0)
  189.  
  190. # end package
  191.     
  192.