source: frontend/node_modules/semver/bin/semver.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 11 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 4.8 KB
Line 
1#!/usr/bin/env node
2// Standalone semver comparison program.
3// Exits successfully and prints matching version(s) if
4// any supplied version is valid and passes all tests.
5
6'use strict'
7
8const argv = process.argv.slice(2)
9
10let versions = []
11
12const range = []
13
14let inc = null
15
16const version = require('../package.json').version
17
18let loose = false
19
20let includePrerelease = false
21
22let coerce = false
23
24let rtl = false
25
26let identifier
27
28let identifierBase
29
30const semver = require('../')
31const parseOptions = require('../internal/parse-options')
32
33let reverse = false
34
35let options = {}
36
37const main = () => {
38 if (!argv.length) {
39 return help()
40 }
41 while (argv.length) {
42 let a = argv.shift()
43 const indexOfEqualSign = a.indexOf('=')
44 if (indexOfEqualSign !== -1) {
45 const value = a.slice(indexOfEqualSign + 1)
46 a = a.slice(0, indexOfEqualSign)
47 argv.unshift(value)
48 }
49
50 switch (a) {
51 case '-rv': case '-rev': case '--rev': case '--reverse':
52 reverse = true
53 break
54 case '-l': case '--loose':
55 loose = true
56 break
57 case '-p': case '--include-prerelease':
58 includePrerelease = true
59 break
60 case '-v': case '--version':
61 versions.push(argv.shift())
62 break
63 case '-i': case '--inc': case '--increment':
64 if (semver.RELEASE_TYPES.includes(argv[0]) || (argv[0] === 'release')) {
65 inc = { value: argv.shift(), maybeErrantValue: null, option: a }
66 } else {
67 inc = { value: 'patch', maybeErrantValue: argv[0], option: a }
68 }
69 break
70 case '--preid':
71 identifier = argv.shift()
72 break
73 case '-r': case '--range':
74 range.push(argv.shift())
75 break
76 case '-n':
77 identifierBase = argv.shift()
78 if (identifierBase === 'false') {
79 identifierBase = false
80 }
81 break
82 case '-c': case '--coerce':
83 coerce = true
84 break
85 case '--rtl':
86 rtl = true
87 break
88 case '--ltr':
89 rtl = false
90 break
91 case '-h': case '--help': case '-?':
92 return help()
93 default:
94 versions.push(a)
95 break
96 }
97 }
98
99 options = parseOptions({ loose, includePrerelease, rtl })
100
101 if (
102 inc &&
103 versions.includes(inc.maybeErrantValue) &&
104 !semver.valid(inc.maybeErrantValue, options)
105 ) {
106 console.warn(`Invalid value for ${inc.option}; defaulting to 'patch'. This may become a failure in future major versions.`)
107 }
108
109 versions = versions.map((v) => {
110 return coerce ? (semver.coerce(v, options) || { version: v }).version : v
111 }).filter((v) => {
112 return semver.valid(v, options)
113 })
114 if (!versions.length) {
115 return fail()
116 }
117 if (inc && (versions.length !== 1 || range.length)) {
118 return failInc()
119 }
120
121 for (let i = 0, l = range.length; i < l; i++) {
122 versions = versions.filter((v) => {
123 return semver.satisfies(v, range[i], options)
124 })
125 if (!versions.length) {
126 return fail()
127 }
128 }
129 versions
130 .sort((a, b) => semver[reverse ? 'rcompare' : 'compare'](a, b, options))
131 .map(v => semver.clean(v, options))
132 .map(v => inc ? semver.inc(v, inc.value, options, identifier, identifierBase) : v)
133 .forEach(v => console.log(v))
134}
135
136const failInc = () => {
137 console.error('--inc can only be used on a single version with no range')
138 fail()
139}
140
141const fail = () => process.exit(1)
142
143const help = () => console.log(
144`SemVer ${version}
145
146A JavaScript implementation of the https://semver.org/ specification
147Copyright Isaac Z. Schlueter
148
149Usage: semver [options] <version> [<version> [...]]
150Prints valid versions sorted by SemVer precedence
151
152Options:
153-r --range <range>
154 Print versions that match the specified range.
155
156-i --increment [<level>]
157 Increment a version by the specified level. Level can
158 be one of: major, minor, patch, premajor, preminor,
159 prepatch, prerelease, or release. Default level is 'patch'.
160 Only one version may be specified.
161
162--preid <identifier>
163 Identifier to be used to prefix premajor, preminor,
164 prepatch or prerelease version increments.
165
166-l --loose
167 Interpret versions and ranges loosely
168
169-p --include-prerelease
170 Always include prerelease versions in range matching
171
172-c --coerce
173 Coerce a string into SemVer if possible
174 (does not imply --loose)
175
176--rtl
177 Coerce version strings right to left
178
179--ltr
180 Coerce version strings left to right (default)
181
182-n <base>
183 Base number to be used for the prerelease identifier.
184 Can be either 0 or 1, or false to omit the number altogether.
185 Defaults to 0.
186
187Program exits successfully if any valid version satisfies
188all supplied ranges, and prints all satisfying versions.
189
190If no satisfying versions are found, then exits failure.
191
192Versions are printed in ascending order, so supplying
193multiple versions to the utility will just sort them.`)
194
195main()
Note: See TracBrowser for help on using the repository browser.