| 91 | } |
| 92 | |
| 93 | async run() { |
| 94 | await this.getExistingPackages(); |
| 95 | this.getChangedPackages(); |
| 96 | |
| 97 | await this.getVersionBumps(); |
| 98 | for (let pkg in this.versionBumps) { |
| 99 | let bump = this.versionBumps[pkg]; |
| 100 | if (bump === 'unreleased' || bump === 'unchanged') { |
| 101 | continue; |
| 102 | } |
| 103 | |
| 104 | this.addReleasedPackage(pkg, bump); |
| 105 | } |
| 106 | |
| 107 | let all = process.argv.findIndex(arg => arg === '--all'); |
| 108 | if (all >= 0) { |
| 109 | let bump = process.argv[all + 1] ?? 'patch'; |
| 110 | for (let name in this.workspacePackages) { |
| 111 | if (this.versionBumps[name]) { |
| 112 | continue; |
| 113 | } |
| 114 | |
| 115 | let filePath = this.workspacePackages[name].location + '/package.json'; |
| 116 | let pkg = JSON.parse(fs.readFileSync(filePath, 'utf8')); |
| 117 | if (!pkg.private) { |
| 118 | let prerelease = semver.parse(pkg.version).prerelease; |
| 119 | let b = prerelease.length === 0 ? bump : prerelease[0]; |
| 120 | this.changedPackages.add(name); |
| 121 | this.addReleasedPackage(name, b); |
| 122 | } |
| 123 | } |
| 124 | } |
| 125 | |
| 126 | let versions = this.getVersions(); |
| 127 | await this.promptVersions(versions); |
| 128 | this.bumpVersions(versions); |
| 129 | this.commit(versions); |
| 130 | } |
| 131 | |
| 132 | async getExistingPackages() { |
| 133 | // Find what packages already exist on npm |