This repository has been archived by the owner on Aug 11, 2022. It is now read-only.
/
clean-old.sh
127 lines (107 loc) · 3.05 KB
/
clean-old.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#!/bin/sh
# look for old 0.x cruft, and get rid of it.
# Should already be sitting in the npm folder.
node="$NODE"
if [ "x$node" = "x" ]; then
node=`which node`
fi
if [ "x$node" = "x" ]; then
echo "Can't find node to determine prefix. Aborting."
fi
PREFIX=`dirname $node`
PREFIX=`dirname $PREFIX`
echo "prefix=$PREFIX"
PREFIXES=$PREFIX
altprefix=`$node -e process.installPrefix`
if ! [ "x$altprefix" = "x" ] && ! [ "x$altprefix" = "x$PREFIX" ]; then
echo "altprefix=$altprefix"
PREFIXES="$PREFIX $altprefix"
fi
# now prefix is where npm would be rooted by default
# go hunting.
packages=
for prefix in $PREFIXES; do
packages="$packages
"`ls "$prefix"/lib/node/.npm 2>/dev/null | grep -v .cache`
done
packages=`echo $packages`
echo ""
echo "This script will find and eliminate any shims, symbolic"
echo "links, and other cruft that was installed by npm 0.x."
echo ""
if ! [ "x$packages" = "x" ]; then
echo "The following packages appear to have been installed with"
echo "an old version of npm, and will be removed forcibly:"
for pkg in $packages; do
echo " $pkg"
done
echo "Make a note of these. You may want to install them"
echo "with npm 1.0 when this process is completed."
echo ""
fi
OK=
if [ "x$1" = "x-y" ]; then
OK="yes"
fi
while ! [ "$OK" = "y" ] && ! [ "$OK" = "yes" ] && ! [ "$OK" = "no" ]; do
echo "Is this OK? enter 'yes' or 'no' "
read OK
done
if [ "$OK" = "no" ]; then
echo "Aborting"
exit 1
fi
filelist=""
for prefix in $PREFIXES; do
# remove any links into the .npm dir, or links to
# version-named shims/symlinks.
for folder in share/man bin lib/node; do
find $prefix/$folder -type l | while read file; do
target=`readlink $file | grep '/\.npm/'`
if ! [ "x$target" = "x" ]; then
# found one!
echo rm -rf "$file"
rm -rf "$file"
# also remove any symlinks to this file.
base=`basename "$file"`
base=`echo "$base" | awk -F@ '{print $1}'`
if ! [ "x$base" = "x" ]; then
find "`dirname $file`" -type l -name "$base"'*' \
| while read l; do
target=`readlink "$l" | grep "$base"`
if ! [ "x$target" = "x" ]; then
echo rm -rf $l
rm -rf $l
fi
done
fi
fi
done
# Scour for shim files. These are relics of 0.2 npm installs.
# note: grep -r is not portable.
find $prefix/$folder -type f \
| xargs grep -sl '// generated by npm' \
| while read file; do
echo rm -rf $file
rm -rf $file
done
done
# now remove the package modules, and the .npm folder itself.
if ! [ "x$packages" = "x" ]; then
for pkg in $packages; do
echo rm -rf $prefix/lib/node/$pkg
rm -rf $prefix/lib/node/$pkg
echo rm -rf $prefix/lib/node/$pkg\@*
rm -rf $prefix/lib/node/$pkg\@*
done
fi
for folder in lib/node/.npm lib/npm share/npm; do
if [ -d $prefix/$folder ]; then
echo rm -rf $prefix/$folder
rm -rf $prefix/$folder
fi
done
done
echo ""
echo 'All clean!'
exit 0