"Fossies" - the Fresh Open Source Software Archive

Member "Atom/resources/app/apm/node_modules/npm/scripts/clean-old.sh" (8 Mar 2017, 4258 Bytes) of archive /windows/misc/atom-windows.zip:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Bash source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    1 #!/bin/bash
    2 
    3 # look for old 0.x cruft, and get rid of it.
    4 # Should already be sitting in the npm folder.
    5 
    6 # This doesn't have to be quite as cross-platform as install.sh.
    7 # There are some bash-isms, because maintaining *two*
    8 # fully-portable posix/bourne sh scripts is too much for
    9 # one project with a sane maintainer.
   10 
   11 # If readlink isn't available, then this is just too tricky.
   12 # However, greadlink is fine, so Solaris can join the party, too.
   13 readlink="readlink"
   14 which $readlink >/dev/null 2>/dev/null
   15 if [ $? -ne 0 ]; then
   16   readlink="greadlink"
   17   which $readlink >/dev/null 2>/dev/null
   18   if [ $? -ne 0 ]; then
   19     echo "Can't find the readlink or greadlink command. Aborting."
   20     exit 1
   21   fi
   22 fi
   23 
   24 if [ "x$npm_config_prefix" != "x" ]; then
   25   PREFIXES=$npm_config_prefix
   26 else
   27   node="$NODE"
   28   if [ "x$node" = "x" ]; then
   29     node=`which node`
   30   fi
   31   if [ "x$node" = "x" ]; then
   32     echo "Can't find node to determine prefix. Aborting."
   33     exit 1
   34   fi
   35 
   36 
   37   PREFIX=`dirname $node`
   38   PREFIX=`dirname $PREFIX`
   39   echo "cleanup prefix=$PREFIX"
   40   PREFIXES=$PREFIX
   41 
   42   altprefix=`"$node" -e process.installPrefix`
   43   if [ "x$altprefix" != "x" ] && [ "x$altprefix" != "x$PREFIX" ]; then
   44     echo "altprefix=$altprefix"
   45     PREFIXES="$PREFIX $altprefix"
   46   fi
   47 fi
   48 
   49 # now prefix is where npm would be rooted by default
   50 # go hunting.
   51 
   52 packages=
   53 for prefix in $PREFIXES; do
   54   packages="$packages
   55     "`ls "$prefix"/lib/node/.npm 2>/dev/null | grep -v .cache`
   56 done
   57 
   58 packages=`echo $packages`
   59 
   60 filelist=()
   61 fid=0
   62 
   63 for prefix in $PREFIXES; do
   64   # remove any links into the .npm dir, or links to
   65   # version-named shims/symlinks.
   66   for folder in share/man bin lib/node; do
   67     find $prefix/$folder -type l | while read file; do
   68       target=`$readlink $file | grep '/\.npm/'`
   69       if [ "x$target" != "x" ]; then
   70         # found one!
   71         filelist[$fid]="$file"
   72         let 'fid++'
   73         # also remove any symlinks to this file.
   74         base=`basename "$file"`
   75         base=`echo "$base" | awk -F@ '{print $1}'`
   76         if [ "x$base" != "x" ]; then
   77           find "`dirname $file`" -type l -name "$base"'*' \
   78           | while read l; do
   79               target=`$readlink "$l" | grep "$base"`
   80               if [ "x$target" != "x" ]; then
   81                 filelist[$fid]="$1"
   82                 let 'fid++'
   83               fi
   84             done
   85         fi
   86       fi
   87     done
   88 
   89     # Scour for shim files.  These are relics of 0.2 npm installs.
   90     # note: grep -r is not portable.
   91     find $prefix/$folder -type f \
   92       | xargs grep -sl '// generated by npm' \
   93       | while read file; do
   94           filelist[$fid]="$file"
   95           let 'fid++'
   96         done
   97   done
   98 
   99   # now remove the package modules, and the .npm folder itself.
  100   if [ "x$packages" != "x" ]; then
  101     for pkg in $packages; do
  102       filelist[$fid]="$prefix/lib/node/$pkg"
  103       let 'fid++'
  104       for i in $prefix/lib/node/$pkg\@*; do
  105         filelist[$fid]="$i"
  106         let 'fid++'
  107       done
  108     done
  109   fi
  110 
  111   for folder in lib/node/.npm lib/npm share/npm; do
  112     if [ -d $prefix/$folder ]; then
  113       filelist[$fid]="$prefix/$folder"
  114       let 'fid++'
  115     fi
  116   done
  117 done
  118 
  119 # now actually clean, but only if there's anything TO clean
  120 if [ "${#filelist[@]}" -gt 0 ]; then
  121   echo ""
  122   echo "This script will find and eliminate any shims, symbolic"
  123   echo "links, and other cruft that was installed by npm 0.x."
  124   echo ""
  125 
  126   if [ "x$packages" != "x" ]; then
  127     echo "The following packages appear to have been installed with"
  128     echo "an old version of npm, and will be removed forcibly:"
  129     for pkg in $packages; do
  130       echo "    $pkg"
  131     done
  132     echo "Make a note of these. You may want to install them"
  133     echo "with npm 1.0 when this process is completed."
  134     echo ""
  135   fi
  136 
  137   OK=
  138   if [ "x$1" = "x-y" ]; then
  139     OK="yes"
  140   fi
  141 
  142   while [ "$OK" != "y" ] && [ "$OK" != "yes" ] && [ "$OK" != "no" ]; do
  143     echo "Is this OK?"
  144     echo "  enter 'yes' or 'no'"
  145     echo "  or 'show' to see a list of files "
  146     read OK
  147     if [ "x$OK" = "xshow" ] || [ "x$OK" = "xs" ]; then
  148       for i in "${filelist[@]}"; do
  149         echo "$i"
  150       done
  151     fi
  152   done
  153   if [ "$OK" = "no" ]; then
  154     echo "Aborting"
  155     exit 1
  156   fi
  157   for i in "${filelist[@]}"; do
  158     rm -rf "$i"
  159   done
  160 fi
  161 
  162 echo ""
  163 echo 'All clean!'
  164 
  165 exit 0