4
4
// any supplied version is valid and passes all tests.
5
5
6
6
var argv = process . argv . slice ( 2 )
7
- , versions = [ ]
8
- , range = [ ]
9
- , gt = [ ]
10
- , lt = [ ]
11
- , eq = [ ]
12
- , inc = null
13
- , version = require ( "../package.json" ) . version
14
- , loose = false
15
- , includePrerelease = false
16
- , coerce = false
17
- , identifier = undefined
18
- , semver = require ( "../semver" )
19
- , reverse = false
20
- , options = { }
7
+
8
+ var versions = [ ]
9
+
10
+ var range = [ ]
11
+
12
+ var inc = null
13
+
14
+ var version = require ( '../package.json' ) . version
15
+
16
+ var loose = false
17
+
18
+ var includePrerelease = false
19
+
20
+ var coerce = false
21
+
22
+ var identifier
23
+
24
+ var semver = require ( '../semver' )
25
+
26
+ var reverse = false
27
+
28
+ var options = { }
21
29
22
30
main ( )
23
31
24
32
function main ( ) {
25
33
if ( ! argv . length ) return help ( )
26
34
while ( argv . length ) {
27
35
var a = argv . shift ( )
28
- var i = a . indexOf ( '=' )
29
- if ( i !== - 1 ) {
30
- a = a . slice ( 0 , i )
31
- argv . unshift ( a . slice ( i + 1 ) )
36
+ var indexOfEqualSign = a . indexOf ( '=' )
37
+ if ( indexOfEqualSign !== - 1 ) {
38
+ a = a . slice ( 0 , indexOfEqualSign )
39
+ argv . unshift ( a . slice ( indexOfEqualSign + 1 ) )
32
40
}
33
41
switch ( a ) {
34
- case " -rv" : case " -rev" : case " --rev" : case " --reverse" :
42
+ case ' -rv' : case ' -rev' : case ' --rev' : case ' --reverse' :
35
43
reverse = true
36
44
break
37
- case "-l" : case " --loose" :
45
+ case '-l' : case ' --loose' :
38
46
loose = true
39
47
break
40
- case "-p" : case " --include-prerelease" :
48
+ case '-p' : case ' --include-prerelease' :
41
49
includePrerelease = true
42
50
break
43
- case "-v" : case " --version" :
51
+ case '-v' : case ' --version' :
44
52
versions . push ( argv . shift ( ) )
45
53
break
46
- case "-i" : case " --inc" : case " --increment" :
54
+ case '-i' : case ' --inc' : case ' --increment' :
47
55
switch ( argv [ 0 ] ) {
48
- case " major" : case " minor" : case " patch" : case " prerelease" :
49
- case " premajor" : case " preminor" : case " prepatch" :
56
+ case ' major' : case ' minor' : case ' patch' : case ' prerelease' :
57
+ case ' premajor' : case ' preminor' : case ' prepatch' :
50
58
inc = argv . shift ( )
51
59
break
52
60
default :
53
- inc = " patch"
61
+ inc = ' patch'
54
62
break
55
63
}
56
64
break
57
- case " --preid" :
65
+ case ' --preid' :
58
66
identifier = argv . shift ( )
59
67
break
60
- case "-r" : case " --range" :
68
+ case '-r' : case ' --range' :
61
69
range . push ( argv . shift ( ) )
62
70
break
63
- case "-c" : case " --coerce" :
71
+ case '-c' : case ' --coerce' :
64
72
coerce = true
65
73
break
66
- case "-h" : case " --help" : case "-?" :
74
+ case '-h' : case ' --help' : case '-?' :
67
75
return help ( )
68
76
default :
69
77
versions . push ( a )
@@ -74,15 +82,14 @@ function main () {
74
82
var options = { loose : loose , includePrerelease : includePrerelease }
75
83
76
84
versions = versions . map ( function ( v ) {
77
- return coerce ? ( semver . coerce ( v ) || { version : v } ) . version : v
85
+ return coerce ? ( semver . coerce ( v ) || { version : v } ) . version : v
78
86
} ) . filter ( function ( v ) {
79
87
return semver . valid ( v )
80
88
} )
81
89
if ( ! versions . length ) return fail ( )
82
- if ( inc && ( versions . length !== 1 || range . length ) )
83
- return failInc ( )
90
+ if ( inc && ( versions . length !== 1 || range . length ) ) { return failInc ( ) }
84
91
85
- for ( var i = 0 , l = range . length ; i < l ; i ++ ) {
92
+ for ( var i = 0 , l = range . length ; i < l ; i ++ ) {
86
93
versions = versions . filter ( function ( v ) {
87
94
return semver . satisfies ( v , range [ i ] , options )
88
95
} )
@@ -92,62 +99,62 @@ function main () {
92
99
}
93
100
94
101
function failInc ( ) {
95
- console . error ( " --inc can only be used on a single version with no range" )
102
+ console . error ( ' --inc can only be used on a single version with no range' )
96
103
fail ( )
97
104
}
98
105
99
106
function fail ( ) { process . exit ( 1 ) }
100
107
101
108
function success ( ) {
102
- var compare = reverse ? " rcompare" : " compare"
109
+ var compare = reverse ? ' rcompare' : ' compare'
103
110
versions . sort ( function ( a , b ) {
104
111
return semver [ compare ] ( a , b , options )
105
112
} ) . map ( function ( v ) {
106
113
return semver . clean ( v , options )
107
114
} ) . map ( function ( v ) {
108
115
return inc ? semver . inc ( v , inc , options , identifier ) : v
109
- } ) . forEach ( function ( v , i , _ ) { console . log ( v ) } )
116
+ } ) . forEach ( function ( v , i , _ ) { console . log ( v ) } )
110
117
}
111
118
112
119
function help ( ) {
113
- console . log ( [ " SemVer " + version
114
- , ""
115
- , " A JavaScript implementation of the http://semver.org/ specification"
116
- , " Copyright Isaac Z. Schlueter"
117
- , ""
118
- , " Usage: semver [options] <version> [<version> [...]]"
119
- , " Prints valid versions sorted by SemVer precedence"
120
- , ""
121
- , " Options:"
122
- , " -r --range <range>"
123
- , " Print versions that match the specified range."
124
- , ""
125
- , " -i --increment [<level>]"
126
- , " Increment a version by the specified level. Level can"
127
- , " be one of: major, minor, patch, premajor, preminor,"
128
- , " prepatch, or prerelease. Default level is 'patch'."
129
- , " Only one version may be specified."
130
- , ""
131
- , " --preid <identifier>"
132
- , " Identifier to be used to prefix premajor, preminor,"
133
- , " prepatch or prerelease version increments."
134
- , ""
135
- , " -l --loose"
136
- , " Interpret versions and ranges loosely"
137
- , ""
138
- , " -p --include-prerelease"
139
- , " Always include prerelease versions in range matching"
140
- , ""
141
- , " -c --coerce"
142
- , " Coerce a string into SemVer if possible"
143
- , " (does not imply --loose)"
144
- , ""
145
- , " Program exits successfully if any valid version satisfies"
146
- , " all supplied ranges, and prints all satisfying versions."
147
- , ""
148
- , " If no satisfying versions are found, then exits failure."
149
- , ""
150
- , " Versions are printed in ascending order, so supplying"
151
- , " multiple versions to the utility will just sort them."
152
- ] . join ( "\n" ) )
120
+ console . log ( [ ' SemVer ' + version ,
121
+ '' ,
122
+ ' A JavaScript implementation of the http://semver.org/ specification' ,
123
+ ' Copyright Isaac Z. Schlueter' ,
124
+ '' ,
125
+ ' Usage: semver [options] <version> [<version> [...]]' ,
126
+ ' Prints valid versions sorted by SemVer precedence' ,
127
+ '' ,
128
+ ' Options:' ,
129
+ ' -r --range <range>' ,
130
+ ' Print versions that match the specified range.' ,
131
+ '' ,
132
+ ' -i --increment [<level>]' ,
133
+ ' Increment a version by the specified level. Level can' ,
134
+ ' be one of: major, minor, patch, premajor, preminor,' ,
135
+ " prepatch, or prerelease. Default level is 'patch'." ,
136
+ ' Only one version may be specified.' ,
137
+ '' ,
138
+ ' --preid <identifier>' ,
139
+ ' Identifier to be used to prefix premajor, preminor,' ,
140
+ ' prepatch or prerelease version increments.' ,
141
+ '' ,
142
+ ' -l --loose' ,
143
+ ' Interpret versions and ranges loosely' ,
144
+ '' ,
145
+ ' -p --include-prerelease' ,
146
+ ' Always include prerelease versions in range matching' ,
147
+ '' ,
148
+ ' -c --coerce' ,
149
+ ' Coerce a string into SemVer if possible' ,
150
+ ' (does not imply --loose)' ,
151
+ '' ,
152
+ ' Program exits successfully if any valid version satisfies' ,
153
+ ' all supplied ranges, and prints all satisfying versions.' ,
154
+ '' ,
155
+ ' If no satisfying versions are found, then exits failure.' ,
156
+ '' ,
157
+ ' Versions are printed in ascending order, so supplying' ,
158
+ ' multiple versions to the utility will just sort them.'
159
+ ] . join ( '\n' ) )
153
160
}
0 commit comments