44// any supplied version is valid and passes all tests.
55
66var 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 = { }
2129
2230main ( )
2331
2432function main ( ) {
2533 if ( ! argv . length ) return help ( )
2634 while ( argv . length ) {
2735 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 ) )
3240 }
3341 switch ( a ) {
34- case " -rv" : case " -rev" : case " --rev" : case " --reverse" :
42+ case ' -rv' : case ' -rev' : case ' --rev' : case ' --reverse' :
3543 reverse = true
3644 break
37- case "-l" : case " --loose" :
45+ case '-l' : case ' --loose' :
3846 loose = true
3947 break
40- case "-p" : case " --include-prerelease" :
48+ case '-p' : case ' --include-prerelease' :
4149 includePrerelease = true
4250 break
43- case "-v" : case " --version" :
51+ case '-v' : case ' --version' :
4452 versions . push ( argv . shift ( ) )
4553 break
46- case "-i" : case " --inc" : case " --increment" :
54+ case '-i' : case ' --inc' : case ' --increment' :
4755 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' :
5058 inc = argv . shift ( )
5159 break
5260 default :
53- inc = " patch"
61+ inc = ' patch'
5462 break
5563 }
5664 break
57- case " --preid" :
65+ case ' --preid' :
5866 identifier = argv . shift ( )
5967 break
60- case "-r" : case " --range" :
68+ case '-r' : case ' --range' :
6169 range . push ( argv . shift ( ) )
6270 break
63- case "-c" : case " --coerce" :
71+ case '-c' : case ' --coerce' :
6472 coerce = true
6573 break
66- case "-h" : case " --help" : case "-?" :
74+ case '-h' : case ' --help' : case '-?' :
6775 return help ( )
6876 default :
6977 versions . push ( a )
@@ -74,15 +82,14 @@ function main () {
7482 var options = { loose : loose , includePrerelease : includePrerelease }
7583
7684 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
7886 } ) . filter ( function ( v ) {
7987 return semver . valid ( v )
8088 } )
8189 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 ( ) }
8491
85- for ( var i = 0 , l = range . length ; i < l ; i ++ ) {
92+ for ( var i = 0 , l = range . length ; i < l ; i ++ ) {
8693 versions = versions . filter ( function ( v ) {
8794 return semver . satisfies ( v , range [ i ] , options )
8895 } )
@@ -92,62 +99,62 @@ function main () {
9299}
93100
94101function 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' )
96103 fail ( )
97104}
98105
99106function fail ( ) { process . exit ( 1 ) }
100107
101108function success ( ) {
102- var compare = reverse ? " rcompare" : " compare"
109+ var compare = reverse ? ' rcompare' : ' compare'
103110 versions . sort ( function ( a , b ) {
104111 return semver [ compare ] ( a , b , options )
105112 } ) . map ( function ( v ) {
106113 return semver . clean ( v , options )
107114 } ) . map ( function ( v ) {
108115 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 ) } )
110117}
111118
112119function 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' ) )
153160}
0 commit comments