([a, b])
| 211 | } |
| 212 | |
| 213 | async convertVersionsToSpecs ([a, b]) { |
| 214 | const semverA = semver.validRange(a) |
| 215 | const semverB = semver.validRange(b) |
| 216 | |
| 217 | // both specs are semver versions, assume current project dir name |
| 218 | if (semverA && semverB) { |
| 219 | let pkgName |
| 220 | try { |
| 221 | const { content: pkg } = await pkgJson.normalize(this.prefix) |
| 222 | pkgName = pkg.name |
| 223 | } catch { |
| 224 | log.verbose('diff', 'could not read project dir package.json') |
| 225 | } |
| 226 | |
| 227 | if (!pkgName) { |
| 228 | throw this.usageError('Needs to be run from a project dir in order to diff two versions.') |
| 229 | } |
| 230 | |
| 231 | return [`${pkgName}@${a}`, `${pkgName}@${b}`] |
| 232 | } |
| 233 | |
| 234 | // otherwise uses the name from the other arg to figure out the spec.name of what to compare |
| 235 | if (!semverA && semverB) { |
| 236 | return [a, `${npa(a).name}@${b}`] |
| 237 | } |
| 238 | |
| 239 | if (semverA && !semverB) { |
| 240 | return [`${npa(b).name}@${a}`, b] |
| 241 | } |
| 242 | |
| 243 | // no valid semver ranges used |
| 244 | return [a, b] |
| 245 | } |
| 246 | |
| 247 | async findVersionsByPackageName (specs) { |
| 248 | let actualTree |
no test coverage detected