Compare commits
722 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f0471acbf5 | ||
|
|
fda05fb64b | ||
|
|
2737a95645 | ||
|
|
5706aef3d0 | ||
|
|
cd4fc8fb2c | ||
|
|
050a2ee9d3 | ||
|
|
ff92ba7f43 | ||
|
|
804f2759f8 | ||
|
|
d5fe657382 | ||
|
|
3e4613fd66 | ||
|
|
9aec19a692 | ||
|
|
b707d8b072 | ||
|
|
be605cb12b | ||
|
|
3c66c20570 | ||
|
|
59bfdb9863 | ||
|
|
25bd2bb018 | ||
|
|
4a8a5a1180 | ||
|
|
145da7eef8 | ||
|
|
4cf56ae186 | ||
|
|
5ad00f13fa | ||
|
|
53f9841c6c | ||
|
|
444efdb08b | ||
|
|
6fde379707 | ||
|
|
ce69c8413e | ||
|
|
51f6109f8d | ||
|
|
4f081ce4be | ||
|
|
db0051753a | ||
|
|
cf1110ecea | ||
|
|
34b97bf76d | ||
|
|
b962a590a2 | ||
|
|
ddb25ed5a3 | ||
|
|
486d14f5f8 | ||
|
|
622fdd2cd0 | ||
|
|
eddbe15ee8 | ||
|
|
2e161fe414 | ||
|
|
a42b90d215 | ||
|
|
6bae6c07f2 | ||
|
|
7fd6d05426 | ||
|
|
5ef092b2c8 | ||
|
|
cb6456fd85 | ||
|
|
991fb85047 | ||
|
|
edf36a8ea7 | ||
|
|
35466187f2 | ||
|
|
c992b1766c | ||
|
|
4b2bc0be08 | ||
|
|
15b3e7b6a8 | ||
|
|
8d05ab63f1 | ||
|
|
da693eaea1 | ||
|
|
5363ff8916 | ||
|
|
e186fa27a7 | ||
|
|
f6e0104685 | ||
|
|
97d4e2f88f | ||
|
|
e0a22ccf4a | ||
|
|
d5d66c34d9 | ||
|
|
152904e3fb | ||
|
|
64de890d07 | ||
|
|
a4da8a48ef | ||
|
|
354be52672 | ||
|
|
ad604cc068 | ||
|
|
ba08fa31d8 | ||
|
|
13aadbcf31 | ||
|
|
7bb6e9c915 | ||
|
|
3d3145f2e0 | ||
|
|
4c948cf422 | ||
|
|
f8054d5cae | ||
|
|
ad2713b13a | ||
|
|
243fc04164 | ||
|
|
a80f958a1e | ||
|
|
f6fef75f36 | ||
|
|
199ba53340 | ||
|
|
d1b6332bbe | ||
|
|
159d4c645e | ||
|
|
687df82107 | ||
|
|
ff1781b95d | ||
|
|
110e571c34 | ||
|
|
a7108e98f2 | ||
|
|
30b044a368 | ||
|
|
825cb46969 | ||
|
|
ab56ec6675 | ||
|
|
9d96e4a6bf | ||
|
|
a00a3a7429 | ||
|
|
1c3585e5a2 | ||
|
|
214ce8853b | ||
|
|
d24dc662dc | ||
|
|
e8056ac460 | ||
|
|
429656bc41 | ||
|
|
b61445cbf4 | ||
|
|
603253b0cb | ||
|
|
5ee955bb62 | ||
|
|
83a0efb085 | ||
|
|
9306a9b3f0 | ||
|
|
59939d09e8 | ||
|
|
f9769e40dd | ||
|
|
9c44a3e4c7 | ||
|
|
5048a78376 | ||
|
|
814319d7c0 | ||
|
|
4b3d6f1760 | ||
|
|
56c40cfa3c | ||
|
|
fd9e01b7e6 | ||
|
|
5c7f08843d | ||
|
|
6e6c5c4e2a | ||
|
|
1c2c4788a2 | ||
|
|
b59ecb9e11 | ||
|
|
7551746e55 | ||
|
|
70ac1e7fa4 | ||
|
|
f130d02efc | ||
|
|
150aea21ec | ||
|
|
273f9d497a | ||
|
|
1c85068091 | ||
|
|
42786630a1 | ||
|
|
938feca6a9 | ||
|
|
3747735980 | ||
|
|
5dd2d7e5d4 | ||
|
|
65c2435418 | ||
|
|
0a695c5d2a | ||
|
|
8fe677a644 | ||
|
|
213ff003d0 | ||
|
|
986abbf5db | ||
|
|
a2da9abd6d | ||
|
|
9068dda110 | ||
|
|
6baa9a0918 | ||
|
|
b8fe75e93a | ||
|
|
78a5e3fadf | ||
|
|
5e54886cbc | ||
|
|
d7849054f8 | ||
|
|
708ac80a55 | ||
|
|
d341d5e535 | ||
|
|
eef12cc2b3 | ||
|
|
99c8b59a14 | ||
|
|
abdc3f3c21 | ||
|
|
401ac45568 | ||
|
|
61709c1f97 | ||
|
|
1a8479ed31 | ||
|
|
a703d3591f | ||
|
|
1fa2acf5a7 | ||
|
|
d5c0e94166 | ||
|
|
6dc602b521 | ||
|
|
1d37af162a | ||
|
|
781373f7ce | ||
|
|
68574cc7e8 | ||
|
|
0f3b06320e | ||
|
|
d181abb628 | ||
|
|
f5643dc7ea | ||
|
|
6bcac7f638 | ||
|
|
ad71389dcc | ||
|
|
8cbf149558 | ||
|
|
e7ada80d08 | ||
|
|
9912f7cc46 | ||
|
|
6e02e5a54c | ||
|
|
42b010775b | ||
|
|
1c50c5c7aa | ||
|
|
200a9aa97e | ||
|
|
4512337c11 | ||
|
|
55677dba4a | ||
|
|
ca43ca21f5 | ||
|
|
fafbeb8c59 | ||
|
|
d67f2b110d | ||
|
|
9c2127ce33 | ||
|
|
423629c38b | ||
|
|
5ec0ccec1b | ||
|
|
7a423b7bb4 | ||
|
|
a3de7f3222 | ||
|
|
55d892adc8 | ||
|
|
3b42df8d1d | ||
|
|
21fa84225c | ||
|
|
4895aebf0a | ||
|
|
8a29122d0a | ||
|
|
26ed7a003a | ||
|
|
00ca5288b0 | ||
|
|
6d2912a2ab | ||
|
|
1d61584402 | ||
|
|
f6974744cd | ||
|
|
7171cbed6f | ||
|
|
8f66273922 | ||
|
|
1a9ab82e24 | ||
|
|
3fa004293c | ||
|
|
83efa2288d | ||
|
|
4cfe62d3d1 | ||
|
|
802f064178 | ||
|
|
c49cb68575 | ||
|
|
0534872e0f | ||
|
|
f1b8cf8fd6 | ||
|
|
78ff9a2215 | ||
|
|
b952be6f56 | ||
|
|
638ae5c6fa | ||
|
|
a7b6495172 | ||
|
|
703e43cc2b | ||
|
|
03636878d1 | ||
|
|
2ee4b6f414 | ||
|
|
10305f0791 | ||
|
|
276c031c60 | ||
|
|
63f72b37df | ||
|
|
cf5bfecec4 | ||
|
|
77c3f20956 | ||
|
|
e4ada9fa43 | ||
|
|
a0de15d0f7 | ||
|
|
df4689fbd2 | ||
|
|
018e47bec0 | ||
|
|
74cc1eb022 | ||
|
|
eda8ffbcc4 | ||
|
|
b9383c9016 | ||
|
|
25c0be1e20 | ||
|
|
a8233eb68c | ||
|
|
ea198c9a19 | ||
|
|
e0537ce3df | ||
|
|
cce5df35ba | ||
|
|
7e269961c3 | ||
|
|
f214ffaf1f | ||
|
|
d016fe010a | ||
|
|
fb5a51b1b7 | ||
|
|
3e5037a1be | ||
|
|
60fec40613 | ||
|
|
fb215546ee | ||
|
|
4b593bcda2 | ||
|
|
8349f0ff48 | ||
|
|
bb250b5730 | ||
|
|
b6f1c156da | ||
|
|
4c9a36e9ad | ||
|
|
bb01513eba | ||
|
|
ba7f27dead | ||
|
|
79ec957ee7 | ||
|
|
d8b55652a5 | ||
|
|
4c38f507f5 | ||
|
|
f213167ef0 | ||
|
|
1da31aa425 | ||
|
|
519a9481e6 | ||
|
|
b16bf303ca | ||
|
|
9a28706688 | ||
|
|
a318ddf9b3 | ||
|
|
8dbbc32905 | ||
|
|
de03007348 | ||
|
|
1b22c2e2b1 | ||
|
|
0e1f2408c9 | ||
|
|
931cc45fc3 | ||
|
|
085e314a3f | ||
|
|
6aa45732d8 | ||
|
|
16c0be8314 | ||
|
|
578a601b27 | ||
|
|
896aa7c436 | ||
|
|
2441b00262 | ||
|
|
88595f09aa | ||
|
|
5925bd5e37 | ||
|
|
24e22dd8bc | ||
|
|
61de5f9ca3 | ||
|
|
4de9eff55c | ||
|
|
7e20a77c89 | ||
|
|
8fbbeb8fc5 | ||
|
|
79203ba5d0 | ||
|
|
2e3e48cc06 | ||
|
|
db8acf11fd | ||
|
|
a6be718387 | ||
|
|
e2c4c88136 | ||
|
|
4cd0b078d0 | ||
|
|
f6ba08253b | ||
|
|
0ecb2879b9 | ||
|
|
e3b84499c2 | ||
|
|
b313f62749 | ||
|
|
7f3a794d89 | ||
|
|
ba1be9b4ea | ||
|
|
652a9ef9b5 | ||
|
|
0d81a219ae | ||
|
|
d6e457354f | ||
|
|
6668dc5c47 | ||
|
|
3d9c1d7852 | ||
|
|
29f582611b | ||
|
|
673cda56c4 | ||
|
|
e562a5645b | ||
|
|
c0c5e8d7ef | ||
|
|
f00d688c87 | ||
|
|
5aa78f21cf | ||
|
|
4a7275a0c6 | ||
|
|
c77be55cdc | ||
|
|
e195fccdb7 | ||
|
|
87516039a8 | ||
|
|
80e349edb1 | ||
|
|
038c1f3d0f | ||
|
|
66455f7c77 | ||
|
|
a69eae10e3 | ||
|
|
13b87449e8 | ||
|
|
222250f2d1 | ||
|
|
77f4490391 | ||
|
|
0871131dfd | ||
|
|
e6bd207624 | ||
|
|
bad79e6d77 | ||
|
|
d07fa2db10 | ||
|
|
20953ab04c | ||
|
|
4cf940153c | ||
|
|
47bbf93f50 | ||
|
|
7976a1343f | ||
|
|
bf8abf1052 | ||
|
|
eb6031cb58 | ||
|
|
55a6f1f06e | ||
|
|
c188c1b11a | ||
|
|
b15ea07067 | ||
|
|
752c0e4ef1 | ||
|
|
49364532b3 | ||
|
|
9157cb4cfe | ||
|
|
6dde4aac38 | ||
|
|
96635cd2bd | ||
|
|
5342b6a04c | ||
|
|
2d0c025c49 | ||
|
|
6ed93f4c01 | ||
|
|
3c2719a85e | ||
|
|
c47f03f996 | ||
|
|
300022642a | ||
|
|
bce3abaa4b | ||
|
|
9f6280265a | ||
|
|
7211c9ee29 | ||
|
|
246caa8581 | ||
|
|
1fac49f887 | ||
|
|
d2422a623a | ||
|
|
fcc00b22b7 | ||
|
|
0787a55999 | ||
|
|
7c45d62b37 | ||
|
|
703acb0514 | ||
|
|
744507b83e | ||
|
|
ec7909dcd3 | ||
|
|
cf5f195d75 | ||
|
|
9f0520cdd0 | ||
|
|
d950c1a0ea | ||
|
|
6123fbcd31 | ||
|
|
def7ec5364 | ||
|
|
52a384a0cc | ||
|
|
ba1e2f1cdf | ||
|
|
625e54880f | ||
|
|
cebda7d35a | ||
|
|
4a9a15c404 | ||
|
|
31c5406780 | ||
|
|
a34c080d77 | ||
|
|
0b97ee1d2a | ||
|
|
1ded21c10d | ||
|
|
e30424d22f | ||
|
|
78e7aa6b67 | ||
|
|
ae4c841742 | ||
|
|
4f9324c439 | ||
|
|
020f61500f | ||
|
|
38a0c997e2 | ||
|
|
70f1734c12 | ||
|
|
1d40a5bc8b | ||
|
|
db4c582d79 | ||
|
|
e46ee7b30b | ||
|
|
f82f38be90 | ||
|
|
3a21485050 | ||
|
|
e6887d500f | ||
|
|
472d23b990 | ||
|
|
1a19de9d20 | ||
|
|
f3d1770e3e | ||
|
|
ba2a850253 | ||
|
|
618a372f38 | ||
|
|
a09a028c38 | ||
|
|
d78905988e | ||
|
|
8cceae3cc1 | ||
|
|
192e381971 | ||
|
|
966ff0e1b0 | ||
|
|
b90a0a811e | ||
|
|
25ca41c9dc | ||
|
|
0d44ed1126 | ||
|
|
dc53a37d4f | ||
|
|
332ae1afcb | ||
|
|
9108a7f7fa | ||
|
|
3b21b76106 | ||
|
|
dcba513108 | ||
|
|
e6a5374bfb | ||
|
|
8cba9c5781 | ||
|
|
1d6145de5a | ||
|
|
ca0c8a7f1d | ||
|
|
21771e7369 | ||
|
|
a3331ffdb0 | ||
|
|
4a5f5203d0 | ||
|
|
ee6d4ab074 | ||
|
|
8925419e90 | ||
|
|
0f709eafa0 | ||
|
|
a9be598241 | ||
|
|
9a0c269713 | ||
|
|
0c8410fcc3 | ||
|
|
12d7b6fa0c | ||
|
|
274652e10e | ||
|
|
2e9558cbf9 | ||
|
|
13781f242b | ||
|
|
b6469ee186 | ||
|
|
304cc29cf0 | ||
|
|
0d5ee024d1 | ||
|
|
9a88e3656c | ||
|
|
c19535a3f5 | ||
|
|
9af7409e4a | ||
|
|
eca6118023 | ||
|
|
50485d641b | ||
|
|
cd378cb170 | ||
|
|
db7e0976f2 | ||
|
|
ecb7a15baa | ||
|
|
5f225cd625 | ||
|
|
8599ea29f9 | ||
|
|
b1d0cfa77b | ||
|
|
a0a2ee4414 | ||
|
|
60e66fa7be | ||
|
|
45eff43cd0 | ||
|
|
eb588566f2 | ||
|
|
17daa68a35 | ||
|
|
47c87b8478 | ||
|
|
58dafdaedd | ||
|
|
4d2faba9af | ||
|
|
bc4c5644f5 | ||
|
|
950da2b836 | ||
|
|
2459843b92 | ||
|
|
58033251fd | ||
|
|
8df2dd2ba8 | ||
|
|
591a3bb19d | ||
|
|
679c71650f | ||
|
|
5c7996da5b | ||
|
|
9021cf579a | ||
|
|
7afe2c5e2d | ||
|
|
8143f5a618 | ||
|
|
c211357e70 | ||
|
|
3eb09ab984 | ||
|
|
670870e211 | ||
|
|
74ca011704 | ||
|
|
83c5b6286d | ||
|
|
d7015c7f65 | ||
|
|
4ca71d81cf | ||
|
|
ed69b5cc71 | ||
|
|
f9d5a85f05 | ||
|
|
1f3ea299fa | ||
|
|
b2ef0cb14c | ||
|
|
59c4dc735a | ||
|
|
ce7d2e7618 | ||
|
|
4df45ac51a | ||
|
|
8573b95a2d | ||
|
|
94fff5c923 | ||
|
|
56e32888ea | ||
|
|
b186b6327a | ||
|
|
e99fc43ab2 | ||
|
|
cf515c4ff8 | ||
|
|
037f52a55b | ||
|
|
b714db7a95 | ||
|
|
aba4346a86 | ||
|
|
5686d9a3bb | ||
|
|
49e9a309c3 | ||
|
|
788d87774f | ||
|
|
7ccc2dd5ed | ||
|
|
7862182d6f | ||
|
|
b4a9c14d4e | ||
|
|
473dd86f48 | ||
|
|
6e1c249ecd | ||
|
|
dc7a42062e | ||
|
|
dd157129a6 | ||
|
|
d3f04c793e | ||
|
|
ef7e3cc39a | ||
|
|
e6116d96ab | ||
|
|
5e2ad5bb8d | ||
|
|
a7a91441aa | ||
|
|
a2a8ddb779 | ||
|
|
1ad9d18257 | ||
|
|
e58c495f69 | ||
|
|
676a2cc865 | ||
|
|
c6f72953c9 | ||
|
|
41352e866d | ||
|
|
34a067647c | ||
|
|
db3035c29b | ||
|
|
01f8eef7a2 | ||
|
|
e6d1d0c4de | ||
|
|
d6fe38a356 | ||
|
|
1478c72124 | ||
|
|
8e8da23711 | ||
|
|
62dec72394 | ||
|
|
c2e4e1a8a7 | ||
|
|
6a98d168b7 | ||
|
|
8ce8bef249 | ||
|
|
2b216ab5d1 | ||
|
|
af105894d7 | ||
|
|
e5d7d493b9 | ||
|
|
e0bd3735f1 | ||
|
|
81d731d355 | ||
|
|
2eddca3d9f | ||
|
|
6a6e435855 | ||
|
|
7fb6d1ec6a | ||
|
|
6690aecc6c | ||
|
|
137539cf48 | ||
|
|
4a7945f8c1 | ||
|
|
8b9c0b933c | ||
|
|
8983644854 | ||
|
|
39c5d0597d | ||
|
|
ab71d50b3a | ||
|
|
36ce8f0010 | ||
|
|
c6cb1601f7 | ||
|
|
be0b2926b3 | ||
|
|
f8a6e23fa7 | ||
|
|
1e353b2773 | ||
|
|
9537db1a4a | ||
|
|
e7e84ec376 | ||
|
|
6a2d92bc51 | ||
|
|
855d89bef0 | ||
|
|
36843d97cb | ||
|
|
c5437bb222 | ||
|
|
d428bcd50e | ||
|
|
f82cde11a9 | ||
|
|
dc46a740a3 | ||
|
|
93e84a2676 | ||
|
|
5a4c097aac | ||
|
|
5c6af59fcd | ||
|
|
72fd8c970a | ||
|
|
d1d53ea979 | ||
|
|
04dba10b9a | ||
|
|
8486a0da2b | ||
|
|
b2b29ff5c5 | ||
|
|
6c57b275db | ||
|
|
7cc6f37e69 | ||
|
|
0f05655ee6 | ||
|
|
6b932e59c3 | ||
|
|
9a8e66cfca | ||
|
|
66633de1a9 | ||
|
|
bc04ed3ece | ||
|
|
9205ff8001 | ||
|
|
367ae728fb | ||
|
|
335456d008 | ||
|
|
eade411422 | ||
|
|
cca6edfc5c | ||
|
|
42915fc21c | ||
|
|
f1b484ee87 | ||
|
|
6c3708d337 | ||
|
|
91a7aa8611 | ||
|
|
db7494494c | ||
|
|
ca44bafff2 | ||
|
|
01189e144c | ||
|
|
3fe12f0a49 | ||
|
|
e4acd63991 | ||
|
|
3ce23aa726 | ||
|
|
205117bed4 | ||
|
|
9c7da6cec3 | ||
|
|
1088b4b00f | ||
|
|
5811cb9e73 | ||
|
|
0ec339e040 | ||
|
|
7226e5fb98 | ||
|
|
bc9c82cb9f | ||
|
|
f605581c7d | ||
|
|
87a76af398 | ||
|
|
70e1b81ad3 | ||
|
|
e145978e73 | ||
|
|
a6be969403 | ||
|
|
184f641730 | ||
|
|
7dc0827eaa | ||
|
|
278fd031b0 | ||
|
|
7013372867 | ||
|
|
881178db01 | ||
|
|
1845a4a5a9 | ||
|
|
bc508802e5 | ||
|
|
0a4d3a2944 | ||
|
|
5596054445 | ||
|
|
68f7dc9cb3 | ||
|
|
9c3af112ca | ||
|
|
eaf8a50483 | ||
|
|
6c70627478 | ||
|
|
dc2bf8c526 | ||
|
|
b063b32642 | ||
|
|
7bee39fd81 | ||
|
|
2f6b0ca9d7 | ||
|
|
2662840064 | ||
|
|
1a08edd94e | ||
|
|
59c8eda18c | ||
|
|
0803e317e1 | ||
|
|
1709fa9248 | ||
|
|
3c4bf80ec7 | ||
|
|
dd3650fc8f | ||
|
|
4ffd4bb34f | ||
|
|
d6ef9c8893 | ||
|
|
21f00362b0 | ||
|
|
f3bf583285 | ||
|
|
a1d14ea5b8 | ||
|
|
3b2d2e4b61 | ||
|
|
03b16d7a67 | ||
|
|
e1ec264b26 | ||
|
|
182e28f1ae | ||
|
|
5977a02e8b | ||
|
|
ab16d34012 | ||
|
|
c4a13dd2b6 | ||
|
|
7c2dfda88d | ||
|
|
1dbb7c799d | ||
|
|
d9f25f8f58 | ||
|
|
b73f0930cc | ||
|
|
3766bff734 | ||
|
|
304924a969 | ||
|
|
a0c4229abe | ||
|
|
eea0b05ece | ||
|
|
a27d39139b | ||
|
|
903479aeca | ||
|
|
d8713bb2e8 | ||
|
|
4a6c696074 | ||
|
|
a368227237 | ||
|
|
5a17b81a09 | ||
|
|
e1be38f90d | ||
|
|
80cf1159bb | ||
|
|
9fb65cbf7b | ||
|
|
693abf3173 | ||
|
|
e755c47d5a | ||
|
|
3d65d55b5a | ||
|
|
6505c98461 | ||
|
|
5af8cec6dc | ||
|
|
ebff66649e | ||
|
|
07aaa91c9b | ||
|
|
a107b12d2a | ||
|
|
a12b6d7dd6 | ||
|
|
2adbe8bd7f | ||
|
|
04652a5090 | ||
|
|
d68c38902a | ||
|
|
cd14416bfd | ||
|
|
9190297d5e | ||
|
|
ad5242ea0b | ||
|
|
5132a1eb6f | ||
|
|
3bb2634d2f | ||
|
|
e475d7e7ab | ||
|
|
cf00a067ca | ||
|
|
f8c1822033 | ||
|
|
7d4b12446a | ||
|
|
96a4488732 | ||
|
|
3dd6b29905 | ||
|
|
91670abdca | ||
|
|
d544d8e2eb | ||
|
|
3e62657575 | ||
|
|
c371a3a26b | ||
|
|
cfa81b49d1 | ||
|
|
6e50bc0d78 | ||
|
|
6d58fcb8c0 | ||
|
|
5eb95fd641 | ||
|
|
cd7c58ff6a | ||
|
|
a86262520a | ||
|
|
60892c7b51 | ||
|
|
0dd0224f2d | ||
|
|
dcd29296e9 | ||
|
|
45051f4d43 | ||
|
|
7c3af21ebe | ||
|
|
293061b8b7 | ||
|
|
a49f77135a | ||
|
|
1eaf6e2db7 | ||
|
|
b2683fdb11 | ||
|
|
53cfd2dd9b | ||
|
|
ec2327fddd | ||
|
|
18f4064003 | ||
|
|
990ad81419 | ||
|
|
d7cdabe8e2 | ||
|
|
269bb008fc | ||
|
|
a987f8e67d | ||
|
|
0aa40a9c21 | ||
|
|
629b51ebf1 | ||
|
|
39dbc65104 | ||
|
|
0700d14065 | ||
|
|
53e1764a8a | ||
|
|
fda6e7f8de | ||
|
|
6f994715d6 | ||
|
|
8dad534464 | ||
|
|
335a253323 | ||
|
|
09483f422e | ||
|
|
4692f496da | ||
|
|
26b07fbdff | ||
|
|
656549dd44 | ||
|
|
ff3e7d4025 | ||
|
|
f939adbedb | ||
|
|
ac9a52886d | ||
|
|
273aeeee73 | ||
|
|
33c91398bf | ||
|
|
087ce15ccd | ||
|
|
92703939ee | ||
|
|
d6ef0c47a5 | ||
|
|
fd1eb7559b | ||
|
|
c562a491ca | ||
|
|
964e7c303c | ||
|
|
1251684440 | ||
|
|
2ecd1fac63 | ||
|
|
46302a25d2 | ||
|
|
d5638cb241 | ||
|
|
e9f35e7b15 | ||
|
|
fab5db0ec8 | ||
|
|
4c8d3a70ea | ||
|
|
c10ca74b5b | ||
|
|
8d97b78da7 | ||
|
|
d509e32c6f | ||
|
|
61585251f5 | ||
|
|
83520186d8 | ||
|
|
37ffd82af4 | ||
|
|
2d4c9b0846 | ||
|
|
f50e7b1d05 | ||
|
|
66a9f01a0e | ||
|
|
f668d354a9 | ||
|
|
d13d6b199a | ||
|
|
cd3304548f | ||
|
|
45b89ab396 | ||
|
|
57d62762e1 | ||
|
|
8ec6fb22fd | ||
|
|
3d0082fa60 | ||
|
|
85566c9682 | ||
|
|
c060a287d0 | ||
|
|
590b283e65 | ||
|
|
a7328b3711 | ||
|
|
861766372d | ||
|
|
f10ac8e8c3 | ||
|
|
a77c632e2a | ||
|
|
0f6680e8b7 | ||
|
|
b2c6be9e08 | ||
|
|
8e0406e95b | ||
|
|
d3b5853454 | ||
|
|
077a661696 | ||
|
|
b69a2b7fc3 | ||
|
|
924d965964 | ||
|
|
926ea1d8e9 | ||
|
|
4fb13d113e | ||
|
|
dd32e5880d | ||
|
|
9ef89f51c9 | ||
|
|
b82bcfbd47 | ||
|
|
a078d6427b | ||
|
|
91d2be5179 | ||
|
|
c657328c8d | ||
|
|
641cbb634d | ||
|
|
d143b5f491 | ||
|
|
e0bbea635f | ||
|
|
fefa00fac8 | ||
|
|
359a83e6c5 | ||
|
|
06e882b332 | ||
|
|
b542e3e205 | ||
|
|
1938f6931c | ||
|
|
7df245c569 | ||
|
|
2527ff6b1f | ||
|
|
d67c7011f4 | ||
|
|
09e7c3227b | ||
|
|
93e28c3b2f |
11
.gitignore
vendored
11
.gitignore
vendored
@@ -1,3 +1,14 @@
|
|||||||
HEAD
|
HEAD
|
||||||
src
|
src
|
||||||
v*
|
v*
|
||||||
|
alias
|
||||||
|
|
||||||
|
# For testing
|
||||||
|
test/bak
|
||||||
|
.urchin.log
|
||||||
|
.urchin_stdout
|
||||||
|
|
||||||
|
node_modules/
|
||||||
|
|
||||||
|
.DS_Store
|
||||||
|
current
|
||||||
|
|||||||
4
.npmignore
Normal file
4
.npmignore
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
src
|
||||||
|
v*
|
||||||
|
alias
|
||||||
|
|
||||||
31
.travis.yml
Normal file
31
.travis.yml
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
language: c # defaults to ruby
|
||||||
|
install:
|
||||||
|
- sudo apt-get install ksh zsh -y
|
||||||
|
- '[ -z "$WITHOUT_CURL" ] || sudo apt-get remove curl -y'
|
||||||
|
before_script:
|
||||||
|
- '[ -n "$WITHOUT_CURL" ] || curl -o /tmp/urchin https://raw.githubusercontent.com/scraperwiki/urchin/master/urchin'
|
||||||
|
- '[ -z "$WITHOUT_CURL" ] || wget -O /tmp/urchin https://raw.githubusercontent.com/scraperwiki/urchin/master/urchin'
|
||||||
|
- chmod +x /tmp/urchin
|
||||||
|
script:
|
||||||
|
- NVM_DIR=$TRAVIS_BUILD_DIR make TEST_SUITE=$TEST_SUITE URCHIN=/tmp/urchin $SHELL
|
||||||
|
env:
|
||||||
|
- SHELL=sh TEST_SUITE=fast
|
||||||
|
- SHELL=dash TEST_SUITE=fast
|
||||||
|
- SHELL=bash TEST_SUITE=fast
|
||||||
|
- SHELL=zsh TEST_SUITE=fast
|
||||||
|
- SHELL=ksh TEST_SUITE=fast
|
||||||
|
- SHELL=sh TEST_SUITE=slow
|
||||||
|
- SHELL=dash TEST_SUITE=slow
|
||||||
|
- SHELL=bash TEST_SUITE=slow
|
||||||
|
- SHELL=zsh TEST_SUITE=slow
|
||||||
|
- SHELL=ksh TEST_SUITE=slow
|
||||||
|
- SHELL=sh TEST_SUITE=installation
|
||||||
|
- SHELL=sh TEST_SUITE=installation WITHOUT_CURL=1
|
||||||
|
- SHELL=dash TEST_SUITE=installation
|
||||||
|
- SHELL=dash TEST_SUITE=installation WITHOUT_CURL=1
|
||||||
|
- SHELL=bash TEST_SUITE=installation
|
||||||
|
- SHELL=bash TEST_SUITE=installation WITHOUT_CURL=1
|
||||||
|
- SHELL=zsh TEST_SUITE=installation
|
||||||
|
- SHELL=zsh TEST_SUITE=installation WITHOUT_CURL=1
|
||||||
|
- SHELL=ksh TEST_SUITE=installation
|
||||||
|
- SHELL=ksh TEST_SUITE=installation WITHOUT_CURL=1
|
||||||
15
CONTRIBUTING.md
Normal file
15
CONTRIBUTING.md
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
Thanks for contributing to `nvm`!
|
||||||
|
|
||||||
|
We love pull requests, they're our favorite.
|
||||||
|
|
||||||
|
However, before submitting, please review the following:
|
||||||
|
|
||||||
|
- Please include tests. Changes with tests will be merged very quickly.
|
||||||
|
- Please manually confirm that your changes work in `bash`, `sh`/`dash`, `ksh`, and `zsh`. Fast tests do run in these shells, but it's nice to manually verify also.
|
||||||
|
- Please maintain consistent whitespace - 2-space indentation, trailing newlines in all files, etc.
|
||||||
|
- Any time you make a change to your PR, please rebase freshly on top of master. Nobody likes merge commits.
|
||||||
|
|
||||||
|
Even if you don't have all of these items covered, please still feel free to submit a PR! Someone else may be inspired and volunteer to complete it for you.
|
||||||
|
|
||||||
|
Thanks again!
|
||||||
|
|
||||||
21
LICENSE.md
Normal file
21
LICENSE.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2010-2014 Tim Caswell
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
|
the Software without restriction, including without limitation the rights to
|
||||||
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||||
|
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||||
|
subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||||
|
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||||
|
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
|
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
26
Makefile
Normal file
26
Makefile
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
URCHIN=`which urchin`
|
||||||
|
SHELLS=sh bash dash ksh zsh
|
||||||
|
TEST_SUITE=fast
|
||||||
|
|
||||||
|
.PHONY: $(SHELLS) test verify-tag release
|
||||||
|
|
||||||
|
$(SHELLS):
|
||||||
|
@printf '\n\033[0;34m%s\033[0m\n' "Running tests in $@"
|
||||||
|
@$@ $(URCHIN) -f test/$(TEST_SUITE)
|
||||||
|
|
||||||
|
test: $(SHELLS)
|
||||||
|
@$(URCHIN) -f test/slow
|
||||||
|
|
||||||
|
default: test
|
||||||
|
|
||||||
|
verify-tag:
|
||||||
|
ifndef TAG
|
||||||
|
$(error TAG is undefined)
|
||||||
|
endif
|
||||||
|
|
||||||
|
release: verify-tag
|
||||||
|
@ OLD_TAG=`git describe --abbrev=0 --tags` && \
|
||||||
|
replace "$${OLD_TAG/v/}" "$(TAG)" -- nvm.sh install.sh README.markdown package.json && \
|
||||||
|
git commit -m "v$(TAG)" nvm.sh install.sh README.markdown package.json && \
|
||||||
|
git tag "v$(TAG)"
|
||||||
|
|
||||||
172
README.markdown
172
README.markdown
@@ -1,45 +1,175 @@
|
|||||||
# Node Version Manager
|
# Node Version Manager [][3]
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
First you'll need to make sure your system has a c++ compiler. For OSX, XCode will work, for Ubuntu, the build-essential package works. You'll also need `git` if you want to track HEAD.
|
First you'll need to make sure your system has a c++ compiler. For OSX, XCode will work, for Ubuntu, the build-essential and libssl-dev packages work.
|
||||||
|
|
||||||
To install create a folder somewhere in your filesystem with the "`nvm.sh`" file inside it. I put mine in a folder called "`.nvm`".
|
### Install script
|
||||||
|
|
||||||
Or if you have `git` installed, then just clone it:
|
To install you could use the [install script][2] using cURL:
|
||||||
|
|
||||||
git clone git://gist.github.com/367305.git ~/.nvm
|
curl https://raw.githubusercontent.com/creationix/nvm/v0.17.2/install.sh | bash
|
||||||
|
|
||||||
Then add three lines to your bash profile:
|
or Wget:
|
||||||
|
|
||||||
NVM_DIR=$HOME/.nvm
|
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.17.2/install.sh | bash
|
||||||
. $NVM_DIR/nvm.sh
|
|
||||||
nvm use v0.1.91
|
|
||||||
|
|
||||||
The first line tells your system where NVM is installed, you should already have nvm.sh there. The second line loads the nvm function into your bash shell so that it's available as a command. The third line sets your default node version.
|
<sub>The script clones the nvm repository to `~/.nvm` and adds the source line to your profile (`~/.bash_profile`, `~/.zshrc` or `~/.profile`).</sub>
|
||||||
|
|
||||||
|
You can customize the install source, directory and profile using the `NVM_SOURCE`, `NVM_DIR` and `PROFILE` variables. Eg: `curl ... | NVM_DIR=/usr/local/nvm bash` for a global install.
|
||||||
|
|
||||||
|
<sub>*NB. The installer can use Git, curl, or wget to download NVM, whatever is available.*</sub>
|
||||||
|
|
||||||
|
### Manual install
|
||||||
|
|
||||||
|
For manual install create a folder somewhere in your filesystem with the `nvm.sh` file inside it. I put mine in a folder called `nvm`.
|
||||||
|
|
||||||
|
Or if you have `git` installed, then just clone it, and check out the latest version:
|
||||||
|
|
||||||
|
git clone https://github.com/creationix/nvm.git ~/.nvm && cd ~/.nvm && git checkout `git describe --abbrev=0 --tags`
|
||||||
|
|
||||||
|
To activate nvm, you need to source it from your shell:
|
||||||
|
|
||||||
|
source ~/.nvm/nvm.sh
|
||||||
|
|
||||||
|
I always add this line to my `~/.bashrc`, `~/.profile`, or `~/.zshrc` file to have it automatically sourced upon login.
|
||||||
|
Often I also put in a line to use a specific version of node.
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
To download, install, and use the v0.1.91 release of node do this:
|
You can create an `.nvmrc` file containing version number in the project root directory (or any parent directory).
|
||||||
|
`nvm use`, `nvm install`, `nvm exec`, and `nvm run` will all respect an `.nvmrc` file.
|
||||||
|
|
||||||
nvm install v0.1.91
|
To download, compile, and install the latest v0.10.x release of node, do this:
|
||||||
|
|
||||||
|
nvm install 0.10
|
||||||
|
|
||||||
And then in any new shell just use the installed version:
|
And then in any new shell just use the installed version:
|
||||||
|
|
||||||
nvm use v0.1.91
|
nvm use 0.10
|
||||||
|
|
||||||
If you want to track HEAD then use the clone command:
|
Or you can just run it:
|
||||||
|
|
||||||
nvm clone
|
nvm run 0.10 --version
|
||||||
|
|
||||||
Then in any new shell you can get this version with:
|
Or, you can run any arbitrary command in a subshell with the desired version of node:
|
||||||
|
|
||||||
nvm use HEAD
|
nvm exec 0.10 node --version
|
||||||
|
|
||||||
When you want to grab the latest from the node repo do:
|
If you want to see what versions are installed:
|
||||||
|
|
||||||
nvm update
|
nvm ls
|
||||||
|
|
||||||
If you want to see what versions you have installed issue:
|
If you want to see what versions are available to install:
|
||||||
|
|
||||||
|
nvm ls-remote
|
||||||
|
|
||||||
|
To restore your PATH, you can deactivate it.
|
||||||
|
|
||||||
|
nvm deactivate
|
||||||
|
|
||||||
|
To set a default Node version to be used in any new shell, use the alias 'default':
|
||||||
|
|
||||||
|
nvm alias default 0.10
|
||||||
|
|
||||||
|
To use a mirror of the node binaries, set `$NVM_NODEJS_ORG_MIRROR`:
|
||||||
|
|
||||||
|
export NVM_NODEJS_ORG_MIRROR=http://nodejs.org/dist
|
||||||
|
nvm install 0.10
|
||||||
|
|
||||||
|
NVM_NODEJS_ORG_MIRROR=http://nodejs.org/dist nvm install 0.10
|
||||||
|
|
||||||
|
`nvm use` will, by defaut, create a "current" symlink. Set `$NVM_SYMLINK_CURRENT` to any value other than "true" to disable this behavior.
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
nvm is released under the MIT license.
|
||||||
|
|
||||||
|
|
||||||
|
Copyright (C) 2010-2014 Tim Caswell
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
## Running tests
|
||||||
|
Tests are written in [Urchin]. Install Urchin (and other dependencies) like so:
|
||||||
|
|
||||||
|
npm install
|
||||||
|
|
||||||
|
There are slow tests and fast tests. The slow tests do things like install node
|
||||||
|
and check that the right versions are used. The fast tests fake this to test
|
||||||
|
things like aliases and uninstalling. From the root of the nvm git repository,
|
||||||
|
run the fast tests like this.
|
||||||
|
|
||||||
|
npm run test/fast
|
||||||
|
|
||||||
|
Run the slow tests like this.
|
||||||
|
|
||||||
|
npm run test/slow
|
||||||
|
|
||||||
|
Run all of the tests like this
|
||||||
|
|
||||||
|
npm test
|
||||||
|
|
||||||
|
Nota bene: Avoid running nvm while the tests are running.
|
||||||
|
|
||||||
|
## Bash completion
|
||||||
|
|
||||||
|
To activate, you need to source `bash_completion`:
|
||||||
|
|
||||||
|
[[ -r $NVM_DIR/bash_completion ]] && . $NVM_DIR/bash_completion
|
||||||
|
|
||||||
|
Put the above sourcing line just below the sourcing line for NVM in your profile (`.bashrc`, `.bash_profile`).
|
||||||
|
|
||||||
|
### Usage
|
||||||
|
|
||||||
|
nvm
|
||||||
|
|
||||||
|
$ nvm [tab][tab]
|
||||||
|
alias copy-packages help list run uninstall version
|
||||||
|
clear-cache deactivate install ls unalias use
|
||||||
|
|
||||||
|
nvm alias
|
||||||
|
|
||||||
|
$ nvm alias [tab][tab]
|
||||||
|
default
|
||||||
|
|
||||||
|
$ nvm alias my_alias [tab][tab]
|
||||||
|
v0.6.21 v0.8.26 v0.10.28
|
||||||
|
|
||||||
|
nvm use
|
||||||
|
|
||||||
|
$ nvm use [tab][tab]
|
||||||
|
my_alias default v0.6.21 v0.8.26 v0.10.28
|
||||||
|
|
||||||
|
nvm uninstall
|
||||||
|
|
||||||
|
$ nvm uninstall [tab][tab]
|
||||||
|
my_alias default v0.6.21 v0.8.26 v0.10.28
|
||||||
|
|
||||||
|
## Problems
|
||||||
|
|
||||||
|
If you try to install a node version and the installation fails, be sure to delete the node downloads from src (~/.nvm/src/) or you might get an error when trying to reinstall them again or you might get an error like the following:
|
||||||
|
|
||||||
|
curl: (33) HTTP server doesn't seem to support byte ranges. Cannot resume.
|
||||||
|
|
||||||
|
Where's my 'sudo node'? Checkout this link:
|
||||||
|
|
||||||
|
https://github.com/creationix/nvm/issues/43
|
||||||
|
|
||||||
|
on Arch Linux and other systems using python3 by default, before running *install* you need to
|
||||||
|
|
||||||
|
export PYTHON=python2
|
||||||
|
|
||||||
|
After the v0.8.6 release of node, nvm tries to install from binary packages. But in some systems, the official binary packages don't work due to incompatibility of shared libs. In such cases, use `-s` option to force install from source:
|
||||||
|
|
||||||
|
nvm install -s 0.8.6
|
||||||
|
|
||||||
|
[1]: https://github.com/creationix/nvm.git
|
||||||
|
[2]: https://github.com/creationix/nvm/blob/v0.17.2/install.sh
|
||||||
|
[3]: https://travis-ci.org/creationix/nvm
|
||||||
|
[Urchin]: https://github.com/scraperwiki/urchin
|
||||||
|
|
||||||
nvm list
|
|
||||||
92
bash_completion
Normal file
92
bash_completion
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# bash completion for Node Version Manager (NVM)
|
||||||
|
|
||||||
|
__nvm_generate_completion()
|
||||||
|
{
|
||||||
|
declare current_word
|
||||||
|
current_word="${COMP_WORDS[COMP_CWORD]}"
|
||||||
|
COMPREPLY=($(compgen -W "$1" -- "$current_word"))
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
__nvm_commands ()
|
||||||
|
{
|
||||||
|
declare current_word
|
||||||
|
declare command
|
||||||
|
|
||||||
|
current_word="${COMP_WORDS[COMP_CWORD]}"
|
||||||
|
|
||||||
|
COMMANDS='\
|
||||||
|
help install uninstall use run exec\
|
||||||
|
alias unalias copy-packages
|
||||||
|
current list ls list-remote ls-remote\
|
||||||
|
clear-cache deactivate unload
|
||||||
|
version'
|
||||||
|
|
||||||
|
if [ ${#COMP_WORDS[@]} == 4 ]; then
|
||||||
|
|
||||||
|
command="${COMP_WORDS[COMP_CWORD-2]}"
|
||||||
|
case "${command}" in
|
||||||
|
alias) __nvm_installed_nodes ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
case "${current_word}" in
|
||||||
|
-*) __nvm_options ;;
|
||||||
|
*) __nvm_generate_completion "$COMMANDS" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
__nvm_options ()
|
||||||
|
{
|
||||||
|
OPTIONS=''
|
||||||
|
__nvm_generate_completion "$OPTIONS"
|
||||||
|
}
|
||||||
|
|
||||||
|
__nvm_installed_nodes ()
|
||||||
|
{
|
||||||
|
__nvm_generate_completion "$(nvm_ls) $(__nvm_aliases)"
|
||||||
|
}
|
||||||
|
|
||||||
|
__nvm_aliases ()
|
||||||
|
{
|
||||||
|
declare aliases
|
||||||
|
aliases=""
|
||||||
|
if [ -d $NVM_DIR/alias ]; then
|
||||||
|
aliases="`cd $NVM_DIR/alias && ls`"
|
||||||
|
fi
|
||||||
|
echo "${aliases}"
|
||||||
|
}
|
||||||
|
|
||||||
|
__nvm_alias ()
|
||||||
|
{
|
||||||
|
__nvm_generate_completion "$(__nvm_aliases)"
|
||||||
|
}
|
||||||
|
|
||||||
|
__nvm ()
|
||||||
|
{
|
||||||
|
declare previous_word
|
||||||
|
previous_word="${COMP_WORDS[COMP_CWORD-1]}"
|
||||||
|
|
||||||
|
case "$previous_word" in
|
||||||
|
use|run|ls|list|uninstall) __nvm_installed_nodes ;;
|
||||||
|
alias|unalias) __nvm_alias ;;
|
||||||
|
*) __nvm_commands ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# complete is a bash builtin, but recent versions of ZSH come with a function
|
||||||
|
# called bashcompinit that will create a complete in ZSH. If the user is in
|
||||||
|
# ZSH, load and run bashcompinit before calling the complete function.
|
||||||
|
if [[ -n ${ZSH_VERSION-} ]]; then
|
||||||
|
autoload -U +X bashcompinit && bashcompinit
|
||||||
|
fi
|
||||||
|
|
||||||
|
complete -o default -o nospace -F __nvm nvm
|
||||||
|
|
||||||
131
install.sh
Executable file
131
install.sh
Executable file
@@ -0,0 +1,131 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
nvm_has() {
|
||||||
|
type "$1" > /dev/null 2>&1
|
||||||
|
return $?
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ -z "$NVM_DIR" ]; then
|
||||||
|
NVM_DIR="$HOME/.nvm"
|
||||||
|
fi
|
||||||
|
|
||||||
|
nvm_download() {
|
||||||
|
if nvm_has "curl"; then
|
||||||
|
curl $*
|
||||||
|
elif nvm_has "wget"; then
|
||||||
|
# Emulate curl with wget
|
||||||
|
ARGS=$(echo "$*" | sed -e 's/--progress-bar /--progress=bar /' \
|
||||||
|
-e 's/-L //' \
|
||||||
|
-e 's/-I /--server-response /' \
|
||||||
|
-e 's/-s /-q /' \
|
||||||
|
-e 's/-o /-O /' \
|
||||||
|
-e 's/-C - /-c /')
|
||||||
|
wget $ARGS
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
install_nvm_from_git() {
|
||||||
|
if [ -z "$NVM_SOURCE" ]; then
|
||||||
|
NVM_SOURCE="https://github.com/creationix/nvm.git"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -d "$NVM_DIR/.git" ]; then
|
||||||
|
echo "=> nvm is already installed in $NVM_DIR, trying to update"
|
||||||
|
printf "\r=> "
|
||||||
|
cd "$NVM_DIR" && (git fetch 2> /dev/null || {
|
||||||
|
echo >&2 "Failed to update nvm, run 'git fetch' in $NVM_DIR yourself." && exit 1
|
||||||
|
})
|
||||||
|
else
|
||||||
|
# Cloning to $NVM_DIR
|
||||||
|
echo "=> Downloading nvm from git to '$NVM_DIR'"
|
||||||
|
printf "\r=> "
|
||||||
|
mkdir -p "$NVM_DIR"
|
||||||
|
git clone "$NVM_SOURCE" "$NVM_DIR"
|
||||||
|
fi
|
||||||
|
cd "$NVM_DIR" && git checkout v0.17.2 && git branch -D master >/dev/null 2>&1
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
install_nvm_as_script() {
|
||||||
|
if [ -z "$NVM_SOURCE" ]; then
|
||||||
|
NVM_SOURCE="https://raw.githubusercontent.com/creationix/nvm/v0.17.2/nvm.sh"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Downloading to $NVM_DIR
|
||||||
|
mkdir -p "$NVM_DIR"
|
||||||
|
if [ -d "$NVM_DIR/nvm.sh" ]; then
|
||||||
|
echo "=> nvm is already installed in $NVM_DIR, trying to update"
|
||||||
|
else
|
||||||
|
echo "=> Downloading nvm as script to '$NVM_DIR'"
|
||||||
|
fi
|
||||||
|
nvm_download -s "$NVM_SOURCE" -o "$NVM_DIR/nvm.sh" || {
|
||||||
|
echo >&2 "Failed to download '$NVM_SOURCE'.."
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ -z "$METHOD" ]; then
|
||||||
|
# Autodetect install method
|
||||||
|
if nvm_has "git"; then
|
||||||
|
install_nvm_from_git
|
||||||
|
elif nvm_has "nvm_download"; then
|
||||||
|
install_nvm_as_script
|
||||||
|
else
|
||||||
|
echo >&2 "You need git, curl, or wget to install nvm"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
elif [ "~$METHOD" = "~git" ]; then
|
||||||
|
if ! nvm_has "git"; then
|
||||||
|
echo >&2 "You need git to install nvm"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
install_nvm_from_git
|
||||||
|
elif [ "~$METHOD" = "~script" ]; then
|
||||||
|
if ! nvm_has "nvm_download"; then
|
||||||
|
echo >&2 "You need curl or wget to install nvm"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
install_nvm_as_script
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo
|
||||||
|
|
||||||
|
# Detect profile file if not specified as environment variable (eg: PROFILE=~/.myprofile).
|
||||||
|
if [ -z "$PROFILE" ]; then
|
||||||
|
if [ -f "$HOME/.bashrc" ]; then
|
||||||
|
PROFILE="$HOME/.bashrc"
|
||||||
|
elif [ -f "$HOME/.bash_profile" ]; then
|
||||||
|
PROFILE="$HOME/.bash_profile"
|
||||||
|
elif [ -f "$HOME/.zshrc" ]; then
|
||||||
|
PROFILE="$HOME/.zshrc"
|
||||||
|
elif [ -f "$HOME/.profile" ]; then
|
||||||
|
PROFILE="$HOME/.profile"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
SOURCE_STR="\nexport NVM_DIR=\"$NVM_DIR\"\n[ -s \"\$NVM_DIR/nvm.sh\" ] && . \"\$NVM_DIR/nvm.sh\" # This loads nvm"
|
||||||
|
|
||||||
|
if [ -z "$PROFILE" ] || [ ! -f "$PROFILE" ] ; then
|
||||||
|
if [ -z "$PROFILE" ]; then
|
||||||
|
echo "=> Profile not found. Tried ~/.bashrc, ~/.bash_profile, ~/.zshrc, and ~/.profile."
|
||||||
|
echo "=> Create one of them and run this script again"
|
||||||
|
else
|
||||||
|
echo "=> Profile $PROFILE not found"
|
||||||
|
echo "=> Create it (touch $PROFILE) and run this script again"
|
||||||
|
fi
|
||||||
|
echo " OR"
|
||||||
|
echo "=> Append the following lines to the correct file yourself:"
|
||||||
|
printf "$SOURCE_STR"
|
||||||
|
echo
|
||||||
|
else
|
||||||
|
if ! grep -qc 'nvm.sh' "$PROFILE"; then
|
||||||
|
echo "=> Appending source string to $PROFILE"
|
||||||
|
printf "$SOURCE_STR\n" >> "$PROFILE"
|
||||||
|
else
|
||||||
|
echo "=> Source string already in $PROFILE"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "=> Close and reopen your terminal to start using nvm"
|
||||||
14
nvm-exec
Executable file
14
nvm-exec
Executable file
@@ -0,0 +1,14 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
DIR="$(command cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
|
source "$DIR/nvm.sh"
|
||||||
|
|
||||||
|
if [ -n "$NODE_VERSION" ]; then
|
||||||
|
nvm use $NODE_VERSION > /dev/null || (echo "NODE_VERSION not set" >&2 && exit 127)
|
||||||
|
else
|
||||||
|
nvm use > /dev/null || (echo "No .nvmrc file found" >&2 && exit 127)
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec $@
|
||||||
|
|
||||||
954
nvm.sh
954
nvm.sh
@@ -1,117 +1,917 @@
|
|||||||
# Node Version Manager
|
# Node Version Manager
|
||||||
# Implemented as a bash function
|
# Implemented as a POSIX-compliant function
|
||||||
|
# Should work on sh, dash, bash, ksh, zsh
|
||||||
# To use source this file from your bash profile
|
# To use source this file from your bash profile
|
||||||
#
|
#
|
||||||
# Implemented by Tim Caswell <tim@creationix.com>
|
# Implemented by Tim Caswell <tim@creationix.com>
|
||||||
# with much bash help from Matthew Ranney
|
# with much bash help from Matthew Ranney
|
||||||
|
|
||||||
nvm()
|
NVM_SCRIPT_SOURCE="$_"
|
||||||
{
|
|
||||||
START=`pwd`
|
nvm_has() {
|
||||||
|
type "$1" > /dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
|
nvm_download() {
|
||||||
|
if nvm_has "curl"; then
|
||||||
|
curl $*
|
||||||
|
elif nvm_has "wget"; then
|
||||||
|
# Emulate curl with wget
|
||||||
|
ARGS=$(echo "$*" | sed -e 's/--progress-bar /--progress=bar /' \
|
||||||
|
-e 's/-L //' \
|
||||||
|
-e 's/-I /--server-response /' \
|
||||||
|
-e 's/-s /-q /' \
|
||||||
|
-e 's/-o /-O /' \
|
||||||
|
-e 's/-C - /-c /')
|
||||||
|
eval wget $ARGS
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
nvm_has_system_node() {
|
||||||
|
[ "$(nvm deactivate >/dev/null 2>&1 && command -v node)" != '' ]
|
||||||
|
}
|
||||||
|
|
||||||
|
# Make zsh glob matching behave same as bash
|
||||||
|
# This fixes the "zsh: no matches found" errors
|
||||||
|
if nvm_has "unsetopt"; then
|
||||||
|
unsetopt nomatch 2>/dev/null
|
||||||
|
NVM_CD_FLAGS="-q"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Auto detect the NVM_DIR when not set
|
||||||
|
if [ -z "$NVM_DIR" ]; then
|
||||||
|
if [ -n "$BASH_SOURCE" ]; then
|
||||||
|
NVM_SCRIPT_SOURCE="${BASH_SOURCE[0]}"
|
||||||
|
fi
|
||||||
|
export NVM_DIR=$(cd $NVM_CD_FLAGS $(dirname "${NVM_SCRIPT_SOURCE:-$0}") > /dev/null && pwd)
|
||||||
|
fi
|
||||||
|
unset NVM_SCRIPT_SOURCE 2> /dev/null
|
||||||
|
|
||||||
|
|
||||||
|
# Setup mirror location if not already set
|
||||||
|
if [ -z "$NVM_NODEJS_ORG_MIRROR" ]; then
|
||||||
|
export NVM_NODEJS_ORG_MIRROR="http://nodejs.org/dist"
|
||||||
|
fi
|
||||||
|
|
||||||
|
nvm_tree_contains_path() {
|
||||||
|
local tree
|
||||||
|
tree="$1"
|
||||||
|
local node_path
|
||||||
|
node_path="$2"
|
||||||
|
|
||||||
|
if [ "@$tree@" = "@@" ] || [ "@$node_path@" = "@@" ]; then
|
||||||
|
>&2 echo "both the tree and the node path are required"
|
||||||
|
return 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
local pathdir
|
||||||
|
pathdir=$(dirname "$node_path")
|
||||||
|
while [ "$pathdir" != "" ] && [ "$pathdir" != "." ] && [ "$pathdir" != "/" ] && [ "$pathdir" != "$tree" ]; do
|
||||||
|
pathdir=$(dirname "$pathdir")
|
||||||
|
done
|
||||||
|
[ "$pathdir" = "$tree" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
# Traverse up in directory tree to find containing folder
|
||||||
|
nvm_find_up() {
|
||||||
|
local path
|
||||||
|
path=$PWD
|
||||||
|
while [ "$path" != "" ] && [ ! -f "$path/$1" ]; do
|
||||||
|
path=${path%/*}
|
||||||
|
done
|
||||||
|
echo "$path"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
nvm_find_nvmrc() {
|
||||||
|
local dir
|
||||||
|
dir="$(nvm_find_up '.nvmrc')"
|
||||||
|
if [ -e "$dir/.nvmrc" ]; then
|
||||||
|
echo "$dir/.nvmrc"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Obtain nvm version from rc file
|
||||||
|
nvm_rc_version() {
|
||||||
|
export NVM_RC_VERSION=''
|
||||||
|
local NVMRC_PATH
|
||||||
|
NVMRC_PATH="$(nvm_find_nvmrc)"
|
||||||
|
if [ -e "$NVMRC_PATH" ]; then
|
||||||
|
read NVM_RC_VERSION < "$NVMRC_PATH"
|
||||||
|
echo "Found '$NVMRC_PATH' with version <$NVM_RC_VERSION>"
|
||||||
|
else
|
||||||
|
>&2 echo "No .nvmrc file found"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
nvm_version_greater() {
|
||||||
|
local LHS
|
||||||
|
LHS=$(nvm_normalize_version "$1")
|
||||||
|
local RHS
|
||||||
|
RHS=$(nvm_normalize_version "$2")
|
||||||
|
[ $LHS -gt $RHS ];
|
||||||
|
}
|
||||||
|
|
||||||
|
nvm_version_greater_than_or_equal_to() {
|
||||||
|
local LHS
|
||||||
|
LHS=$(nvm_normalize_version "$1")
|
||||||
|
local RHS
|
||||||
|
RHS=$(nvm_normalize_version "$2")
|
||||||
|
[ $LHS -ge $RHS ];
|
||||||
|
}
|
||||||
|
|
||||||
|
nvm_version_dir() {
|
||||||
|
local NVM_USE_NEW_DIR
|
||||||
|
NVM_USE_NEW_DIR="$1"
|
||||||
|
if [ -z "$NVM_USE_NEW_DIR" ] || [ "$NVM_USE_NEW_DIR" = "new" ]; then
|
||||||
|
echo "$NVM_DIR/versions"
|
||||||
|
elif [ "$NVM_USE_NEW_DIR" = "old" ]; then
|
||||||
|
echo "$NVM_DIR"
|
||||||
|
else
|
||||||
|
echo "unknown version dir" >&2
|
||||||
|
return 3
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
nvm_version_path() {
|
||||||
|
local VERSION
|
||||||
|
VERSION="$1"
|
||||||
|
if [ -z "$VERSION" ]; then
|
||||||
|
echo "version is required" >&2
|
||||||
|
return 3
|
||||||
|
elif nvm_version_greater 0.12.0 "$VERSION"; then
|
||||||
|
echo "$(nvm_version_dir old)/$VERSION"
|
||||||
|
else
|
||||||
|
echo "$(nvm_version_dir new)/$VERSION"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Expand a version using the version cache
|
||||||
|
nvm_version() {
|
||||||
|
local PATTERN
|
||||||
|
PATTERN=$1
|
||||||
|
local VERSION
|
||||||
|
# The default version is the current one
|
||||||
|
if [ -z "$PATTERN" ]; then
|
||||||
|
PATTERN='current'
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$PATTERN" = "current" ]; then
|
||||||
|
nvm_ls_current
|
||||||
|
return $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
VERSION="$(nvm_ls "$PATTERN" | tail -n1)"
|
||||||
|
echo "$VERSION"
|
||||||
|
|
||||||
|
if [ "$VERSION" = 'N/A' ]; then
|
||||||
|
return 3
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
nvm_remote_version() {
|
||||||
|
local PATTERN
|
||||||
|
PATTERN="$1"
|
||||||
|
local VERSION
|
||||||
|
VERSION="$(nvm_ls_remote "$PATTERN" | tail -n1)"
|
||||||
|
echo "$VERSION"
|
||||||
|
|
||||||
|
if [ "_$VERSION" = '_N/A' ]; then
|
||||||
|
return 3
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
nvm_normalize_version() {
|
||||||
|
echo "$1" | sed -e 's/^v//' | \awk -F. '{ printf("%d%06d%06d\n", $1,$2,$3); }'
|
||||||
|
}
|
||||||
|
|
||||||
|
nvm_ensure_version_prefix() {
|
||||||
|
echo "$1" | sed -e 's/^\([0-9]\)/v\1/g'
|
||||||
|
}
|
||||||
|
|
||||||
|
nvm_format_version() {
|
||||||
|
local VERSION
|
||||||
|
VERSION="$(nvm_ensure_version_prefix "$1")"
|
||||||
|
if [ "_$(nvm_num_version_groups "$VERSION")" != "_3" ]; then
|
||||||
|
VERSION="$(echo "$VERSION" | sed -e 's/\.*$/.0/')"
|
||||||
|
nvm_format_version "$VERSION"
|
||||||
|
else
|
||||||
|
echo "$VERSION"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
nvm_num_version_groups() {
|
||||||
|
local VERSION
|
||||||
|
VERSION="$1"
|
||||||
|
if [ -z "$VERSION" ]; then
|
||||||
|
echo "0"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
local NVM_NUM_DOTS
|
||||||
|
NVM_NUM_DOTS=$(echo "$VERSION" | sed -e 's/^v//' | sed -e 's/\.$//' | sed -e 's/[^\.]//g')
|
||||||
|
local NVM_NUM_GROUPS
|
||||||
|
NVM_NUM_GROUPS=".$NVM_NUM_DOTS"
|
||||||
|
echo "${#NVM_NUM_GROUPS}"
|
||||||
|
}
|
||||||
|
|
||||||
|
nvm_strip_path() {
|
||||||
|
echo "$1" | sed -e "s#$NVM_DIR/[^/]*$2[^:]*:##g" -e "s#:$NVM_DIR/[^/]*$2[^:]*##g" -e "s#$NVM_DIR/[^/]*$2[^:]*##g"
|
||||||
|
}
|
||||||
|
|
||||||
|
nvm_prepend_path() {
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
echo "$2"
|
||||||
|
else
|
||||||
|
echo "$2:$1"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
nvm_binary_available() {
|
||||||
|
# binaries started with node 0.8.6
|
||||||
|
local FIRST_VERSION_WITH_BINARY
|
||||||
|
FIRST_VERSION_WITH_BINARY="0.8.6"
|
||||||
|
nvm_version_greater_than_or_equal_to "$1" "$FIRST_VERSION_WITH_BINARY"
|
||||||
|
}
|
||||||
|
|
||||||
|
nvm_ls_current() {
|
||||||
|
local NODE_PATH
|
||||||
|
NODE_PATH="$(which node 2> /dev/null)"
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo 'none'
|
||||||
|
elif nvm_tree_contains_path "$NVM_DIR" "$NODE_PATH"; then
|
||||||
|
local VERSION
|
||||||
|
VERSION=`node -v 2>/dev/null`
|
||||||
|
if [ "$VERSION" = "v0.6.21-pre" ]; then
|
||||||
|
echo "v0.6.21"
|
||||||
|
else
|
||||||
|
echo "$VERSION"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo 'system'
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
nvm_ls() {
|
||||||
|
local PATTERN
|
||||||
|
PATTERN=$1
|
||||||
|
local VERSIONS
|
||||||
|
VERSIONS=''
|
||||||
|
if [ "$PATTERN" = 'current' ]; then
|
||||||
|
nvm_ls_current
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f "$NVM_DIR/alias/$PATTERN" ]; then
|
||||||
|
nvm_version "$(cat "$NVM_DIR/alias/$PATTERN")"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
# If it looks like an explicit version, don't do anything funny
|
||||||
|
PATTERN=$(nvm_ensure_version_prefix $PATTERN)
|
||||||
|
if [ "_$(echo "$PATTERN" | cut -c1-1)" = "_v" ] && [ "_$(nvm_num_version_groups "$PATTERN")" = "_3" ]; then
|
||||||
|
if [ -d "$(nvm_version_path "$PATTERN")" ]; then
|
||||||
|
VERSIONS="$PATTERN"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [ "_$PATTERN" != "_system" ]; then
|
||||||
|
local NUM_VERSION_GROUPS
|
||||||
|
NUM_VERSION_GROUPS="$(nvm_num_version_groups "$PATTERN")"
|
||||||
|
if [ "_$NUM_VERSION_GROUPS" = "_2" ] || [ "_$NUM_VERSION_GROUPS" = "_1" ]; then
|
||||||
|
PATTERN="$(echo "$PATTERN" | sed -e 's/\.*$//g')."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ -d "$(nvm_version_dir new)" ]; then
|
||||||
|
VERSIONS=`find "$(nvm_version_dir new)/" "$(nvm_version_dir old)/" -maxdepth 1 -type d -name "$PATTERN*" -exec basename '{}' ';' \
|
||||||
|
| sort -t. -u -k 1.2,1n -k 2,2n -k 3,3n | \grep -v '^ *\.' | \grep -e '^v' | \grep -v -e '^versions$'`
|
||||||
|
else
|
||||||
|
VERSIONS=`find "$(nvm_version_dir old)/" -maxdepth 1 -type d -name "$PATTERN*" -exec basename '{}' ';' \
|
||||||
|
| sort -t. -u -k 1.2,1n -k 2,2n -k 3,3n | \grep -v '^ *\.' | \grep -e '^v'`
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if nvm_has_system_node; then
|
||||||
|
if [ -z "$PATTERN" ]; then
|
||||||
|
VERSIONS="$VERSIONS$(printf '\n%s' 'system')"
|
||||||
|
elif [ "$PATTERN" = 'system' ]; then
|
||||||
|
VERSIONS="$(printf '%s' 'system')"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$VERSIONS" ]; then
|
||||||
|
echo "N/A"
|
||||||
|
return 3
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$VERSIONS"
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
nvm_ls_remote() {
|
||||||
|
local PATTERN
|
||||||
|
PATTERN="$1"
|
||||||
|
local VERSIONS
|
||||||
|
local GREP_OPTIONS
|
||||||
|
GREP_OPTIONS=''
|
||||||
|
if [ -n "$PATTERN" ]; then
|
||||||
|
PATTERN="$(nvm_ensure_version_prefix "$PATTERN")"
|
||||||
|
else
|
||||||
|
PATTERN=".*"
|
||||||
|
fi
|
||||||
|
VERSIONS=`nvm_download -s $NVM_NODEJS_ORG_MIRROR/ -o - \
|
||||||
|
| \egrep -o 'v[0-9]+\.[0-9]+\.[0-9]+' \
|
||||||
|
| \grep -w "${PATTERN}" \
|
||||||
|
| sort -t. -u -k 1.2,1n -k 2,2n -k 3,3n`
|
||||||
|
if [ -z "$VERSIONS" ]; then
|
||||||
|
echo "N/A"
|
||||||
|
return 3
|
||||||
|
fi
|
||||||
|
echo "$VERSIONS"
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
nvm_checksum() {
|
||||||
|
if nvm_has "sha1sum"; then
|
||||||
|
checksum="$(sha1sum "$1" | \awk '{print $1}')"
|
||||||
|
elif nvm_has "sha1"; then
|
||||||
|
checksum="$(sha1 -q "$1")"
|
||||||
|
else
|
||||||
|
checksum="$(shasum "$1" | \awk '{print $1}')"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "_$checksum" = "_$2" ]; then
|
||||||
|
return
|
||||||
|
elif [ -z "$2" ]; then
|
||||||
|
echo 'Checksums empty' #missing in raspberry pi binary
|
||||||
|
return
|
||||||
|
else
|
||||||
|
echo 'Checksums do not match.' >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
nvm_print_versions() {
|
||||||
|
local VERSION
|
||||||
|
local FORMAT
|
||||||
|
local NVM_CURRENT
|
||||||
|
NVM_CURRENT=$(nvm_ls_current)
|
||||||
|
echo "$1" | while read VERSION; do
|
||||||
|
if [ "$VERSION" = "$NVM_CURRENT" ]; then
|
||||||
|
FORMAT='\033[0;32m-> %9s\033[0m'
|
||||||
|
elif [ -d "$(nvm_version_path "$VERSION")" ]; then
|
||||||
|
FORMAT='\033[0;34m%12s\033[0m'
|
||||||
|
elif [ "$VERSION" = "system" ]; then
|
||||||
|
FORMAT='\033[0;33m%12s\033[0m'
|
||||||
|
else
|
||||||
|
FORMAT='%12s'
|
||||||
|
fi
|
||||||
|
printf "$FORMAT\n" $VERSION
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
nvm() {
|
||||||
if [ $# -lt 1 ]; then
|
if [ $# -lt 1 ]; then
|
||||||
nvm help
|
nvm help
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Try to figure out the os and arch for binary fetching
|
||||||
|
local uname
|
||||||
|
uname="$(uname -a)"
|
||||||
|
local os
|
||||||
|
local arch
|
||||||
|
arch="$(uname -m)"
|
||||||
|
local GREP_OPTIONS
|
||||||
|
GREP_OPTIONS=''
|
||||||
|
case "$uname" in
|
||||||
|
Linux\ *) os=linux ;;
|
||||||
|
Darwin\ *) os=darwin ;;
|
||||||
|
SunOS\ *) os=sunos ;;
|
||||||
|
FreeBSD\ *) os=freebsd ;;
|
||||||
|
esac
|
||||||
|
case "$uname" in
|
||||||
|
*x86_64*) arch=x64 ;;
|
||||||
|
*i*86*) arch=x86 ;;
|
||||||
|
*armv6l*) arch=arm-pi ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# initialize local variables
|
||||||
|
local VERSION
|
||||||
|
local ADDITIONAL_PARAMETERS
|
||||||
|
local ALIAS
|
||||||
|
|
||||||
case $1 in
|
case $1 in
|
||||||
"help" )
|
"help" )
|
||||||
echo
|
echo
|
||||||
echo "Node Version Manager"
|
echo "Node Version Manager"
|
||||||
echo
|
echo
|
||||||
echo "Usage:"
|
echo "Usage:"
|
||||||
echo " nvm help (Show this message)"
|
echo " nvm help Show this message"
|
||||||
echo " nvm install version (Download and install a released version)"
|
echo " nvm --version Print out the latest released version of nvm"
|
||||||
echo " nvm clone (Clone and install HEAD version)"
|
echo " nvm install [-s] <version> Download and install a <version>, [-s] from source. Uses .nvmrc if available"
|
||||||
echo " nvm update (Pull and rebuild HEAD version)"
|
echo " nvm uninstall <version> Uninstall a version"
|
||||||
echo " nvm list (Show all installed versions)"
|
echo " nvm use <version> Modify PATH to use <version>. Uses .nvmrc if available"
|
||||||
echo " nvm use version (Set this version in the PATH)"
|
echo " nvm run <version> [<args>] Run <version> with <args> as arguments. Uses .nvmrc if available for <version>"
|
||||||
|
echo " nvm current Display currently activated version"
|
||||||
|
echo " nvm ls List installed versions"
|
||||||
|
echo " nvm ls <version> List versions matching a given description"
|
||||||
|
echo " nvm ls-remote List remote versions available for install"
|
||||||
|
echo " nvm deactivate Undo effects of NVM on current shell"
|
||||||
|
echo " nvm alias [<pattern>] Show all aliases beginning with <pattern>"
|
||||||
|
echo " nvm alias <name> <version> Set an alias named <name> pointing to <version>"
|
||||||
|
echo " nvm unalias <name> Deletes the alias named <name>"
|
||||||
|
echo " nvm copy-packages <version> Install global NPM packages contained in <version> to current version"
|
||||||
|
echo " nvm unload Unload NVM from shell"
|
||||||
echo
|
echo
|
||||||
echo "Example:"
|
echo "Example:"
|
||||||
echo " nvm install v0.1.91"
|
echo " nvm install v0.10.24 Install a specific version number"
|
||||||
|
echo " nvm use 0.10 Use the latest available 0.10.x release"
|
||||||
|
echo " nvm run 0.10.24 myApp.js Run myApp.js using node v0.10.24"
|
||||||
|
echo " nvm alias default 0.10.24 Set default node version on a shell"
|
||||||
|
echo
|
||||||
|
echo "Note:"
|
||||||
|
echo " to remove, delete, or uninstall nvm - just remove ~/.nvm, ~/.npm, and ~/.bower folders"
|
||||||
echo
|
echo
|
||||||
;;
|
;;
|
||||||
"clone" )
|
|
||||||
if [ $# -ne 1 ]; then
|
"install" | "i" )
|
||||||
nvm help
|
# initialize local variables
|
||||||
return;
|
local binavail
|
||||||
|
local t
|
||||||
|
local url
|
||||||
|
local sum
|
||||||
|
local tarball
|
||||||
|
local nobinary
|
||||||
|
local version_not_provided
|
||||||
|
version_not_provided=0
|
||||||
|
local provided_version
|
||||||
|
|
||||||
|
if ! nvm_has "curl" && ! nvm_has "wget"; then
|
||||||
|
echo 'nvm needs curl or wget to proceed.' >&2;
|
||||||
|
return 1
|
||||||
fi
|
fi
|
||||||
mkdir -p "$NVM_DIR/src" && \
|
|
||||||
cd "$NVM_DIR/src" && \
|
if [ $# -lt 2 ]; then
|
||||||
git clone git://github.com/ry/node.git && \
|
version_not_provided=1
|
||||||
cd node && \
|
nvm_rc_version
|
||||||
./configure --debug --prefix="$NVM_DIR/HEAD" && \
|
if [ -z "$NVM_RC_VERSION" ]; then
|
||||||
make && \
|
nvm help
|
||||||
make install && \
|
return
|
||||||
nvm use HEAD
|
fi
|
||||||
cd $START
|
fi
|
||||||
|
|
||||||
|
shift
|
||||||
|
|
||||||
|
nobinary=0
|
||||||
|
if [ "$1" = "-s" ]; then
|
||||||
|
nobinary=1
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$os" = "freebsd" ]; then
|
||||||
|
nobinary=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
provided_version=$1
|
||||||
|
|
||||||
|
if [ -z "$provided_version" ]; then
|
||||||
|
if [ $version_not_provided -ne 1 ]; then
|
||||||
|
nvm_rc_version
|
||||||
|
fi
|
||||||
|
provided_version="$NVM_RC_VERSION"
|
||||||
|
else
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
VERSION="$(nvm_remote_version "$provided_version")"
|
||||||
|
ADDITIONAL_PARAMETERS=''
|
||||||
|
local PROVIDED_COPY_PACKAGES_FROM
|
||||||
|
local COPY_PACKAGES_FROM
|
||||||
|
|
||||||
|
while [ $# -ne 0 ]
|
||||||
|
do
|
||||||
|
if [ "_$(echo "$1" | cut -c 1-21)" = "_--copy-packages-from=" ]; then
|
||||||
|
PROVIDED_COPY_PACKAGES_FROM="$(echo "$1" | cut -c 22-)"
|
||||||
|
COPY_PACKAGES_FROM="$(nvm_version "$PROVIDED_COPY_PACKAGES_FROM")"
|
||||||
|
else
|
||||||
|
ADDITIONAL_PARAMETERS="$ADDITIONAL_PARAMETERS $1"
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "_$(nvm_ensure_version_prefix "$PROVIDED_COPY_PACKAGES_FROM")" = "_$VERSION" ]; then
|
||||||
|
echo "You can't copy global packages from the same version of node you're installing." >&2
|
||||||
|
return 4
|
||||||
|
elif [ ! -z "$PROVIDED_COPY_PACKAGES_FROM" ] && [ "_$COPY_PACKAGES_FROM" = "_N/A" ]; then
|
||||||
|
echo "If --copy-packages-from is provided, it must point to an installed version of node." >&2
|
||||||
|
return 5
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -d "$(nvm_version_path "$VERSION")" ]; then
|
||||||
|
echo "$VERSION is already installed." >&2
|
||||||
|
if nvm use "$VERSION" && [ ! -z "$COPY_PACKAGES_FROM" ] && [ "_$COPY_PACKAGES_FROM" != "_N/A" ]; then
|
||||||
|
nvm copy-packages "$COPY_PACKAGES_FROM"
|
||||||
|
fi
|
||||||
|
return $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$VERSION" = "N/A" ]; then
|
||||||
|
echo "Version '$provided_version' not found - try \`nvm ls-remote\` to browse available versions." >&2
|
||||||
|
return 3
|
||||||
|
fi
|
||||||
|
|
||||||
|
# skip binary install if no binary option specified.
|
||||||
|
if [ $nobinary -ne 1 ]; then
|
||||||
|
# shortcut - try the binary if possible.
|
||||||
|
if [ -n "$os" ]; then
|
||||||
|
if nvm_binary_available "$VERSION"; then
|
||||||
|
t="$VERSION-$os-$arch"
|
||||||
|
url="$NVM_NODEJS_ORG_MIRROR/$VERSION/node-${t}.tar.gz"
|
||||||
|
sum=`nvm_download -s $NVM_NODEJS_ORG_MIRROR/$VERSION/SHASUMS.txt -o - | \grep node-${t}.tar.gz | \awk '{print $1}'`
|
||||||
|
local tmpdir
|
||||||
|
tmpdir="$NVM_DIR/bin/node-${t}"
|
||||||
|
local tmptarball
|
||||||
|
tmptarball="$tmpdir/node-${t}.tar.gz"
|
||||||
|
if (
|
||||||
|
mkdir -p "$tmpdir" && \
|
||||||
|
nvm_download -L -C - --progress-bar $url -o "$tmptarball" && \
|
||||||
|
nvm_checksum "$tmptarball" $sum && \
|
||||||
|
tar -xzf "$tmptarball" -C "$tmpdir" --strip-components 1 && \
|
||||||
|
rm -f "$tmptarball" && \
|
||||||
|
mv "$tmpdir" "$(nvm_version_path "$VERSION")"
|
||||||
|
)
|
||||||
|
then
|
||||||
|
if nvm use "$VERSION" && [ ! -z "$COPY_PACKAGES_FROM" ] && [ "_$COPY_PACKAGES_FROM" != "_N/A" ]; then
|
||||||
|
nvm copy-packages "$COPY_PACKAGES_FROM"
|
||||||
|
fi
|
||||||
|
return $?
|
||||||
|
else
|
||||||
|
echo "Binary download failed, trying source." >&2
|
||||||
|
rm -rf "$tmptarball" "$tmpdir"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$ADDITIONAL_PARAMETERS" ]; then
|
||||||
|
echo "Additional options while compiling: $ADDITIONAL_PARAMETERS"
|
||||||
|
fi
|
||||||
|
|
||||||
|
tarball=''
|
||||||
|
sum=''
|
||||||
|
make='make'
|
||||||
|
if [ "$os" = "freebsd" ]; then
|
||||||
|
make='gmake'
|
||||||
|
MAKE_CXX="CXX=c++"
|
||||||
|
fi
|
||||||
|
local tmpdir
|
||||||
|
tmpdir="$NVM_DIR/src"
|
||||||
|
local tmptarball
|
||||||
|
tmptarball="$tmpdir/node-$VERSION.tar.gz"
|
||||||
|
if [ "`nvm_download -s -I "$NVM_NODEJS_ORG_MIRROR/$VERSION/node-$VERSION.tar.gz" -o - 2>&1 | \grep '200 OK'`" != '' ]; then
|
||||||
|
tarball="$NVM_NODEJS_ORG_MIRROR/$VERSION/node-$VERSION.tar.gz"
|
||||||
|
sum=`nvm_download -s $NVM_NODEJS_ORG_MIRROR/$VERSION/SHASUMS.txt -o - | \grep node-$VERSION.tar.gz | \awk '{print $1}'`
|
||||||
|
elif [ "`nvm_download -s -I "$NVM_NODEJS_ORG_MIRROR/node-$VERSION.tar.gz" -o - | \grep '200 OK'`" != '' ]; then
|
||||||
|
tarball="$NVM_NODEJS_ORG_MIRROR/node-$VERSION.tar.gz"
|
||||||
|
fi
|
||||||
|
if (
|
||||||
|
[ -n "$tarball" ] && \
|
||||||
|
mkdir -p "$tmpdir" && \
|
||||||
|
nvm_download -L --progress-bar $tarball -o "$tmptarball" && \
|
||||||
|
nvm_checksum "$tmptarball" $sum && \
|
||||||
|
tar -xzf "$tmptarball" -C "$tmpdir" && \
|
||||||
|
cd "$tmpdir/node-$VERSION" && \
|
||||||
|
./configure --prefix="$(nvm_version_path "$VERSION")" $ADDITIONAL_PARAMETERS && \
|
||||||
|
$make $MAKE_CXX && \
|
||||||
|
rm -f "$(nvm_version_path "$VERSION")" 2>/dev/null && \
|
||||||
|
$make $MAKE_CXX install
|
||||||
|
)
|
||||||
|
then
|
||||||
|
if nvm use "$VERSION" && [ ! -z "$COPY_PACKAGES_FROM" ] && [ "_$COPY_PACKAGES_FROM" != "_N/A" ]; then
|
||||||
|
nvm copy-packages "$COPY_PACKAGES_FROM"
|
||||||
|
fi
|
||||||
|
if ! nvm_has "npm" ; then
|
||||||
|
echo "Installing npm..."
|
||||||
|
if nvm_version_greater 0.2.0 "$VERSION"; then
|
||||||
|
echo "npm requires node v0.2.3 or higher" >&2
|
||||||
|
elif nvm_version_greater_than_or_equal_to "$VERSION" 0.2.0; then
|
||||||
|
if nvm_version_greater 0.2.3 "$VERSION"; then
|
||||||
|
echo "npm requires node v0.2.3 or higher" >&2
|
||||||
|
else
|
||||||
|
nvm_download https://npmjs.org/install.sh -o - | clean=yes npm_install=0.2.19 sh
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
nvm_download https://npmjs.org/install.sh -o - | clean=yes sh
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "nvm: install $VERSION failed!" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
return $?
|
||||||
;;
|
;;
|
||||||
"update" )
|
"uninstall" )
|
||||||
if [ $# -ne 1 ]; then
|
[ $# -ne 2 ] && nvm help && return
|
||||||
nvm help
|
PATTERN=`nvm_ensure_version_prefix $2`
|
||||||
|
if [ "$PATTERN" = `nvm_version` ]; then
|
||||||
|
echo "nvm: Cannot uninstall currently-active node version, $PATTERN." >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
VERSION=`nvm_version $PATTERN`
|
||||||
|
if [ ! -d "$(nvm_version_path "$VERSION")" ]; then
|
||||||
|
echo "$VERSION version is not installed..." >&2
|
||||||
return;
|
return;
|
||||||
fi
|
fi
|
||||||
cd "$NVM_DIR/src/node" && \
|
|
||||||
git pull origin master && \
|
t="$VERSION-$os-$arch"
|
||||||
./configure --debug --prefix="$NVM_DIR/HEAD" && \
|
|
||||||
make clean all && \
|
# Delete all files related to target version.
|
||||||
make install && \
|
rm -rf "$NVM_DIR/src/node-$VERSION" \
|
||||||
nvm use HEAD
|
"$NVM_DIR/src/node-$VERSION.tar.gz" \
|
||||||
cd $START
|
"$NVM_DIR/bin/node-${t}" \
|
||||||
|
"$NVM_DIR/bin/node-${t}.tar.gz" \
|
||||||
|
"$(nvm_version_path "$VERSION")" 2>/dev/null
|
||||||
|
echo "Uninstalled node $VERSION"
|
||||||
|
|
||||||
|
# Rm any aliases that point to uninstalled version.
|
||||||
|
for ALIAS in `\grep -l $VERSION $NVM_DIR/alias/* 2>/dev/null`
|
||||||
|
do
|
||||||
|
nvm unalias `basename $ALIAS`
|
||||||
|
done
|
||||||
|
|
||||||
;;
|
;;
|
||||||
"install" )
|
"deactivate" )
|
||||||
if [ $# -ne 2 ]; then
|
local NEWPATH
|
||||||
nvm help
|
NEWPATH="$(nvm_strip_path "$PATH" "/bin")"
|
||||||
return;
|
if [ "$PATH" = "$NEWPATH" ]; then
|
||||||
|
echo "Could not find $NVM_DIR/*/bin in \$PATH" >&2
|
||||||
|
else
|
||||||
|
export PATH="$NEWPATH"
|
||||||
|
hash -r
|
||||||
|
echo "$NVM_DIR/*/bin removed from \$PATH"
|
||||||
|
fi
|
||||||
|
|
||||||
|
NEWPATH="$(nvm_strip_path "$MANPATH" "/share/man")"
|
||||||
|
if [ "$MANPATH" = "$NEWPATH" ]; then
|
||||||
|
echo "Could not find $NVM_DIR/*/share/man in \$MANPATH" >&2
|
||||||
|
else
|
||||||
|
export MANPATH="$NEWPATH"
|
||||||
|
echo "$NVM_DIR/*/share/man removed from \$MANPATH"
|
||||||
|
fi
|
||||||
|
|
||||||
|
NEWPATH="$(nvm_strip_path "$NODE_PATH" "/lib/node_modules")"
|
||||||
|
if [ "$NODE_PATH" = "$NEWPATH" ]; then
|
||||||
|
echo "Could not find $NVM_DIR/*/lib/node_modules in \$NODE_PATH" >&2
|
||||||
|
else
|
||||||
|
export NODE_PATH="$NEWPATH"
|
||||||
|
echo "$NVM_DIR/*/lib/node_modules removed from \$NODE_PATH"
|
||||||
fi
|
fi
|
||||||
mkdir -p "$NVM_DIR/src" && \
|
|
||||||
cd "$NVM_DIR/src" && \
|
|
||||||
wget "http://nodejs.org/dist/node-$2.tar.gz" -N && \
|
|
||||||
tar -xzf "node-$2.tar.gz" && \
|
|
||||||
cd "node-$2" && \
|
|
||||||
./configure --prefix="$NVM_DIR/$2" && \
|
|
||||||
make && \
|
|
||||||
make install && \
|
|
||||||
nvm use $2
|
|
||||||
cd $START
|
|
||||||
;;
|
;;
|
||||||
"use" )
|
"use" )
|
||||||
|
if [ $# -eq 0 ]; then
|
||||||
|
nvm help
|
||||||
|
return 127
|
||||||
|
fi
|
||||||
|
if [ $# -eq 1 ]; then
|
||||||
|
nvm_rc_version
|
||||||
|
if [ -n "$NVM_RC_VERSION" ]; then
|
||||||
|
VERSION=`nvm_version $NVM_RC_VERSION`
|
||||||
|
fi
|
||||||
|
elif [ "_$2" != '_system' ]; then
|
||||||
|
VERSION="$(nvm_version "$2")"
|
||||||
|
else
|
||||||
|
VERSION="$2"
|
||||||
|
fi
|
||||||
|
if [ -z "$VERSION" ]; then
|
||||||
|
nvm help
|
||||||
|
return 127
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "_$VERSION" = '_system' ]; then
|
||||||
|
if nvm_has_system_node && nvm deactivate >/dev/null 2>&1; then
|
||||||
|
echo "Now using system version of node: $(node -v 2>/dev/null)."
|
||||||
|
return
|
||||||
|
else
|
||||||
|
echo "System version of node not found." >&2
|
||||||
|
return 127
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
local NVM_VERSION_DIR
|
||||||
|
NVM_VERSION_DIR="$(nvm_version_path "$VERSION")"
|
||||||
|
if [ ! -d "$NVM_VERSION_DIR" ]; then
|
||||||
|
echo "$VERSION version is not installed yet" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
# Strip other version from PATH
|
||||||
|
PATH=`nvm_strip_path "$PATH" "/bin"`
|
||||||
|
# Prepend current version
|
||||||
|
PATH=`nvm_prepend_path "$PATH" "$NVM_VERSION_DIR/bin"`
|
||||||
|
if [ -z "$MANPATH" ]; then
|
||||||
|
MANPATH=$(manpath)
|
||||||
|
fi
|
||||||
|
# Strip other version from MANPATH
|
||||||
|
MANPATH=`nvm_strip_path "$MANPATH" "/share/man"`
|
||||||
|
# Prepend current version
|
||||||
|
MANPATH=`nvm_prepend_path "$MANPATH" "$NVM_VERSION_DIR/share/man"`
|
||||||
|
# Strip other version from NODE_PATH
|
||||||
|
NODE_PATH=`nvm_strip_path "$NODE_PATH" "/lib/node_modules"`
|
||||||
|
# Prepend current version
|
||||||
|
NODE_PATH=`nvm_prepend_path "$NODE_PATH" "$NVM_VERSION_DIR/lib/node_modules"`
|
||||||
|
export PATH
|
||||||
|
hash -r
|
||||||
|
export MANPATH
|
||||||
|
export NODE_PATH
|
||||||
|
export NVM_PATH="$NVM_VERSION_DIR/lib/node"
|
||||||
|
export NVM_BIN="$NVM_VERSION_DIR/bin"
|
||||||
|
if [ "$NVM_SYMLINK_CURRENT" = true ] || [ -z "$NVM_SYMLINK_CURRENT" ]; then
|
||||||
|
rm -f "$NVM_DIR/current" && ln -s "$NVM_VERSION_DIR" "$NVM_DIR/current"
|
||||||
|
fi
|
||||||
|
echo "Now using node $VERSION"
|
||||||
|
;;
|
||||||
|
"run" )
|
||||||
|
local provided_version
|
||||||
|
local has_checked_nvmrc
|
||||||
|
has_checked_nvmrc=0
|
||||||
|
# run given version of node
|
||||||
|
shift
|
||||||
|
if [ $# -lt 1 ]; then
|
||||||
|
nvm_rc_version && has_checked_nvmrc=1
|
||||||
|
if [ -n "$NVM_RC_VERSION" ]; then
|
||||||
|
VERSION=`nvm_version $NVM_RC_VERSION`
|
||||||
|
else
|
||||||
|
VERSION='N/A'
|
||||||
|
fi
|
||||||
|
if [ $VERSION = "N/A" ]; then
|
||||||
|
nvm help
|
||||||
|
return 127
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
provided_version=$1
|
||||||
|
if [ -n "$provided_version" ]; then
|
||||||
|
VERSION=`nvm_version $provided_version`
|
||||||
|
if [ $VERSION = "N/A" ]; then
|
||||||
|
provided_version=''
|
||||||
|
if [ $has_checked_nvmrc -ne 1 ]; then
|
||||||
|
nvm_rc_version && has_checked_nvmrc=1
|
||||||
|
fi
|
||||||
|
VERSION=`nvm_version $NVM_RC_VERSION`
|
||||||
|
else
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
local NVM_VERSION_DIR
|
||||||
|
NVM_VERSION_DIR=$(nvm_version_path "$VERSION")
|
||||||
|
if [ ! -d "$NVM_VERSION_DIR" ]; then
|
||||||
|
echo "$VERSION version is not installed yet" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
RUN_NODE_PATH=`nvm_strip_path "$NODE_PATH" "/lib/node_modules"`
|
||||||
|
RUN_NODE_PATH=`nvm_prepend_path "$NODE_PATH" "$NVM_VERSION_DIR/lib/node_modules"`
|
||||||
|
echo "Running node $VERSION"
|
||||||
|
NODE_PATH=$RUN_NODE_PATH $NVM_VERSION_DIR/bin/node "$@"
|
||||||
|
;;
|
||||||
|
"exec" )
|
||||||
|
shift
|
||||||
|
|
||||||
|
local provided_version
|
||||||
|
provided_version="$1"
|
||||||
|
if [ -n "$provided_version" ]; then
|
||||||
|
VERSION=`nvm_version $provided_version`
|
||||||
|
if [ $VERSION = "N/A" ]; then
|
||||||
|
provided_version=''
|
||||||
|
nvm_rc_version
|
||||||
|
VERSION="$(nvm_version "$NVM_RC_VERSION")"
|
||||||
|
else
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
local NVM_VERSION_DIR
|
||||||
|
NVM_VERSION_DIR=$(nvm_version_path "$VERSION")
|
||||||
|
if [ ! -d "$NVM_VERSION_DIR" ]; then
|
||||||
|
echo "$VERSION version is not installed yet" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
echo "Running node $VERSION"
|
||||||
|
NODE_VERSION=$VERSION $NVM_DIR/nvm-exec "$@"
|
||||||
|
;;
|
||||||
|
"ls" | "list" )
|
||||||
|
local NVM_LS_OUTPUT
|
||||||
|
local NVM_LS_EXIT_CODE
|
||||||
|
NVM_LS_OUTPUT=$(nvm_ls "$2")
|
||||||
|
NVM_LS_EXIT_CODE=$?
|
||||||
|
nvm_print_versions "$NVM_LS_OUTPUT"
|
||||||
|
if [ $# -eq 1 ]; then
|
||||||
|
nvm alias
|
||||||
|
fi
|
||||||
|
return $NVM_LS_EXIT_CODE
|
||||||
|
;;
|
||||||
|
"ls-remote" | "list-remote" )
|
||||||
|
local NVM_LS_EXIT_CODE
|
||||||
|
NVM_LS_OUTPUT=$(nvm_ls_remote "$2")
|
||||||
|
NVM_LS_EXIT_CODE=$?
|
||||||
|
nvm_print_versions "$NVM_LS_OUTPUT"
|
||||||
|
return $NVM_LS_EXIT_CODE
|
||||||
|
;;
|
||||||
|
"current" )
|
||||||
|
nvm_version current
|
||||||
|
;;
|
||||||
|
"alias" )
|
||||||
|
mkdir -p "$NVM_DIR/alias"
|
||||||
|
if [ $# -le 2 ]; then
|
||||||
|
local DEST
|
||||||
|
for ALIAS in "$NVM_DIR"/alias/"$2"*; do
|
||||||
|
if [ -e "$ALIAS" ]; then
|
||||||
|
DEST="$(cat "$ALIAS")"
|
||||||
|
VERSION="$(nvm_version "$DEST")"
|
||||||
|
if [ "_$DEST" = "_$VERSION" ]; then
|
||||||
|
echo "$(basename "$ALIAS") -> $DEST"
|
||||||
|
else
|
||||||
|
echo "$(basename "$ALIAS") -> $DEST (-> $VERSION)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
if [ -z "$3" ]; then
|
||||||
|
rm -f "$NVM_DIR/alias/$2"
|
||||||
|
echo "$2 -> *poof*"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
VERSION="$(nvm_version "$3")"
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "! WARNING: Version '$3' does not exist." >&2
|
||||||
|
fi
|
||||||
|
echo $3 > "$NVM_DIR/alias/$2"
|
||||||
|
if [ ! "_$3" = "_$VERSION" ]; then
|
||||||
|
echo "$2 -> $3 (-> $VERSION)"
|
||||||
|
else
|
||||||
|
echo "$2 -> $3"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
"unalias" )
|
||||||
|
mkdir -p $NVM_DIR/alias
|
||||||
|
[ $# -ne 2 ] && nvm help && return 127
|
||||||
|
[ ! -f "$NVM_DIR/alias/$2" ] && echo "Alias $2 doesn't exist!" >&2 && return
|
||||||
|
rm -f $NVM_DIR/alias/$2
|
||||||
|
echo "Deleted alias $2"
|
||||||
|
;;
|
||||||
|
"copy-packages" )
|
||||||
if [ $# -ne 2 ]; then
|
if [ $# -ne 2 ]; then
|
||||||
nvm help
|
nvm help
|
||||||
return;
|
return 127
|
||||||
fi
|
fi
|
||||||
if [ ! -d $NVM_DIR/$2 ]; then
|
|
||||||
echo "$2 version is not installed yet"
|
local PROVIDED_VERSION
|
||||||
return;
|
PROVIDED_VERSION="$2"
|
||||||
|
|
||||||
|
if [ "$PROVIDED_VERSION" = "$(nvm_ls_current)" ] || [ "$(nvm_version $PROVIDED_VERSION)" = "$(nvm_ls_current)" ]; then
|
||||||
|
echo 'Can not copy packages from the current version of node.' >&2
|
||||||
|
return 2
|
||||||
fi
|
fi
|
||||||
if [[ $PATH == *$NVM_DIR/*/bin* ]]; then
|
|
||||||
PATH=${PATH%$NVM_DIR/*/bin*}$NVM_DIR/$2/bin${PATH#*$NVM_DIR/*/bin}
|
local INSTALLS
|
||||||
|
if [ "$PROVIDED_VERSION" = "system" ]; then
|
||||||
|
if ! nvm_has_system_node; then
|
||||||
|
echo 'No system version of node detected.' >&2
|
||||||
|
return 3
|
||||||
|
fi
|
||||||
|
INSTALLS=$(nvm deactivate > /dev/null && npm list -g --depth=0 | tail -n +2 | \grep -o -e ' [^@]*' | cut -c 2- | \grep -v npm | xargs)
|
||||||
else
|
else
|
||||||
PATH="$NVM_DIR/$2/bin:$PATH"
|
local VERSION
|
||||||
|
VERSION="$(nvm_version "$PROVIDED_VERSION")"
|
||||||
|
INSTALLS=$(nvm use "$VERSION" > /dev/null && npm list -g --depth=0 | tail -n +2 | \grep -o -e ' [^@]*' | cut -c 2- | \grep -v npm | xargs)
|
||||||
fi
|
fi
|
||||||
export PATH
|
|
||||||
echo "Now using node $2"
|
echo "Copying global packages from $VERSION..."
|
||||||
|
echo "$INSTALLS" | xargs npm install -g --quiet
|
||||||
;;
|
;;
|
||||||
"list" )
|
"clear-cache" )
|
||||||
if [ $# -ne 1 ]; then
|
rm -f $NVM_DIR/v* "$(nvm_version_dir)" 2>/dev/null
|
||||||
nvm help
|
echo "Cache cleared."
|
||||||
return;
|
;;
|
||||||
fi
|
"version" )
|
||||||
if [ -d $NVM_DIR/HEAD ]; then
|
nvm_version $2
|
||||||
if [[ $PATH == *$NVM_DIR/HEAD/bin* ]]; then
|
;;
|
||||||
echo "HEAD *"
|
"--version" )
|
||||||
else
|
echo "0.17.2"
|
||||||
echo "HEAD"
|
;;
|
||||||
fi
|
"unload" )
|
||||||
fi
|
unset -f nvm nvm_print_versions nvm_checksum nvm_ls_remote nvm_ls nvm_remote_version nvm_version nvm_rc_version nvm_version_greater nvm_version_greater_than_or_equal_to > /dev/null 2>&1
|
||||||
for f in $NVM_DIR/v*; do
|
unset RC_VERSION NVM_NODEJS_ORG_MIRROR NVM_DIR NVM_CD_FLAGS > /dev/null 2>&1
|
||||||
if [[ $PATH == *$f/bin* ]]; then
|
|
||||||
echo "v${f##*v} *"
|
|
||||||
else
|
|
||||||
echo "v${f##*v}"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
;;
|
;;
|
||||||
* )
|
* )
|
||||||
nvm help
|
nvm help
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if nvm ls default >/dev/null; then
|
||||||
|
nvm use default >/dev/null
|
||||||
|
elif nvm_rc_version >/dev/null 2>&1; then
|
||||||
|
nvm use >/dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
|
|||||||
34
package.json
Normal file
34
package.json
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
{
|
||||||
|
"name": "nvm",
|
||||||
|
"version": "0.17.2",
|
||||||
|
"description": "Node Version Manager - Simple bash script to manage multiple active node.js versions",
|
||||||
|
"directories": {
|
||||||
|
"test": "test"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"test": "urchin test",
|
||||||
|
"test/fast": "urchin -f test/fast",
|
||||||
|
"test/slow": "urchin -f test/slow",
|
||||||
|
"test/installation": "urchin -f test/installation"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git://github.com/creationix/nvm.git"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"nvm",
|
||||||
|
"node",
|
||||||
|
"version",
|
||||||
|
"manager"
|
||||||
|
],
|
||||||
|
"author": "Tim Caswell <tim@creationix.com>",
|
||||||
|
"license": "MIT",
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/creationix/nvm/issues"
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/creationix/nvm",
|
||||||
|
"devDependencies": {
|
||||||
|
"urchin": "~0.0.2"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
[ $(nvm alias test1 | wc -l) = '2' ]
|
||||||
28
test/fast/Aliases/Running "nvm alias" should list all aliases.
Executable file
28
test/fast/Aliases/Running "nvm alias" should list all aliases.
Executable file
@@ -0,0 +1,28 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
NVM_ALIAS_OUTPUT=$(nvm alias)
|
||||||
|
echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test1 -> 0.0.1 (-> v0.0.1)$' \
|
||||||
|
|| die "did not find test1 alias"
|
||||||
|
echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test2 -> 0.0.2 (-> v0.0.2)$' \
|
||||||
|
|| die "did not find test2 alias"
|
||||||
|
echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test3 -> 0.0.3 (-> v0.0.3)$' \
|
||||||
|
|| die "did not find test3 alias"
|
||||||
|
echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test4 -> 0.0.4 (-> v0.0.4)$' \
|
||||||
|
|| die "did not find test4 alias"
|
||||||
|
echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test5 -> 0.0.5 (-> v0.0.5)$' \
|
||||||
|
|| die "did not find test5 alias"
|
||||||
|
echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test6 -> 0.0.6 (-> v0.0.6)$' \
|
||||||
|
|| die "did not find test6 alias"
|
||||||
|
echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test7 -> 0.0.7 (-> v0.0.7)$' \
|
||||||
|
|| die "did not find test7 alias"
|
||||||
|
echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test8 -> 0.0.8 (-> v0.0.8)$' \
|
||||||
|
|| die "did not find test8 alias"
|
||||||
|
echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test9 -> 0.0.9 (-> v0.0.9)$' \
|
||||||
|
|| die "did not find test9 alias"
|
||||||
|
echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test10 -> 0.0.10 (-> v0.0.10)$' \
|
||||||
|
|| die "did not find test10 alias"
|
||||||
|
|
||||||
7
test/fast/Aliases/setup_dir
Executable file
7
test/fast/Aliases/setup_dir
Executable file
@@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
for i in $(seq 1 10)
|
||||||
|
do
|
||||||
|
echo 0.0.$i > ../../../alias/test$i
|
||||||
|
mkdir -p ../../../v0.0.$i
|
||||||
|
done
|
||||||
8
test/fast/Aliases/teardown_dir
Executable file
8
test/fast/Aliases/teardown_dir
Executable file
@@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
for i in $(seq 1 10)
|
||||||
|
do
|
||||||
|
rm -f "../../../alias/test$i"
|
||||||
|
rm -rf "../../../v0.0.$i"
|
||||||
|
done
|
||||||
|
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
mkdir ../../../v0.0.2
|
||||||
|
mkdir ../../../v0.0.20
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
# The result should contain only the appropriate version numbers.
|
||||||
|
|
||||||
|
nvm ls 0.0.2 | grep 'v0.0.2' > /dev/null
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo '"nvm ls 0.0.2" contained v0.0.2'
|
||||||
|
fi
|
||||||
|
|
||||||
|
nvm ls 0.0.2 | grep 'v0.0.20' > /dev/null
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
die '"nvm ls 0.0.2" contained v0.0.20'
|
||||||
|
fi
|
||||||
|
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
mkdir ../../../v0.1.3
|
||||||
|
mkdir ../../../v0.2.3
|
||||||
|
mkdir ../../../v0.20.3
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
# The result should contain only the appropriate version numbers.
|
||||||
|
|
||||||
|
nvm ls 0.1 | grep 'v0.2.3' > /dev/null
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo '"nvm ls 0.1" contained v0.2.3'
|
||||||
|
fi
|
||||||
|
|
||||||
|
nvm ls 0.1 | grep 'v0.20.3' > /dev/null
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
die '"nvm ls 0.1" contained v0.20.3'
|
||||||
|
fi
|
||||||
|
|
||||||
|
nvm ls 0.1 | grep 'v0.1.3' > /dev/null
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
die '"nvm ls 0.1" did not contain v0.1.3'
|
||||||
|
fi
|
||||||
|
|
||||||
|
nvm ls 0.2 | grep 'v0.2.3' > /dev/null
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
die '"nvm ls 0.2" did not contain v0.2.3'
|
||||||
|
fi
|
||||||
|
|
||||||
|
nvm ls 0.2 | grep 'v0.20.3' > /dev/null
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
die '"nvm ls 0.2" contained v0.20.3'
|
||||||
|
fi
|
||||||
|
|
||||||
|
nvm ls 0.2 | grep 'v0.2.3' > /dev/null
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
die '"nvm ls 0.2" did not contain v0.2.3'
|
||||||
|
fi
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
nvm ls nonexistent_version
|
||||||
|
[ "$?" = "3" ]
|
||||||
|
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
nvm ls node
|
||||||
|
[ "$?" = "3" ]
|
||||||
|
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
mkdir -p ../../../v0.0.1
|
||||||
|
mkdir -p ../../../v0.0.3
|
||||||
|
mkdir -p ../../../v0.0.9
|
||||||
|
mkdir -p ../../../v0.3.1
|
||||||
|
mkdir -p ../../../v0.3.3
|
||||||
|
mkdir -p ../../../v0.3.9
|
||||||
|
|
||||||
|
nvm_has_system_node() { return 0; }
|
||||||
|
nvm ls system | grep system 2>&1 > /dev/null
|
||||||
|
[ $? -eq 0 ] || die '"nvm ls system" did not contain "system" when system node is present'
|
||||||
|
|
||||||
|
nvm_has_system_node() { return 1; }
|
||||||
|
nvm ls system | grep system 2>&1 > /dev/null
|
||||||
|
[ $? -ne 0 ] || die '"nvm ls system" contained "system" when system node is not present'
|
||||||
|
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
mkdir ../../../v0.0.1
|
||||||
|
mkdir ../../../v0.0.3
|
||||||
|
mkdir ../../../v0.0.9
|
||||||
|
mkdir ../../../v0.3.1
|
||||||
|
mkdir ../../../v0.3.3
|
||||||
|
mkdir ../../../v0.3.9
|
||||||
|
|
||||||
|
# The result should contain the version numbers.
|
||||||
|
nvm ls | grep v0.0.1 &&
|
||||||
|
nvm ls | grep v0.0.3 &&
|
||||||
|
nvm ls | grep v0.0.9 &&
|
||||||
|
nvm ls | grep v0.3.1 &&
|
||||||
|
nvm ls | grep v0.3.3 &&
|
||||||
|
nvm ls | grep v0.3.9
|
||||||
9
test/fast/Listing versions/Running "nvm ls" should filter out ".nvm"
Executable file
9
test/fast/Listing versions/Running "nvm ls" should filter out ".nvm"
Executable file
@@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
mkdir ../../../v0.1.3
|
||||||
|
mkdir ../../../v0.2.3
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
[ -z `nvm ls | grep '^ *\.'` ]
|
||||||
|
# The result should contain only the appropriate version numbers.
|
||||||
11
test/fast/Listing versions/Running "nvm ls" should filter out "versions"
Executable file
11
test/fast/Listing versions/Running "nvm ls" should filter out "versions"
Executable file
@@ -0,0 +1,11 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
mkdir ../../../v0.1.3
|
||||||
|
mkdir ../../../v0.2.3
|
||||||
|
mkdir ../../../versions
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
[ -z "$(nvm ls | \grep 'versions')" ]
|
||||||
|
# The result should contain only the appropriate version numbers.
|
||||||
|
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
mkdir -p ../../../v0.0.1
|
||||||
|
mkdir -p ../../../v0.0.3
|
||||||
|
mkdir -p ../../../v0.0.9
|
||||||
|
mkdir -p ../../../v0.3.1
|
||||||
|
mkdir -p ../../../v0.3.3
|
||||||
|
mkdir -p ../../../v0.3.9
|
||||||
|
|
||||||
|
nvm_has_system_node() { return 0; }
|
||||||
|
nvm ls | grep system 2>&1 > /dev/null
|
||||||
|
[ $? -eq 0 ] || die '"nvm ls" did not contain "system" when system node is present'
|
||||||
|
|
||||||
|
nvm_has_system_node() { return 1; }
|
||||||
|
nvm ls | grep system 2>&1 > /dev/null
|
||||||
|
[ $? -ne 0 ] || die '"nvm ls" contained "system" when system node is not present'
|
||||||
|
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
mkdir -p ../../../versions/v0.12.1
|
||||||
|
mkdir ../../../v0.1.3
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
nvm ls 0.12 | grep v0.12.1 || die '"nvm ls" did not list a version in the versions/ directory'
|
||||||
|
nvm ls 0.1 | grep v0.1.3 || die '"nvm ls" did not list a version not in the versions/ directory'
|
||||||
|
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
mkdir ../../../v0.1.2
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
nvm ls v0.1 | grep v0.1.2 &&
|
||||||
|
nvm ls v0.1.2 | grep v0.1.2 &&
|
||||||
|
nvm ls v0.1. | grep v0.1.2 &&
|
||||||
|
nvm ls v0.1.1 | grep N/A
|
||||||
|
|
||||||
14
test/fast/Listing versions/teardown
Executable file
14
test/fast/Listing versions/teardown
Executable file
@@ -0,0 +1,14 @@
|
|||||||
|
rmdir ../../../v0.0.1 >/dev/null 2>&1
|
||||||
|
rmdir ../../../v0.0.2 >/dev/null 2>&1
|
||||||
|
rmdir ../../../v0.0.3 >/dev/null 2>&1
|
||||||
|
rmdir ../../../v0.0.9 >/dev/null 2>&1
|
||||||
|
rmdir ../../../v0.0.20 >/dev/null 2>&1
|
||||||
|
rmdir ../../../v0.1.2 >/dev/null 2>&1
|
||||||
|
rmdir ../../../v0.1.3 >/dev/null 2>&1
|
||||||
|
rmdir ../../../v0.2.3 >/dev/null 2>&1
|
||||||
|
rmdir ../../../v0.3.1 >/dev/null 2>&1
|
||||||
|
rmdir ../../../v0.3.3 >/dev/null 2>&1
|
||||||
|
rmdir ../../../v0.3.9 >/dev/null 2>&1
|
||||||
|
rmdir ../../../versions >/dev/null 2>&1
|
||||||
|
unalias nvm_has_system_node >/dev/null 2>&1
|
||||||
|
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ../../nvm.sh
|
||||||
|
nvm alias test v0.1.2
|
||||||
|
[ "$(cat ../../alias/test)" = "v0.1.2" ]
|
||||||
10
test/fast/Running "nvm current" should display current nvm environment.
Executable file
10
test/fast/Running "nvm current" should display current nvm environment.
Executable file
@@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../nvm.sh
|
||||||
|
|
||||||
|
nvm deactivate 2>&1
|
||||||
|
|
||||||
|
[ "$(nvm current)" = "system" ] || [ "$(nvm current)" = "none" ] || die '"nvm current" did not report "system" or "none" when deactivated'
|
||||||
|
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
mkdir -p ../../v0.2.3
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
[ `expr $PATH : ".*v0.2.3/.*/bin"` = 0 ] || echo "WARNING: Unexpectedly found v0.2.3 already active" >&2
|
||||||
|
|
||||||
|
. ../../nvm.sh
|
||||||
|
nvm use v0.2.3 &&
|
||||||
|
[ `expr $PATH : ".*v0.2.3/.*/bin"` != 0 ] && [ `expr $NODE_PATH : ".*v0.2.3/.*/lib/node_modules"` != 0 ] || die "Failed to activate v0.2.3"
|
||||||
|
|
||||||
|
nvm deactivate &&
|
||||||
|
[ `expr $PATH : ".*v0.2.3/.*/bin"` = 0 ] && [ `expr $NODE_PATH : ".*v0.2.3/.*/lib/node_modules"` = 0 ] || die "Failed to deactivate v0.2.3"
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; cleanup ; exit 1; }
|
||||||
|
cleanup () {
|
||||||
|
rm -rf ../../v0.10.4
|
||||||
|
}
|
||||||
|
|
||||||
|
mkdir ../../v0.10.4
|
||||||
|
|
||||||
|
. ../../nvm.sh
|
||||||
|
|
||||||
|
nvm deactivate >/dev/null 2>&1
|
||||||
|
|
||||||
|
INSTALL_ERROR_MSG="$(nvm install v0.10.5 --copy-packages-from=0.11 2>&1)"
|
||||||
|
EXPECTED_ERROR_MSG="If --copy-packages-from is provided, it must point to an installed version of node."
|
||||||
|
[ "~$INSTALL_ERROR_MSG" = "~$EXPECTED_ERROR_MSG" ] \
|
||||||
|
|| die ""nvm install --copy-packages" should fail when given an uninstalled version: expected '$EXPECTED_ERROR_MSG', got '$INSTALL_ERROR_MSG'"
|
||||||
|
|
||||||
|
INSTALL_EXIT_CODE="$(nvm install v0.10.5 --copy-packages-from=0.11 >/dev/null 2>&1; echo $?)"
|
||||||
|
[ "~$INSTALL_EXIT_CODE" = "~5" ] \
|
||||||
|
|| die ""nvm install --copy-packages" should exit with code 5 when given an uninstalled version, got $INSTALL_EXIT_CODE"
|
||||||
|
|
||||||
|
INSTALL_ERROR_MSG="$(nvm install v0.10.5 --copy-packages-from=0.10.5 2>&1)"
|
||||||
|
EXPECTED_ERROR_MSG="You can't copy global packages from the same version of node you're installing."
|
||||||
|
[ "~$INSTALL_ERROR_MSG" = "~$EXPECTED_ERROR_MSG" ] \
|
||||||
|
|| die ""nvm install --copy-packages" should fail when given the same version: expected '$EXPECTED_ERROR_MSG', got '$INSTALL_ERROR_MSG'"
|
||||||
|
|
||||||
|
INSTALL_EXIT_CODE="$(nvm install v0.10.5 --copy-packages-from=0.10.5 >/dev/null 2>&1; echo $?)"
|
||||||
|
[ "~$INSTALL_EXIT_CODE" = "~4" ] \
|
||||||
|
|| die ""nvm install --copy-packages" should exit with code 4 when given the same version, got $INSTALL_EXIT_CODE"
|
||||||
|
|
||||||
7
test/fast/Running "nvm install" with an invalid version fails nicely
Executable file
7
test/fast/Running "nvm install" with an invalid version fails nicely
Executable file
@@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../nvm.sh
|
||||||
|
[ "$(nvm install invalid.invalid 2>&1)" = "Version 'invalid.invalid' not found - try \`nvm ls-remote\` to browse available versions." ] || die "nvm installing an invalid version did not print a nice error message"
|
||||||
|
|
||||||
6
test/fast/Running "nvm unalias" should remove the alias file.
Executable file
6
test/fast/Running "nvm unalias" should remove the alias file.
Executable file
@@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
echo v0.1.2 > ../../alias/test
|
||||||
|
. ../../nvm.sh
|
||||||
|
nvm unalias test
|
||||||
|
! [ -e ../../alias/test ]
|
||||||
10
test/fast/Running "nvm uninstall" should remove the appropriate directory.
Executable file
10
test/fast/Running "nvm uninstall" should remove the appropriate directory.
Executable file
@@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
cd ../..
|
||||||
|
mkdir v0.0.1
|
||||||
|
mkdir src/node-v0.0.1
|
||||||
|
|
||||||
|
. ./nvm.sh
|
||||||
|
nvm uninstall v0.0.1
|
||||||
|
|
||||||
|
[ ! -d 'v0.0.1' ] && [ ! -d 'src/node-v0.0.1' ]
|
||||||
12
test/fast/Running "nvm unload" should unset all function and variables.
Executable file
12
test/fast/Running "nvm unload" should unset all function and variables.
Executable file
@@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
fail () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../nvm.sh
|
||||||
|
|
||||||
|
type nvm > /dev/null 2>&1 || fail "NVM not loaded"
|
||||||
|
|
||||||
|
nvm unload
|
||||||
|
|
||||||
|
type nvm > /dev/null 2>&1 && fail "NVM not unloaded" || exit 0
|
||||||
|
|
||||||
13
test/fast/Running "nvm use system" should work as expected
Executable file
13
test/fast/Running "nvm use system" should work as expected
Executable file
@@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../nvm.sh
|
||||||
|
|
||||||
|
nvm_has_system_node() { return 0; }
|
||||||
|
[ "$(nvm use system 2>&1 | tail -n1)" = "Now using system version of node: $(node -v)." ] || die "Could not use system version of node"
|
||||||
|
|
||||||
|
nvm_has_system_node() { return 1; }
|
||||||
|
[ "$(nvm use system 2>&1 | tail -n1)" = "System version of node not found." ] || die "Did not report error, system node not found"
|
||||||
|
nvm use system 2>&1 > /dev/null || [ $? -eq 127 ] || die "Did not return error code, system node not found"
|
||||||
|
|
||||||
32
test/fast/Running "nvm use x" should create and change the "current" symlink
Executable file
32
test/fast/Running "nvm use x" should create and change the "current" symlink
Executable file
@@ -0,0 +1,32 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
. ../../nvm.sh
|
||||||
|
|
||||||
|
rm -rf ../../v0.10.29
|
||||||
|
mkdir ../../v0.10.29
|
||||||
|
nvm use 0.10.29
|
||||||
|
rmdir ../../v0.10.29
|
||||||
|
|
||||||
|
if [ ! -L ../../current ];then
|
||||||
|
echo "Expected 'current' symlink to be created!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
oldLink="$(readlink ../../current)"
|
||||||
|
|
||||||
|
if [ "$(basename $oldLink)" != 'v0.10.29' ];then
|
||||||
|
echo "Expected 'current' to point to v0.10.29 but was $oldLink"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -rf ../../v0.11.13
|
||||||
|
mkdir ../../v0.11.13
|
||||||
|
nvm use 0.11.13
|
||||||
|
rmdir ../../v0.11.13
|
||||||
|
|
||||||
|
newLink="$(readlink ../../current)"
|
||||||
|
|
||||||
|
if [ "$(basename $newLink)" != 'v0.11.13' ];then
|
||||||
|
echo "Expected 'current' to point to v0.11.13 but was $newLink"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
. ../../nvm.sh
|
||||||
|
|
||||||
|
TEST_NODE_VERSION="v0.10.29"
|
||||||
|
|
||||||
|
TEST_COUNT=0
|
||||||
|
TEST_PASSED=0
|
||||||
|
TEST_FAILED=0
|
||||||
|
|
||||||
|
function registerExpectedSymlink() {
|
||||||
|
registerResult ${1}
|
||||||
|
}
|
||||||
|
|
||||||
|
function registerExpectedNoSymlink() {
|
||||||
|
[ ${1} -ne 0 ]
|
||||||
|
registerResult $?
|
||||||
|
}
|
||||||
|
|
||||||
|
function registerResult() {
|
||||||
|
result=${1}
|
||||||
|
|
||||||
|
TEST_COUNT=$(($TEST_COUNT + 1))
|
||||||
|
|
||||||
|
[ ${result} -eq 0 ] \
|
||||||
|
&& TEST_PASSED=$(($TEST_PASSED + 1)) \
|
||||||
|
|| TEST_FAILED=$(($TEST_FAILED + 1))
|
||||||
|
}
|
||||||
|
|
||||||
|
function cleanup() {
|
||||||
|
rm -rf ../../${TEST_NODE_VERSION}
|
||||||
|
rm -f ../../current
|
||||||
|
}
|
||||||
|
|
||||||
|
function runNvmUse() {
|
||||||
|
mkdir ../../${TEST_NODE_VERSION}
|
||||||
|
nvm use ${TEST_NODE_VERSION} > /dev/null 2>&1
|
||||||
|
rmdir ../../${TEST_NODE_VERSION}
|
||||||
|
}
|
||||||
|
|
||||||
|
function isCurrentSymlinkPresent() {
|
||||||
|
[ -L ../../current ]
|
||||||
|
}
|
||||||
|
|
||||||
|
NVM_SYMLINK_CURRENT=false
|
||||||
|
cleanup
|
||||||
|
runNvmUse
|
||||||
|
isCurrentSymlinkPresent && echo "Expected 'current' symlink not to be created when NVM_SYMLINK_CURRENT=false!"
|
||||||
|
registerExpectedNoSymlink $?
|
||||||
|
|
||||||
|
NVM_SYMLINK_CURRENT=true
|
||||||
|
cleanup
|
||||||
|
runNvmUse
|
||||||
|
isCurrentSymlinkPresent || echo "Expected 'current' symlink to be created when NVM_SYMLINK_CURRENT=true!"
|
||||||
|
registerExpectedSymlink $?
|
||||||
|
|
||||||
|
NVM_SYMLINK_CURRENT=garbagevalue
|
||||||
|
cleanup
|
||||||
|
runNvmUse
|
||||||
|
isCurrentSymlinkPresent && echo "Expected 'current' symlink not to be created when NVM_SYMLINK_CURRENT contains a string!"
|
||||||
|
registerExpectedNoSymlink $?
|
||||||
|
|
||||||
|
NVM_SYMLINK_CURRENT=0
|
||||||
|
cleanup
|
||||||
|
runNvmUse
|
||||||
|
isCurrentSymlinkPresent && echo "Expected 'current' symlink not to be created when NVM_SYMLINK_CURRENT=0!"
|
||||||
|
registerExpectedNoSymlink $?
|
||||||
|
|
||||||
|
NVM_SYMLINK_CURRENT=1
|
||||||
|
cleanup
|
||||||
|
runNvmUse
|
||||||
|
isCurrentSymlinkPresent && echo "Expected 'current' symlink not to be created when NVM_SYMLINK_CURRENT=1!"
|
||||||
|
registerExpectedNoSymlink $?
|
||||||
|
|
||||||
|
unset NVM_SYMLINK_CURRENT
|
||||||
|
cleanup
|
||||||
|
runNvmUse
|
||||||
|
isCurrentSymlinkPresent || echo "Expected 'current' symlink to be created when NVM_SYMLINK_CURRENT has been unset (default behaviour)!"
|
||||||
|
registerExpectedSymlink $?
|
||||||
|
|
||||||
|
cleanup
|
||||||
|
|
||||||
|
[ ${TEST_FAILED} -ne 0 ] && echo "${TEST_COUNT} tested, ${TEST_PASSED} passed, ${TEST_FAILED} failed" && exit 1 || true
|
||||||
4
test/fast/Sourcing nvm.sh should make the nvm command available.
Executable file
4
test/fast/Sourcing nvm.sh should make the nvm command available.
Executable file
@@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ../../nvm.sh
|
||||||
|
nvm
|
||||||
18
test/fast/Unit tests/nvm_checksum
Executable file
18
test/fast/Unit tests/nvm_checksum
Executable file
@@ -0,0 +1,18 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
cleanup () {
|
||||||
|
rm tmp/emptyfile tmp/testfile
|
||||||
|
rmdir tmp
|
||||||
|
}
|
||||||
|
die () { echo $@ ; cleanup; exit 1; }
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
mkdir -p tmp
|
||||||
|
touch tmp/emptyfile
|
||||||
|
echo -n "test" > tmp/testfile
|
||||||
|
|
||||||
|
nvm_checksum tmp/emptyfile "da39a3ee5e6b4b0d3255bfef95601890afd80709" || die "nvm_checksum on an empty file did not match the SHA1 digest of the empty string"
|
||||||
|
nvm_checksum tmp/testfile "da39a3ee5e6b4b0d3255bfef95601890afd80709" && die "nvm_checksum allowed a bad checksum"
|
||||||
|
|
||||||
|
cleanup
|
||||||
26
test/fast/Unit tests/nvm_find_up
Executable file
26
test/fast/Unit tests/nvm_find_up
Executable file
@@ -0,0 +1,26 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; cleanup ; exit 1; }
|
||||||
|
setup() {
|
||||||
|
cleanup
|
||||||
|
mkdir -p tmp_nvm_find_up/a/b/c/d
|
||||||
|
touch tmp_nvm_find_up/test
|
||||||
|
touch tmp_nvm_find_up/a/b/c/test
|
||||||
|
}
|
||||||
|
cleanup () {
|
||||||
|
rm -rf tmp_nvm_find_up
|
||||||
|
}
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
setup
|
||||||
|
|
||||||
|
TEST_DIR="$PWD"
|
||||||
|
|
||||||
|
[ "~$(PWD=$TEST_DIR/tmp_nvm_find_up/a nvm_find_up 'test')" = "~$TEST_DIR/tmp_nvm_find_up" ] || die "failed to find 1 dir up"
|
||||||
|
[ "~$(PWD=$TEST_DIR/tmp_nvm_find_up/a/b nvm_find_up 'test')" = "~$TEST_DIR/tmp_nvm_find_up" ] || die "failed to find 2 dirs up"
|
||||||
|
[ "~$(PWD=$TEST_DIR/tmp_nvm_find_up/a/b/c nvm_find_up 'test')" = "~$TEST_DIR/tmp_nvm_find_up/a/b/c" ] || die "failed to find in current dir"
|
||||||
|
[ "~$(PWD=$TEST_DIR/tmp_nvm_find_up/a/b/c/d nvm_find_up 'test')" = "~$TEST_DIR/tmp_nvm_find_up/a/b/c" ] || die "failed to find 1 level up from current dir"
|
||||||
|
|
||||||
|
cleanup
|
||||||
|
|
||||||
14
test/fast/Unit tests/nvm_format_version
Executable file
14
test/fast/Unit tests/nvm_format_version
Executable file
@@ -0,0 +1,14 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
OUTPUT="$(nvm_format_version 0.1.2)"
|
||||||
|
EXPECTED_OUTPUT="v0.1.2"
|
||||||
|
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm_format_version 0.1.2 did not return $EXPECTED_OUTPUT; got $OUTPUT"
|
||||||
|
|
||||||
|
OUTPUT="$(nvm_format_version 0.1)"
|
||||||
|
EXPECTED_OUTPUT="v0.1.0"
|
||||||
|
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm_format_version 0.1.0 did not return $EXPECTED_OUTPUT; got $OUTPUT"
|
||||||
|
|
||||||
12
test/fast/Unit tests/nvm_has
Executable file
12
test/fast/Unit tests/nvm_has
Executable file
@@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
nvm_has cat && type cat > /dev/null || die 'nvm_has locates "cat" properly'
|
||||||
|
|
||||||
|
[ "~$(nvm_has foobarbaz 2>&1)" = "~" ] || die "nvm_has does not suppress error output"
|
||||||
|
|
||||||
|
! nvm_has foobarbaz && ! type foobarbaz >/dev/null 2>&1 || die "nvm_has does not return a nonzero exit code when not found"
|
||||||
|
|
||||||
29
test/fast/Unit tests/nvm_has_system_node
Executable file
29
test/fast/Unit tests/nvm_has_system_node
Executable file
@@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
cleanup () {
|
||||||
|
rm ../../../v0.1.2/node
|
||||||
|
rmdir ../../../v0.1.2
|
||||||
|
}
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
mkdir ../../../v0.1.2
|
||||||
|
touch ../../../v0.1.2/node
|
||||||
|
|
||||||
|
nvm use 0.1.2
|
||||||
|
|
||||||
|
if command -v node; then
|
||||||
|
nvm_has_system_node
|
||||||
|
else
|
||||||
|
! nvm_has_system_node
|
||||||
|
fi
|
||||||
|
|
||||||
|
nvm deactivate /dev/null 2>&1
|
||||||
|
|
||||||
|
if command -v node; then
|
||||||
|
nvm_has_system_node
|
||||||
|
else
|
||||||
|
! nvm_has_system_node
|
||||||
|
fi
|
||||||
|
|
||||||
28
test/fast/Unit tests/nvm_ls_current
Executable file
28
test/fast/Unit tests/nvm_ls_current
Executable file
@@ -0,0 +1,28 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
return_zero () { return 0; }
|
||||||
|
|
||||||
|
[ "$(nvm deactivate > /dev/null 2>&1 ; nvm_ls_current)" = "system" ] || die 'when deactivated, did not return "system"'
|
||||||
|
|
||||||
|
TEST_PWD=$(pwd)
|
||||||
|
TEST_DIR="$TEST_PWD/nvm_ls_current_tmp"
|
||||||
|
rm -rf "$TEST_DIR"
|
||||||
|
mkdir "$TEST_DIR"
|
||||||
|
ln -s "$(which which)" "$TEST_DIR/which"
|
||||||
|
ln -s "$(which dirname)" "$TEST_DIR/dirname"
|
||||||
|
|
||||||
|
[ "$(PATH="$TEST_DIR" nvm_ls_current)" = "none" ] || die 'when node not installed, nvm_ls_current did not return "none"'
|
||||||
|
[ "@$(PATH="$TEST_DIR" nvm_ls_current 2> /dev/stdout 1> /dev/null)@" = "@@" ] || die 'when node not installed, nvm_ls_current returned error output'
|
||||||
|
|
||||||
|
echo "#!/bin/bash" > "$TEST_DIR/node"
|
||||||
|
echo "echo 'VERSION FOO!'" > "$TEST_DIR/node"
|
||||||
|
chmod a+x "$TEST_DIR/node"
|
||||||
|
|
||||||
|
[ "$(alias nvm_tree_contains_path='return_zero' && PATH="$TEST_DIR" nvm_ls_current)" = "VERSION FOO!" ] || die 'when activated, did not return nvm node version'
|
||||||
|
|
||||||
|
rm -rf "$TEST_DIR"
|
||||||
|
|
||||||
468
test/fast/Unit tests/nvm_ls_remote
Executable file
468
test/fast/Unit tests/nvm_ls_remote
Executable file
@@ -0,0 +1,468 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; cleanup ; exit 1; }
|
||||||
|
|
||||||
|
cleanup() {
|
||||||
|
unset -f nvm_download
|
||||||
|
}
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
# sample output at the time the test was written
|
||||||
|
nvm_download() {
|
||||||
|
echo 'foo "v0.10.0'
|
||||||
|
echo 'foo "v0.10.0'
|
||||||
|
echo 'foo "v0.10.1'
|
||||||
|
echo 'foo "v0.10.1'
|
||||||
|
echo 'foo "v0.10.10'
|
||||||
|
echo 'foo "v0.10.10'
|
||||||
|
echo 'foo "v0.10.11'
|
||||||
|
echo 'foo "v0.10.11'
|
||||||
|
echo 'foo "v0.10.12'
|
||||||
|
echo 'foo "v0.10.12'
|
||||||
|
echo 'foo "v0.10.13'
|
||||||
|
echo 'foo "v0.10.13'
|
||||||
|
echo 'foo "v0.10.14'
|
||||||
|
echo 'foo "v0.10.14'
|
||||||
|
echo 'foo "v0.10.15'
|
||||||
|
echo 'foo "v0.10.15'
|
||||||
|
echo 'foo "v0.10.16'
|
||||||
|
echo 'foo "v0.10.16'
|
||||||
|
echo 'foo "v0.10.16'
|
||||||
|
echo 'foo "v0.10.16'
|
||||||
|
echo 'foo "v0.10.17'
|
||||||
|
echo 'foo "v0.10.17'
|
||||||
|
echo 'foo "v0.10.18'
|
||||||
|
echo 'foo "v0.10.18'
|
||||||
|
echo 'foo "v0.10.19'
|
||||||
|
echo 'foo "v0.10.19'
|
||||||
|
echo 'foo "v0.10.2'
|
||||||
|
echo 'foo "v0.10.2'
|
||||||
|
echo 'foo "v0.10.20'
|
||||||
|
echo 'foo "v0.10.20'
|
||||||
|
echo 'foo "v0.10.21'
|
||||||
|
echo 'foo "v0.10.21'
|
||||||
|
echo 'foo "v0.10.22'
|
||||||
|
echo 'foo "v0.10.22'
|
||||||
|
echo 'foo "v0.10.23'
|
||||||
|
echo 'foo "v0.10.23'
|
||||||
|
echo 'foo "v0.10.24'
|
||||||
|
echo 'foo "v0.10.24'
|
||||||
|
echo 'foo "v0.10.25'
|
||||||
|
echo 'foo "v0.10.25'
|
||||||
|
echo 'foo "v0.10.26'
|
||||||
|
echo 'foo "v0.10.26'
|
||||||
|
echo 'foo "v0.10.27'
|
||||||
|
echo 'foo "v0.10.27'
|
||||||
|
echo 'foo "v0.10.28'
|
||||||
|
echo 'foo "v0.10.28'
|
||||||
|
echo 'foo "v0.10.29'
|
||||||
|
echo 'foo "v0.10.29'
|
||||||
|
echo 'foo "v0.10.3'
|
||||||
|
echo 'foo "v0.10.3'
|
||||||
|
echo 'foo "v0.10.30'
|
||||||
|
echo 'foo "v0.10.30'
|
||||||
|
echo 'foo "v0.10.31'
|
||||||
|
echo 'foo "v0.10.31'
|
||||||
|
echo 'foo "v0.10.32'
|
||||||
|
echo 'foo "v0.10.32'
|
||||||
|
echo 'foo "v0.10.4'
|
||||||
|
echo 'foo "v0.10.4'
|
||||||
|
echo 'foo "v0.10.5'
|
||||||
|
echo 'foo "v0.10.5'
|
||||||
|
echo 'foo "v0.10.6'
|
||||||
|
echo 'foo "v0.10.6'
|
||||||
|
echo 'foo "v0.10.7'
|
||||||
|
echo 'foo "v0.10.7'
|
||||||
|
echo 'foo "v0.10.8'
|
||||||
|
echo 'foo "v0.10.8'
|
||||||
|
echo 'foo "v0.10.9'
|
||||||
|
echo 'foo "v0.10.9'
|
||||||
|
echo 'foo "v0.11.0'
|
||||||
|
echo 'foo "v0.11.0'
|
||||||
|
echo 'foo "v0.11.1'
|
||||||
|
echo 'foo "v0.11.1'
|
||||||
|
echo 'foo "v0.11.10'
|
||||||
|
echo 'foo "v0.11.10'
|
||||||
|
echo 'foo "v0.11.11'
|
||||||
|
echo 'foo "v0.11.11'
|
||||||
|
echo 'foo "v0.11.12'
|
||||||
|
echo 'foo "v0.11.12'
|
||||||
|
echo 'foo "v0.11.13'
|
||||||
|
echo 'foo "v0.11.13'
|
||||||
|
echo 'foo "v0.11.14'
|
||||||
|
echo 'foo "v0.11.14'
|
||||||
|
echo 'foo "v0.11.2'
|
||||||
|
echo 'foo "v0.11.2'
|
||||||
|
echo 'foo "v0.11.3'
|
||||||
|
echo 'foo "v0.11.3'
|
||||||
|
echo 'foo "v0.11.4'
|
||||||
|
echo 'foo "v0.11.4'
|
||||||
|
echo 'foo "v0.11.5'
|
||||||
|
echo 'foo "v0.11.5'
|
||||||
|
echo 'foo "v0.11.6'
|
||||||
|
echo 'foo "v0.11.6'
|
||||||
|
echo 'foo "v0.11.7'
|
||||||
|
echo 'foo "v0.11.7'
|
||||||
|
echo 'foo "v0.11.8'
|
||||||
|
echo 'foo "v0.11.8'
|
||||||
|
echo 'foo "v0.11.9'
|
||||||
|
echo 'foo "v0.11.9'
|
||||||
|
echo 'foo "v0.5.1'
|
||||||
|
echo 'foo "v0.5.1'
|
||||||
|
echo 'foo "v0.5.10'
|
||||||
|
echo 'foo "v0.5.10'
|
||||||
|
echo 'foo "v0.5.2'
|
||||||
|
echo 'foo "v0.5.2'
|
||||||
|
echo 'foo "v0.5.3'
|
||||||
|
echo 'foo "v0.5.3'
|
||||||
|
echo 'foo "v0.5.4'
|
||||||
|
echo 'foo "v0.5.4'
|
||||||
|
echo 'foo "v0.5.5'
|
||||||
|
echo 'foo "v0.5.5'
|
||||||
|
echo 'foo "v0.5.6'
|
||||||
|
echo 'foo "v0.5.6'
|
||||||
|
echo 'foo "v0.5.7'
|
||||||
|
echo 'foo "v0.5.7'
|
||||||
|
echo 'foo "v0.5.8'
|
||||||
|
echo 'foo "v0.5.8'
|
||||||
|
echo 'foo "v0.5.9'
|
||||||
|
echo 'foo "v0.5.9'
|
||||||
|
echo 'foo "v0.6.0'
|
||||||
|
echo 'foo "v0.6.0'
|
||||||
|
echo 'foo "v0.6.1'
|
||||||
|
echo 'foo "v0.6.1'
|
||||||
|
echo 'foo "v0.6.10'
|
||||||
|
echo 'foo "v0.6.10'
|
||||||
|
echo 'foo "v0.6.11'
|
||||||
|
echo 'foo "v0.6.11'
|
||||||
|
echo 'foo "v0.6.12'
|
||||||
|
echo 'foo "v0.6.12'
|
||||||
|
echo 'foo "v0.6.13'
|
||||||
|
echo 'foo "v0.6.13'
|
||||||
|
echo 'foo "v0.6.14'
|
||||||
|
echo 'foo "v0.6.14'
|
||||||
|
echo 'foo "v0.6.15'
|
||||||
|
echo 'foo "v0.6.15'
|
||||||
|
echo 'foo "v0.6.16'
|
||||||
|
echo 'foo "v0.6.16'
|
||||||
|
echo 'foo "v0.6.17'
|
||||||
|
echo 'foo "v0.6.17'
|
||||||
|
echo 'foo "v0.6.18'
|
||||||
|
echo 'foo "v0.6.18'
|
||||||
|
echo 'foo "v0.6.19'
|
||||||
|
echo 'foo "v0.6.19'
|
||||||
|
echo 'foo "v0.6.2'
|
||||||
|
echo 'foo "v0.6.2'
|
||||||
|
echo 'foo "v0.6.20'
|
||||||
|
echo 'foo "v0.6.20'
|
||||||
|
echo 'foo "v0.6.21'
|
||||||
|
echo 'foo "v0.6.21'
|
||||||
|
echo 'foo "v0.6.3'
|
||||||
|
echo 'foo "v0.6.3'
|
||||||
|
echo 'foo "v0.6.4'
|
||||||
|
echo 'foo "v0.6.4'
|
||||||
|
echo 'foo "v0.6.5'
|
||||||
|
echo 'foo "v0.6.5'
|
||||||
|
echo 'foo "v0.6.6'
|
||||||
|
echo 'foo "v0.6.6'
|
||||||
|
echo 'foo "v0.6.7'
|
||||||
|
echo 'foo "v0.6.7'
|
||||||
|
echo 'foo "v0.6.8'
|
||||||
|
echo 'foo "v0.6.8'
|
||||||
|
echo 'foo "v0.6.9'
|
||||||
|
echo 'foo "v0.6.9'
|
||||||
|
echo 'foo "v0.7.0'
|
||||||
|
echo 'foo "v0.7.0'
|
||||||
|
echo 'foo "v0.7.1'
|
||||||
|
echo 'foo "v0.7.1'
|
||||||
|
echo 'foo "v0.7.10'
|
||||||
|
echo 'foo "v0.7.10'
|
||||||
|
echo 'foo "v0.7.11'
|
||||||
|
echo 'foo "v0.7.11'
|
||||||
|
echo 'foo "v0.7.12'
|
||||||
|
echo 'foo "v0.7.12'
|
||||||
|
echo 'foo "v0.7.2'
|
||||||
|
echo 'foo "v0.7.2'
|
||||||
|
echo 'foo "v0.7.3'
|
||||||
|
echo 'foo "v0.7.3'
|
||||||
|
echo 'foo "v0.7.4'
|
||||||
|
echo 'foo "v0.7.4'
|
||||||
|
echo 'foo "v0.7.5'
|
||||||
|
echo 'foo "v0.7.5'
|
||||||
|
echo 'foo "v0.7.6'
|
||||||
|
echo 'foo "v0.7.6'
|
||||||
|
echo 'foo "v0.7.7'
|
||||||
|
echo 'foo "v0.7.7'
|
||||||
|
echo 'foo "v0.7.8'
|
||||||
|
echo 'foo "v0.7.8'
|
||||||
|
echo 'foo "v0.7.9'
|
||||||
|
echo 'foo "v0.7.9'
|
||||||
|
echo 'foo "v0.8.0'
|
||||||
|
echo 'foo "v0.8.0'
|
||||||
|
echo 'foo "v0.8.1'
|
||||||
|
echo 'foo "v0.8.1'
|
||||||
|
echo 'foo "v0.8.10'
|
||||||
|
echo 'foo "v0.8.10'
|
||||||
|
echo 'foo "v0.8.11'
|
||||||
|
echo 'foo "v0.8.11'
|
||||||
|
echo 'foo "v0.8.12'
|
||||||
|
echo 'foo "v0.8.12'
|
||||||
|
echo 'foo "v0.8.13'
|
||||||
|
echo 'foo "v0.8.13'
|
||||||
|
echo 'foo "v0.8.14'
|
||||||
|
echo 'foo "v0.8.14'
|
||||||
|
echo 'foo "v0.8.15'
|
||||||
|
echo 'foo "v0.8.15'
|
||||||
|
echo 'foo "v0.8.16'
|
||||||
|
echo 'foo "v0.8.16'
|
||||||
|
echo 'foo "v0.8.17'
|
||||||
|
echo 'foo "v0.8.17'
|
||||||
|
echo 'foo "v0.8.18'
|
||||||
|
echo 'foo "v0.8.18'
|
||||||
|
echo 'foo "v0.8.19'
|
||||||
|
echo 'foo "v0.8.19'
|
||||||
|
echo 'foo "v0.8.2'
|
||||||
|
echo 'foo "v0.8.2'
|
||||||
|
echo 'foo "v0.8.20'
|
||||||
|
echo 'foo "v0.8.20'
|
||||||
|
echo 'foo "v0.8.21'
|
||||||
|
echo 'foo "v0.8.21'
|
||||||
|
echo 'foo "v0.8.22'
|
||||||
|
echo 'foo "v0.8.22'
|
||||||
|
echo 'foo "v0.8.23'
|
||||||
|
echo 'foo "v0.8.23'
|
||||||
|
echo 'foo "v0.8.24'
|
||||||
|
echo 'foo "v0.8.24'
|
||||||
|
echo 'foo "v0.8.25'
|
||||||
|
echo 'foo "v0.8.25'
|
||||||
|
echo 'foo "v0.8.26'
|
||||||
|
echo 'foo "v0.8.26'
|
||||||
|
echo 'foo "v0.8.27'
|
||||||
|
echo 'foo "v0.8.27'
|
||||||
|
echo 'foo "v0.8.28'
|
||||||
|
echo 'foo "v0.8.28'
|
||||||
|
echo 'foo "v0.8.3'
|
||||||
|
echo 'foo "v0.8.3'
|
||||||
|
echo 'foo "v0.8.4'
|
||||||
|
echo 'foo "v0.8.4'
|
||||||
|
echo 'foo "v0.8.5'
|
||||||
|
echo 'foo "v0.8.5'
|
||||||
|
echo 'foo "v0.8.6'
|
||||||
|
echo 'foo "v0.8.6'
|
||||||
|
echo 'foo "v0.8.7'
|
||||||
|
echo 'foo "v0.8.7'
|
||||||
|
echo 'foo "v0.8.8'
|
||||||
|
echo 'foo "v0.8.8'
|
||||||
|
echo 'foo "v0.8.9'
|
||||||
|
echo 'foo "v0.8.9'
|
||||||
|
echo 'foo "v0.9.0'
|
||||||
|
echo 'foo "v0.9.0'
|
||||||
|
echo 'foo "v0.9.1'
|
||||||
|
echo 'foo "v0.9.1'
|
||||||
|
echo 'foo "v0.9.10'
|
||||||
|
echo 'foo "v0.9.10'
|
||||||
|
echo 'foo "v0.9.11'
|
||||||
|
echo 'foo "v0.9.11'
|
||||||
|
echo 'foo "v0.9.12'
|
||||||
|
echo 'foo "v0.9.12'
|
||||||
|
echo 'foo "v0.9.2'
|
||||||
|
echo 'foo "v0.9.2'
|
||||||
|
echo 'foo "v0.9.3'
|
||||||
|
echo 'foo "v0.9.3'
|
||||||
|
echo 'foo "v0.9.4'
|
||||||
|
echo 'foo "v0.9.4'
|
||||||
|
echo 'foo "v0.9.5'
|
||||||
|
echo 'foo "v0.9.5'
|
||||||
|
echo 'foo "v0.9.6'
|
||||||
|
echo 'foo "v0.9.6'
|
||||||
|
echo 'foo "v0.9.7'
|
||||||
|
echo 'foo "v0.9.7'
|
||||||
|
echo 'foo "v0.9.8'
|
||||||
|
echo 'foo "v0.9.8'
|
||||||
|
echo 'foo "v0.9.9'
|
||||||
|
echo 'foo "v0.9.9'
|
||||||
|
echo 'foo "v0.1.100'
|
||||||
|
echo 'foo "v0.1.100'
|
||||||
|
echo 'foo "v0.1.101'
|
||||||
|
echo 'foo "v0.1.101'
|
||||||
|
echo 'foo "v0.1.102'
|
||||||
|
echo 'foo "v0.1.102'
|
||||||
|
echo 'foo "v0.1.103'
|
||||||
|
echo 'foo "v0.1.103'
|
||||||
|
echo 'foo "v0.1.104'
|
||||||
|
echo 'foo "v0.1.104'
|
||||||
|
echo 'foo "v0.1.14'
|
||||||
|
echo 'foo "v0.1.14'
|
||||||
|
echo 'foo "v0.1.15'
|
||||||
|
echo 'foo "v0.1.15'
|
||||||
|
echo 'foo "v0.1.16'
|
||||||
|
echo 'foo "v0.1.16'
|
||||||
|
echo 'foo "v0.1.17'
|
||||||
|
echo 'foo "v0.1.17'
|
||||||
|
echo 'foo "v0.1.18'
|
||||||
|
echo 'foo "v0.1.18'
|
||||||
|
echo 'foo "v0.1.19'
|
||||||
|
echo 'foo "v0.1.19'
|
||||||
|
echo 'foo "v0.1.20'
|
||||||
|
echo 'foo "v0.1.20'
|
||||||
|
echo 'foo "v0.1.21'
|
||||||
|
echo 'foo "v0.1.21'
|
||||||
|
echo 'foo "v0.1.22'
|
||||||
|
echo 'foo "v0.1.22'
|
||||||
|
echo 'foo "v0.1.23'
|
||||||
|
echo 'foo "v0.1.23'
|
||||||
|
echo 'foo "v0.1.24'
|
||||||
|
echo 'foo "v0.1.24'
|
||||||
|
echo 'foo "v0.1.25'
|
||||||
|
echo 'foo "v0.1.25'
|
||||||
|
echo 'foo "v0.1.26'
|
||||||
|
echo 'foo "v0.1.26'
|
||||||
|
echo 'foo "v0.1.27'
|
||||||
|
echo 'foo "v0.1.27'
|
||||||
|
echo 'foo "v0.1.28'
|
||||||
|
echo 'foo "v0.1.28'
|
||||||
|
echo 'foo "v0.1.29'
|
||||||
|
echo 'foo "v0.1.29'
|
||||||
|
echo 'foo "v0.1.30'
|
||||||
|
echo 'foo "v0.1.30'
|
||||||
|
echo 'foo "v0.1.31'
|
||||||
|
echo 'foo "v0.1.31'
|
||||||
|
echo 'foo "v0.1.32'
|
||||||
|
echo 'foo "v0.1.32'
|
||||||
|
echo 'foo "v0.1.33'
|
||||||
|
echo 'foo "v0.1.33'
|
||||||
|
echo 'foo "v0.1.90'
|
||||||
|
echo 'foo "v0.1.90'
|
||||||
|
echo 'foo "v0.1.91'
|
||||||
|
echo 'foo "v0.1.91'
|
||||||
|
echo 'foo "v0.1.92'
|
||||||
|
echo 'foo "v0.1.92'
|
||||||
|
echo 'foo "v0.1.93'
|
||||||
|
echo 'foo "v0.1.93'
|
||||||
|
echo 'foo "v0.1.94'
|
||||||
|
echo 'foo "v0.1.94'
|
||||||
|
echo 'foo "v0.1.95'
|
||||||
|
echo 'foo "v0.1.95'
|
||||||
|
echo 'foo "v0.1.96'
|
||||||
|
echo 'foo "v0.1.96'
|
||||||
|
echo 'foo "v0.1.97'
|
||||||
|
echo 'foo "v0.1.97'
|
||||||
|
echo 'foo "v0.1.98'
|
||||||
|
echo 'foo "v0.1.98'
|
||||||
|
echo 'foo "v0.1.99'
|
||||||
|
echo 'foo "v0.1.99'
|
||||||
|
echo 'foo "v0.10.14'
|
||||||
|
echo 'foo "v0.10.14'
|
||||||
|
echo 'foo "v0.2.0'
|
||||||
|
echo 'foo "v0.2.0'
|
||||||
|
echo 'foo "v0.2.1'
|
||||||
|
echo 'foo "v0.2.1'
|
||||||
|
echo 'foo "v0.2.2'
|
||||||
|
echo 'foo "v0.2.2'
|
||||||
|
echo 'foo "v0.2.3'
|
||||||
|
echo 'foo "v0.2.3'
|
||||||
|
echo 'foo "v0.2.4'
|
||||||
|
echo 'foo "v0.2.4'
|
||||||
|
echo 'foo "v0.2.5'
|
||||||
|
echo 'foo "v0.2.5'
|
||||||
|
echo 'foo "v0.2.6'
|
||||||
|
echo 'foo "v0.2.6'
|
||||||
|
echo 'foo "v0.3.0'
|
||||||
|
echo 'foo "v0.3.0'
|
||||||
|
echo 'foo "v0.3.1'
|
||||||
|
echo 'foo "v0.3.1'
|
||||||
|
echo 'foo "v0.3.2'
|
||||||
|
echo 'foo "v0.3.2'
|
||||||
|
echo 'foo "v0.3.3'
|
||||||
|
echo 'foo "v0.3.3'
|
||||||
|
echo 'foo "v0.3.4'
|
||||||
|
echo 'foo "v0.3.4'
|
||||||
|
echo 'foo "v0.3.5'
|
||||||
|
echo 'foo "v0.3.5'
|
||||||
|
echo 'foo "v0.3.6'
|
||||||
|
echo 'foo "v0.3.6'
|
||||||
|
echo 'foo "v0.3.7'
|
||||||
|
echo 'foo "v0.3.7'
|
||||||
|
echo 'foo "v0.3.8'
|
||||||
|
echo 'foo "v0.3.8'
|
||||||
|
echo 'foo "v0.4.0'
|
||||||
|
echo 'foo "v0.4.0'
|
||||||
|
echo 'foo "v0.4.1'
|
||||||
|
echo 'foo "v0.4.1'
|
||||||
|
echo 'foo "v0.4.10'
|
||||||
|
echo 'foo "v0.4.10'
|
||||||
|
echo 'foo "v0.4.11'
|
||||||
|
echo 'foo "v0.4.11'
|
||||||
|
echo 'foo "v0.4.12'
|
||||||
|
echo 'foo "v0.4.12'
|
||||||
|
echo 'foo "v0.4.2'
|
||||||
|
echo 'foo "v0.4.2'
|
||||||
|
echo 'foo "v0.4.3'
|
||||||
|
echo 'foo "v0.4.3'
|
||||||
|
echo 'foo "v0.4.4'
|
||||||
|
echo 'foo "v0.4.4'
|
||||||
|
echo 'foo "v0.4.5'
|
||||||
|
echo 'foo "v0.4.5'
|
||||||
|
echo 'foo "v0.4.6'
|
||||||
|
echo 'foo "v0.4.6'
|
||||||
|
echo 'foo "v0.4.7'
|
||||||
|
echo 'foo "v0.4.7'
|
||||||
|
echo 'foo "v0.4.8'
|
||||||
|
echo 'foo "v0.4.8'
|
||||||
|
echo 'foo "v0.4.9'
|
||||||
|
echo 'foo "v0.4.9'
|
||||||
|
echo 'foo "v0.5.0'
|
||||||
|
echo 'foo "v0.5.0'
|
||||||
|
echo 'foo "v0.6.1'
|
||||||
|
echo 'foo "v0.6.1'
|
||||||
|
echo 'foo "v0.6.10'
|
||||||
|
echo 'foo "v0.6.10'
|
||||||
|
echo 'foo "v0.6.11'
|
||||||
|
echo 'foo "v0.6.11'
|
||||||
|
echo 'foo "v0.6.12'
|
||||||
|
echo 'foo "v0.6.12'
|
||||||
|
echo 'foo "v0.6.13'
|
||||||
|
echo 'foo "v0.6.13'
|
||||||
|
echo 'foo "v0.6.2'
|
||||||
|
echo 'foo "v0.6.2'
|
||||||
|
echo 'foo "v0.6.3'
|
||||||
|
echo 'foo "v0.6.3'
|
||||||
|
echo 'foo "v0.6.4'
|
||||||
|
echo 'foo "v0.6.4'
|
||||||
|
echo 'foo "v0.6.5'
|
||||||
|
echo 'foo "v0.6.5'
|
||||||
|
echo 'foo "v0.6.6'
|
||||||
|
echo 'foo "v0.6.6'
|
||||||
|
echo 'foo "v0.6.7'
|
||||||
|
echo 'foo "v0.6.7'
|
||||||
|
echo 'foo "v0.6.8'
|
||||||
|
echo 'foo "v0.6.8'
|
||||||
|
echo 'foo "v0.6.9'
|
||||||
|
echo 'foo "v0.6.9'
|
||||||
|
}
|
||||||
|
|
||||||
|
OUTPUT="$(nvm_ls_remote foo)"
|
||||||
|
EXIT_CODE="$(nvm_ls_remote foo >/dev/null 2>&1 ; echo $?)"
|
||||||
|
[ "_$OUTPUT" = "_N/A" ] || die "nonexistent version did not report N/A"
|
||||||
|
[ "_$EXIT_CODE" = "_3" ] || die "nonexistent version did not exit with code 3, got $EXIT_CODE"
|
||||||
|
|
||||||
|
OUTPUT="$(nvm_ls_remote)"
|
||||||
|
EXPECTED_OUTPUT="$(nvm_download | \egrep -o 'v[0-9]+\.[0-9]+\.[0-9]+' | sort -t. -u -k 1.2,1n -k 2,2n -k 3,3n)"
|
||||||
|
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "bare nvm_ls_remote did not output expected sorted versions; got $(echo "$OUTPUT") expected $(echo "$EXPECTED_OUTPUT")"
|
||||||
|
|
||||||
|
OUTPUT="$(nvm_ls_remote 0.3)"
|
||||||
|
EXPECTED_OUTPUT="v0.3.0
|
||||||
|
v0.3.1
|
||||||
|
v0.3.2
|
||||||
|
v0.3.3
|
||||||
|
v0.3.4
|
||||||
|
v0.3.5
|
||||||
|
v0.3.6
|
||||||
|
v0.3.7
|
||||||
|
v0.3.8"
|
||||||
|
|
||||||
|
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm_ls_remote 0.3 did not output 0.3.x versions; got $OUTPUT"
|
||||||
|
|
||||||
|
cleanup
|
||||||
|
|
||||||
21
test/fast/Unit tests/nvm_num_version_groups
Executable file
21
test/fast/Unit tests/nvm_num_version_groups
Executable file
@@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
[ "~$(nvm_num_version_groups)" = "~0" ] || die "no args should give 0"
|
||||||
|
[ "~$(nvm_num_version_groups a)" = "~1" ] || die "one letter should give 1"
|
||||||
|
|
||||||
|
[ "~$(nvm_num_version_groups 1)" = "~1" ] || die "1 should give 1"
|
||||||
|
[ "~$(nvm_num_version_groups v1)" = "~1" ] || die "v1 should give 1"
|
||||||
|
[ "~$(nvm_num_version_groups v1.)" = "~1" ] || die "v1. should give 1"
|
||||||
|
|
||||||
|
[ "~$(nvm_num_version_groups 1.2)" = "~2" ] || die "1.2 should give 2"
|
||||||
|
[ "~$(nvm_num_version_groups v1.2)" = "~2" ] || die "v1.2 should give 2"
|
||||||
|
[ "~$(nvm_num_version_groups v1.2.)" = "~2" ] || die "v1.2. should give 2"
|
||||||
|
|
||||||
|
[ "~$(nvm_num_version_groups 1.2.3)" = "~3" ] || die "1.2.3 should give 3"
|
||||||
|
[ "~$(nvm_num_version_groups v1.2.3)" = "~3" ] || die "v1.2.3 should give 3"
|
||||||
|
[ "~$(nvm_num_version_groups v1.2.3.)" = "~3" ] || die "v1.2.3. should give 3"
|
||||||
|
|
||||||
18
test/fast/Unit tests/nvm_prepend_path
Executable file
18
test/fast/Unit tests/nvm_prepend_path
Executable file
@@ -0,0 +1,18 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
TEST_PATH=/usr/bin:/usr/local/bin
|
||||||
|
|
||||||
|
NEW_PATH=`nvm_prepend_path "$TEST_PATH" "$NVM_DIR/v0.2.5/bin"`
|
||||||
|
|
||||||
|
[ "$NEW_PATH" = "$NVM_DIR/v0.2.5/bin:/usr/bin:/usr/local/bin" ] || die "Not correctly prepended: $NEW_PATH "
|
||||||
|
|
||||||
|
|
||||||
|
EMPTY_PATH=
|
||||||
|
|
||||||
|
NEW_PATH=`nvm_prepend_path "$EMPTY_PATH" "$NVM_DIR/v0.2.5/bin"`
|
||||||
|
|
||||||
|
[ "$NEW_PATH" = "$NVM_DIR/v0.2.5/bin" ] || die "Not correctly prepended: $NEW_PATH "
|
||||||
35
test/fast/Unit tests/nvm_remote_version
Executable file
35
test/fast/Unit tests/nvm_remote_version
Executable file
@@ -0,0 +1,35 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; cleanup ; exit 1; }
|
||||||
|
|
||||||
|
cleanup() {
|
||||||
|
unset -f nvm_ls_remote
|
||||||
|
}
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
nvm_ls_remote() {
|
||||||
|
echo "N/A"
|
||||||
|
}
|
||||||
|
|
||||||
|
OUTPUT="$(nvm_remote_version foo)"
|
||||||
|
EXIT_CODE="$(nvm_remote_version foo >/dev/null 2>&1 ; echo $?)"
|
||||||
|
|
||||||
|
[ "_$OUTPUT" = "_N/A" ] || die "nonexistent version did not report N/A"
|
||||||
|
[ "_$EXIT_CODE" = "_3" ] || die "nonexistent version did not exit with code 3, got $EXIT_CODE"
|
||||||
|
|
||||||
|
nvm_ls_remote() {
|
||||||
|
echo "test output"
|
||||||
|
echo "more test output"
|
||||||
|
echo "pattern received: _$1_"
|
||||||
|
}
|
||||||
|
|
||||||
|
OUTPUT="$(nvm_remote_version foo)"
|
||||||
|
EXIT_CODE="$(nvm_remote_version foo >/dev/null 2>&1 ; echo $?)"
|
||||||
|
|
||||||
|
[ "_$OUTPUT" = "_pattern received: _foo_" ] \
|
||||||
|
|| die "nvm_remote_version foo did not return last line only of nvm_ls_remote foo; got $OUTPUT"
|
||||||
|
[ "_$EXIT_CODE" = "_0" ] || die "nvm_remote_version foo did not exit with 0, got $EXIT_CODE"
|
||||||
|
|
||||||
|
cleanup
|
||||||
|
|
||||||
11
test/fast/Unit tests/nvm_strip_path
Executable file
11
test/fast/Unit tests/nvm_strip_path
Executable file
@@ -0,0 +1,11 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
TEST_PATH=$NVM_DIR/v0.10.5/bin:/usr/bin:$NVM_DIR/v0.11.5/bin:$NVM_DIR/v0.9.5/bin:/usr/local/bin:$NVM_DIR/v0.2.5/bin
|
||||||
|
|
||||||
|
STRIPPED_PATH=`nvm_strip_path "$TEST_PATH" "/bin"`
|
||||||
|
|
||||||
|
[ "$STRIPPED_PATH" = "/usr/bin:/usr/local/bin" ] || die "Not correctly stripped: $STRIPPED_PATH "
|
||||||
32
test/fast/Unit tests/nvm_tree_contains_path
Executable file
32
test/fast/Unit tests/nvm_tree_contains_path
Executable file
@@ -0,0 +1,32 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
cleanup () {
|
||||||
|
rm tmp/node
|
||||||
|
rmdir tmp
|
||||||
|
rm tmp2/node
|
||||||
|
rmdir tmp2
|
||||||
|
}
|
||||||
|
die () { echo $@ ; cleanup; exit 1; }
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
mkdir -p tmp
|
||||||
|
touch tmp/node
|
||||||
|
mkdir -p tmp2
|
||||||
|
touch tmp2/node
|
||||||
|
|
||||||
|
[ "$(nvm_tree_contains_path 2>&1)" = "both the tree and the node path are required" ] || die 'incorrect error message with no args'
|
||||||
|
[ "$(nvm_tree_contains_path > /dev/null 2>&1 ; echo $?)" = "2" ] || die 'incorrect error code with no args'
|
||||||
|
[ "$(nvm_tree_contains_path tmp 2>&1)" = "both the tree and the node path are required" ] || die 'incorrect error message with one arg'
|
||||||
|
[ "$(nvm_tree_contains_path > /dev/null 2>&1 ; echo $?)" = "2" ] || die 'incorrect error code with one arg'
|
||||||
|
|
||||||
|
nvm_tree_contains_path tmp tmp/node || die '"tmp" should contain "tmp/node"'
|
||||||
|
|
||||||
|
nvm_tree_contains_path tmp tmp2/node && die '"tmp" should not contain "tmp2/node"'
|
||||||
|
|
||||||
|
nvm_tree_contains_path tmp2 tmp2/node || die '"tmp2" should contain "tmp2/node"'
|
||||||
|
|
||||||
|
nvm_tree_contains_path tmp2 tmp/node && die '"tmp2" should not contain "tmp/node"'
|
||||||
|
|
||||||
|
cleanup
|
||||||
|
|
||||||
11
test/fast/Unit tests/nvm_version_dir
Executable file
11
test/fast/Unit tests/nvm_version_dir
Executable file
@@ -0,0 +1,11 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
[ "$(nvm_version_dir)" = "$NVM_DIR/versions" ] || die '"nvm_version_dir" did not return new dir path'
|
||||||
|
[ "$(nvm_version_dir new)" = "$(nvm_version_dir)" ] || die '"nvm_version_dir new" did not return new dir path'
|
||||||
|
[ "$(nvm_version_dir old)" = "$NVM_DIR" ] || die '"nvm_version_dir old" did not return old dir path'
|
||||||
|
[ "$(nvm_version_dir foo 2>&1)" = "unknown version dir" ] || die '"nvm_version_dir foo" did not error out'
|
||||||
|
|
||||||
16
test/fast/Unit tests/nvm_version_greater
Executable file
16
test/fast/Unit tests/nvm_version_greater
Executable file
@@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
nvm_version_greater 0.10.0 0.2.12 || die '"nvm_version_greater 0.10.0 0.2.12" did not return true'
|
||||||
|
|
||||||
|
if nvm_version_greater 0.10.0 0.20.12; then
|
||||||
|
die '"nvm_version_greater 0.10.0 0.20.12" returned true'
|
||||||
|
fi
|
||||||
|
|
||||||
|
if nvm_version_greater 0.10.0 0.10.0; then
|
||||||
|
die '"nvm_version_greater" returned false for the same two versions'
|
||||||
|
fi
|
||||||
|
|
||||||
11
test/fast/Unit tests/nvm_version_path
Executable file
11
test/fast/Unit tests/nvm_version_path
Executable file
@@ -0,0 +1,11 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
[ "$(nvm_version_path foo)" = "$NVM_DIR/foo" ] || die '"nvm_version_path foo" did not return correct location'
|
||||||
|
[ "$(nvm_version_path 2>&1)" = "version is required" ] || die '"nvm_version_path" did not error out'
|
||||||
|
[ "$(nvm_version_path v0.11.0)" = "$NVM_DIR/v0.11.0" ] || die 'old version has the wrong path'
|
||||||
|
[ "$(nvm_version_path v0.12.0)" = "$NVM_DIR/versions/v0.12.0" ] || die 'new version has the wrong path'
|
||||||
|
|
||||||
12
test/fast/setup
Executable file
12
test/fast/setup
Executable file
@@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
(
|
||||||
|
cd ../..
|
||||||
|
|
||||||
|
# Back up
|
||||||
|
|
||||||
|
type setopt >/dev/null 2>&1 && setopt NULL_GLOB
|
||||||
|
type shopt >/dev/null 2>&1 && shopt -s nullglob
|
||||||
|
rm -Rf v* src alias
|
||||||
|
mkdir src alias
|
||||||
|
)
|
||||||
16
test/fast/setup_dir
Executable file
16
test/fast/setup_dir
Executable file
@@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
(
|
||||||
|
cd ../..
|
||||||
|
|
||||||
|
# Back up
|
||||||
|
|
||||||
|
mkdir -p bak
|
||||||
|
for SRC in v* src alias; do
|
||||||
|
[ -e "$SRC" ] && mv "$SRC" bak
|
||||||
|
done
|
||||||
|
if [ -d versions ]; then
|
||||||
|
mv versions bak
|
||||||
|
fi
|
||||||
|
true
|
||||||
|
)
|
||||||
10
test/fast/teardown
Executable file
10
test/fast/teardown
Executable file
@@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Remove temporary files
|
||||||
|
(
|
||||||
|
cd ../..
|
||||||
|
|
||||||
|
type setopt >/dev/null 2>&1 && setopt NULL_GLOB
|
||||||
|
type shopt >/dev/null 2>&1 && shopt -s nullglob
|
||||||
|
rm -fR v* src alias
|
||||||
|
)
|
||||||
13
test/fast/teardown_dir
Executable file
13
test/fast/teardown_dir
Executable file
@@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
(
|
||||||
|
cd ../..
|
||||||
|
|
||||||
|
# Restore
|
||||||
|
if [ -d bak ]
|
||||||
|
then
|
||||||
|
mv bak/* . > /dev/null 2>&1 || sleep 0s
|
||||||
|
rmdir bak
|
||||||
|
fi
|
||||||
|
mkdir -p src alias
|
||||||
|
)
|
||||||
24
test/installation/install already installed uses it
Executable file
24
test/installation/install already installed uses it
Executable file
@@ -0,0 +1,24 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../nvm.sh
|
||||||
|
|
||||||
|
[ "$(nvm install invalid.invalid 2>&1)" = "Version 'invalid.invalid' not found - try \`nvm ls-remote\` to browse available versions." ] || die "nvm installing an invalid version did not print a nice error message"
|
||||||
|
|
||||||
|
# Remove the stuff we're clobbering.
|
||||||
|
[ -e ../../v0.9.7 ] && rm -R ../../v0.9.7
|
||||||
|
[ -e ../../v0.9.12 ] && rm -R ../../v0.9.12
|
||||||
|
|
||||||
|
# Install from binary
|
||||||
|
nvm install 0.9.7
|
||||||
|
nvm install 0.9.12
|
||||||
|
|
||||||
|
nvm use 0.9.7
|
||||||
|
|
||||||
|
node --version | grep v0.9.7 || die "precondition failed: node doesn't start at 0.9.7"
|
||||||
|
|
||||||
|
nvm install 0.9.12
|
||||||
|
|
||||||
|
node --version | grep v0.9.12 || die "nvm install on already installed version doesn't use it"
|
||||||
|
|
||||||
17
test/installation/install from binary
Executable file
17
test/installation/install from binary
Executable file
@@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
. ../../nvm.sh
|
||||||
|
|
||||||
|
NVM_TEST_VERSION=v0.10.7
|
||||||
|
|
||||||
|
# Remove the stuff we're clobbering.
|
||||||
|
[ -e ../../$NVM_TEST_VERSION ] && rm -R ../../$NVM_TEST_VERSION
|
||||||
|
|
||||||
|
# Install from binary
|
||||||
|
nvm install $NVM_TEST_VERSION
|
||||||
|
|
||||||
|
# Check
|
||||||
|
[ -d ../../$NVM_TEST_VERSION ]
|
||||||
|
nvm run $NVM_TEST_VERSION --version | grep $NVM_TEST_VERSION
|
||||||
|
|
||||||
17
test/installation/install from source
Executable file
17
test/installation/install from source
Executable file
@@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
. ../../nvm.sh
|
||||||
|
|
||||||
|
NVM_TEST_VERSION=v0.10.7
|
||||||
|
|
||||||
|
# Remove the stuff we're clobbering.
|
||||||
|
[ -e ../../$NVM_TEST_VERSION ] && rm -R ../../$NVM_TEST_VERSION
|
||||||
|
|
||||||
|
# Install from source
|
||||||
|
nvm install -s $NVM_TEST_VERSION
|
||||||
|
|
||||||
|
# Check
|
||||||
|
[ -d ../../$NVM_TEST_VERSION ]
|
||||||
|
nvm run $NVM_TEST_VERSION --version | grep $NVM_TEST_VERSION
|
||||||
|
|
||||||
24
test/installation/install two versions and use the latest one
Executable file
24
test/installation/install two versions and use the latest one
Executable file
@@ -0,0 +1,24 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
. ../../nvm.sh
|
||||||
|
|
||||||
|
# Remove the stuff we're clobbering.
|
||||||
|
[ -e ../../v0.9.7 ] && rm -R ../../v0.9.7
|
||||||
|
[ -e ../../v0.9.12 ] && rm -R ../../v0.9.12
|
||||||
|
|
||||||
|
# Install from binary
|
||||||
|
nvm install 0.9.7
|
||||||
|
nvm i 0.9.12
|
||||||
|
|
||||||
|
# Check
|
||||||
|
[ -d ../../v0.9.7 ]
|
||||||
|
[ -d ../../v0.9.12 ]
|
||||||
|
|
||||||
|
# Use the first one
|
||||||
|
nvm use 0.9.7
|
||||||
|
|
||||||
|
# Use the latest one
|
||||||
|
nvm use 0.9
|
||||||
|
node --version | grep v0.9.12
|
||||||
|
|
||||||
20
test/installation/install version specified in .nvmrc from binary
Executable file
20
test/installation/install version specified in .nvmrc from binary
Executable file
@@ -0,0 +1,20 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
. ../../nvm.sh
|
||||||
|
|
||||||
|
NVM_TEST_VERSION=v0.10.7
|
||||||
|
|
||||||
|
# Remove the stuff we're clobbering.
|
||||||
|
[ -e ../../$NVM_TEST_VERSION ] && rm -R ../../$NVM_TEST_VERSION
|
||||||
|
|
||||||
|
# Install from binary
|
||||||
|
echo "$NVM_TEST_VERSION" > .nvmrc
|
||||||
|
|
||||||
|
nvm install
|
||||||
|
|
||||||
|
# Check
|
||||||
|
[ -d ../../$NVM_TEST_VERSION ]
|
||||||
|
nvm run $NVM_TEST_VERSION --version | grep $NVM_TEST_VERSION
|
||||||
|
|
||||||
|
|
||||||
20
test/installation/install version specified in .nvmrc from source
Executable file
20
test/installation/install version specified in .nvmrc from source
Executable file
@@ -0,0 +1,20 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
. ../../nvm.sh
|
||||||
|
|
||||||
|
NVM_TEST_VERSION=v0.10.7
|
||||||
|
|
||||||
|
# Remove the stuff we're clobbering.
|
||||||
|
[ -e ../../$NVM_TEST_VERSION ] && rm -R ../../$NVM_TEST_VERSION
|
||||||
|
|
||||||
|
# Install from binary
|
||||||
|
echo "$NVM_TEST_VERSION" > .nvmrc
|
||||||
|
|
||||||
|
nvm install -s
|
||||||
|
|
||||||
|
# Check
|
||||||
|
[ -d ../../$NVM_TEST_VERSION ]
|
||||||
|
nvm run $NVM_TEST_VERSION --version | grep $NVM_TEST_VERSION
|
||||||
|
|
||||||
|
|
||||||
34
test/installation/install while copying packages
Executable file
34
test/installation/install while copying packages
Executable file
@@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../nvm.sh
|
||||||
|
|
||||||
|
# Remove the stuff we're clobbering.
|
||||||
|
[ -e ../../v0.9.7 ] && rm -R ../../v0.9.7
|
||||||
|
[ -e ../../v0.9.12 ] && rm -R ../../v0.9.12
|
||||||
|
|
||||||
|
# Install from binary
|
||||||
|
nvm install 0.9.7
|
||||||
|
|
||||||
|
# Check
|
||||||
|
[ -d ../../v0.9.7 ] || die "nvm install 0.9.7 didn't install"
|
||||||
|
|
||||||
|
nvm use 0.9.7
|
||||||
|
|
||||||
|
node --version | grep v0.9.7 > /dev/null || die "nvm use 0.9.7 failed"
|
||||||
|
|
||||||
|
npm install -g is-nan@1.0.1 || die "npm install -g is-nan failed"
|
||||||
|
npm list --global | grep is-nan > /dev/null || die "is-nan isn't installed"
|
||||||
|
|
||||||
|
nvm ls 0.9 | grep v0.9.7 > /dev/null || die "nvm ls 0.9 didn't show v0.9.7"
|
||||||
|
|
||||||
|
nvm install 0.9.12 --copy-packages-from=0.9 || die "nvm install 0.9.12 --copy-packages-from=0.9 failed"
|
||||||
|
|
||||||
|
[ -d ../../v0.9.12 ] || die "nvm install 0.9.12 didn't install"
|
||||||
|
|
||||||
|
nvm use 0.9
|
||||||
|
node --version | grep v0.9.12 > /dev/null || die "nvm ls 0.9 didn't use v0.9.12"
|
||||||
|
|
||||||
|
npm list --global | grep is-nan > /dev/null || die "is-nan isn't installed"
|
||||||
|
|
||||||
6
test/installation/setup_dir
Executable file
6
test/installation/setup_dir
Executable file
@@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if [ -f ".nvmrc" ]; then
|
||||||
|
mv .nvmrc .nvmrc.bak
|
||||||
|
fi
|
||||||
|
|
||||||
13
test/installation/teardown_dir
Executable file
13
test/installation/teardown_dir
Executable file
@@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ../../nvm.sh
|
||||||
|
nvm uninstall v0.10.7
|
||||||
|
|
||||||
|
if [ -f ".nvmrc" ]; then
|
||||||
|
rm .nvmrc
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f ".nvmrc.bak" ]; then
|
||||||
|
mv .nvmrc.bak .nvmrc
|
||||||
|
fi
|
||||||
|
|
||||||
14
test/slow/Running "nvm current" should display current nvm environment.
Executable file
14
test/slow/Running "nvm current" should display current nvm environment.
Executable file
@@ -0,0 +1,14 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../nvm.sh
|
||||||
|
|
||||||
|
nvm install 0.10
|
||||||
|
|
||||||
|
[ "$(nvm current)" = "$(node -v)" ] || die "Failed to find current version: got \"$(nvm current)\", expected \"$(node -v)\""
|
||||||
|
|
||||||
|
nvm install 0.6.21
|
||||||
|
[ "$(node -v)" = "v0.6.21-pre" ] || die "v0.6.21-pre not installed with v0.6.21"
|
||||||
|
[ "$(nvm current)" = "v0.6.21" ] || die "v0.6.21-pre not reported as v0.6.21"
|
||||||
|
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
nvm use 0.10.28 > /dev/null
|
||||||
|
|
||||||
|
EXPECTED_MSG="Can not copy packages from the current version of node."
|
||||||
|
ACTUAL_MSG="$(nvm copy-packages 0.10.28 2>&1 > /dev/null)"
|
||||||
|
[ "~$ACTUAL_MSG" = "~$EXPECTED_MSG" ] || die "'nvm use 0.10.28 && nvm copy-packages 0.10.28' did not fail with the right message: '$ACTUAL_MESSAGE'"
|
||||||
|
|
||||||
|
EXPECTED_ERROR_CODE="2"
|
||||||
|
ACTUAL_ERROR_CODE="$(nvm copy-packages 0.10.28 > /dev/null 2>&1 ; echo $?)"
|
||||||
|
[ "~$ACTUAL_ERROR_CODE" = "~$EXPECTED_ERROR_CODE" ] || die "'nvm use 0.10.28 && nvm copy-packages 0.10.28' did not fail with the right error code: expected '$EXPECTED_ERROR_CODE', got '$ACTUAL_ERROR_CODE'"
|
||||||
|
|
||||||
10
test/slow/nvm copy-packages/setup_dir
Executable file
10
test/slow/nvm copy-packages/setup_dir
Executable file
@@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
nvm install 0.10.28
|
||||||
|
nvm install 0.10.29
|
||||||
|
|
||||||
|
if [ -f ".nvmrc" ]; then
|
||||||
|
mv .nvmrc .nvmrc.bak
|
||||||
|
fi
|
||||||
|
|
||||||
21
test/slow/nvm copy-packages/should work as expected
Executable file
21
test/slow/nvm copy-packages/should work as expected
Executable file
@@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo "$@" ; exit 1; }
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
nvm use 0.10.28
|
||||||
|
|
||||||
|
EXPECTED_PACKAGES="autoprefixer bower david eslint grunt-cli grunth-cli http-server jshint marked node-gyp recursive-blame uglify-js yo"
|
||||||
|
|
||||||
|
echo "$EXPECTED_PACKAGES" | xargs npm install -g --quiet
|
||||||
|
|
||||||
|
nvm use 0.10.29
|
||||||
|
ORIGINAL_PACKAGES=$(npm list -g --depth=0 | tail -n +2 | \grep -o -e ' [^@]*' | cut -c 2- | \grep -v npm | sort | uniq | xargs)
|
||||||
|
|
||||||
|
nvm copy-packages 0.10.28
|
||||||
|
FINAL_PACKAGES=$(npm list -g --depth=0 | tail -n +2 | \grep -o -e ' [^@]*' | cut -c 2- | \grep -v npm | sort | uniq | xargs)
|
||||||
|
|
||||||
|
[ "$FINAL_PACKAGES" = "$EXPECTED_PACKAGES" ] || die "final packages ($FINAL_PACKAGES) did not match expected packages ($EXPECTED_PACKAGES)"
|
||||||
|
[ "$ORIGINAL_PACKAGES" != "$FINAL_PACKAGES" ] || die "original packages matched final packages ($ORIGINAL_PACKAGES)"
|
||||||
|
|
||||||
12
test/slow/nvm copy-packages/teardown_dir
Executable file
12
test/slow/nvm copy-packages/teardown_dir
Executable file
@@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
nvm uninstall v0.10.28
|
||||||
|
nvm uninstall v0.10.29
|
||||||
|
|
||||||
|
rm -f .nvmrc
|
||||||
|
|
||||||
|
if [ -f ".nvmrc.bak" ]; then
|
||||||
|
mv .nvmrc.bak .nvmrc
|
||||||
|
fi
|
||||||
|
|
||||||
13
test/slow/nvm exec/Running "nvm exec 0.x" should work
Executable file
13
test/slow/nvm exec/Running "nvm exec 0.x" should work
Executable file
@@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
nvm use 0.10
|
||||||
|
NPM_VERSION_TEN="$(npm --version)"
|
||||||
|
|
||||||
|
nvm use 0.11.7 && [ "$(node --version)" = "v0.11.7" ] || die "\`nvm use\` failed!"
|
||||||
|
|
||||||
|
[ "$(nvm exec 0.10 npm --version | tail -1)" = "$NPM_VERSION_TEN" ] || die "`nvm exec` failed to run with the correct version"
|
||||||
|
|
||||||
17
test/slow/nvm exec/Running "nvm exec" should pick up .nvmrc version
Executable file
17
test/slow/nvm exec/Running "nvm exec" should pick up .nvmrc version
Executable file
@@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
nvm use 0.10.7
|
||||||
|
NPM_VERSION_TEN="$(npm --version)"
|
||||||
|
|
||||||
|
nvm use 0.11.7 && [ "$(node --version)" = "v0.11.7" ] || die "\`nvm use\` failed!"
|
||||||
|
|
||||||
|
echo "0.10.7" > .nvmrc
|
||||||
|
|
||||||
|
[ "$(nvm exec npm --version | tail -1)" = "$NPM_VERSION_TEN" ] || die "\`nvm exec\` failed to run with the .nvmrc version"
|
||||||
|
|
||||||
|
[ "$(nvm exec npm --version | head -1)" = "Found '$PWD/.nvmrc' with version <0.10.7>" ] || die "\`nvm exec\` failed to print out the \"found in .nvmrc\" message"
|
||||||
|
|
||||||
10
test/slow/nvm exec/setup_dir
Executable file
10
test/slow/nvm exec/setup_dir
Executable file
@@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
nvm install 0.10.7
|
||||||
|
nvm install 0.11.7
|
||||||
|
|
||||||
|
if [ -f ".nvmrc" ]; then
|
||||||
|
mv .nvmrc .nvmrc.bak
|
||||||
|
fi
|
||||||
|
|
||||||
12
test/slow/nvm exec/teardown_dir
Executable file
12
test/slow/nvm exec/teardown_dir
Executable file
@@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
nvm uninstall v0.10.7
|
||||||
|
nvm uninstall v0.11.7
|
||||||
|
|
||||||
|
rm .nvmrc
|
||||||
|
|
||||||
|
if [ -f ".nvmrc.bak" ]; then
|
||||||
|
mv .nvmrc.bak .nvmrc
|
||||||
|
fi
|
||||||
|
|
||||||
9
test/slow/nvm run/Running "nvm run 0.x" should work
Executable file
9
test/slow/nvm run/Running "nvm run 0.x" should work
Executable file
@@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
[ "$(nvm run 0.10.7 --version | tail -1)" = "v0.10.7" ] || die "`nvm run` failed to run with the correct version"
|
||||||
|
|
||||||
13
test/slow/nvm run/Running "nvm run" should pick up .nvmrc version
Executable file
13
test/slow/nvm run/Running "nvm run" should pick up .nvmrc version
Executable file
@@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
echo "0.10.7" > .nvmrc
|
||||||
|
|
||||||
|
[ "$(nvm run --version | tail -1)" = "v0.10.7" ] || die "\`nvm run\` failed to run with the .nvmrc version"
|
||||||
|
|
||||||
|
[ "$(nvm run --version | head -1)" = "Found '$PWD/.nvmrc' with version <0.10.7>" ] || die "\`nvm run\` failed to print out the \"found in .nvmrc\" message"
|
||||||
|
|
||||||
9
test/slow/nvm run/setup_dir
Executable file
9
test/slow/nvm run/setup_dir
Executable file
@@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
nvm install 0.10.7
|
||||||
|
|
||||||
|
if [ -f ".nvmrc" ]; then
|
||||||
|
mv .nvmrc .nvmrc.bak
|
||||||
|
fi
|
||||||
|
|
||||||
11
test/slow/nvm run/teardown_dir
Executable file
11
test/slow/nvm run/teardown_dir
Executable file
@@ -0,0 +1,11 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
nvm uninstall v0.10.7
|
||||||
|
|
||||||
|
rm .nvmrc
|
||||||
|
|
||||||
|
if [ -f ".nvmrc.bak" ]; then
|
||||||
|
mv .nvmrc.bak .nvmrc
|
||||||
|
fi
|
||||||
|
|
||||||
Reference in New Issue
Block a user