build: added script for bumping version with dependencies
This commit is contained in:
parent
967c10b25c
commit
1a60b39214
6 changed files with 153 additions and 39 deletions
|
@ -35,6 +35,7 @@
|
||||||
"nyc": "^15.1.0",
|
"nyc": "^15.1.0",
|
||||||
"rimraf": "^3.0.2",
|
"rimraf": "^3.0.2",
|
||||||
"dotenv-flow": "^3.2.0",
|
"dotenv-flow": "^3.2.0",
|
||||||
"glob": "^8.0.1"
|
"glob": "^8.0.1",
|
||||||
|
"semver": "^7.3.7"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/node": "^15.12.1",
|
"@types/node": "^15.12.1",
|
||||||
"@types/events": "^3.0.0",
|
"@types/events": "^3.0.0",
|
||||||
|
"@types/long": "^4.0.2",
|
||||||
"@mtcute/tl": "workspace:143.0.0",
|
"@mtcute/tl": "workspace:143.0.0",
|
||||||
"@mtcute/tl-runtime": "workspace:^1.0.0",
|
"@mtcute/tl-runtime": "workspace:^1.0.0",
|
||||||
"big-integer": "1.6.48",
|
"big-integer": "1.6.48",
|
||||||
|
@ -28,7 +29,6 @@
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/ws": "^7.4.1",
|
"@types/ws": "^7.4.1",
|
||||||
"@types/long": "^4.0.2",
|
|
||||||
"ws": "^7.4.4"
|
"ws": "^7.4.4"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,7 @@ import {
|
||||||
getCachedDocumentation,
|
getCachedDocumentation,
|
||||||
} from './documentation'
|
} from './documentation'
|
||||||
import { packTlSchema } from './schema'
|
import { packTlSchema } from './schema'
|
||||||
|
import { bumpVersion } from '../../../scripts/version'
|
||||||
|
|
||||||
const README_MD_FILE = join(__dirname, '../README.md')
|
const README_MD_FILE = join(__dirname, '../README.md')
|
||||||
const PACKAGE_JSON_FILE = join(__dirname, '../package.json')
|
const PACKAGE_JSON_FILE = join(__dirname, '../package.json')
|
||||||
|
@ -144,36 +145,7 @@ async function updatePackageVersion(
|
||||||
packageJson.version = versionStr
|
packageJson.version = versionStr
|
||||||
await writeFile(PACKAGE_JSON_FILE, JSON.stringify(packageJson, null, 4))
|
await writeFile(PACKAGE_JSON_FILE, JSON.stringify(packageJson, null, 4))
|
||||||
|
|
||||||
console.log('Updating dependant packages...')
|
bumpVersion('tl', versionStr)
|
||||||
|
|
||||||
for (const dir of await readdir(PACKAGES_DIR, { withFileTypes: true })) {
|
|
||||||
if (!dir.isDirectory()) continue
|
|
||||||
|
|
||||||
const pkgFile = join(PACKAGES_DIR, dir.name, 'package.json')
|
|
||||||
|
|
||||||
let pkg
|
|
||||||
try {
|
|
||||||
pkg = JSON.parse(await readFile(pkgFile, 'utf8'))
|
|
||||||
} catch (e: any) {
|
|
||||||
if (e.code === 'ENOENT') continue
|
|
||||||
throw e
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pkg.dependencies && '@mtcute/tl' in pkg.dependencies) {
|
|
||||||
pkg.dependencies['@mtcute/tl'] = 'workspace:' + versionStr
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pkg.devDependencies && '@mtcute/tl' in pkg.devDependencies) {
|
|
||||||
pkg.devDependencies['@mtcute/tl'] = 'workspace:' + versionStr
|
|
||||||
}
|
|
||||||
|
|
||||||
await writeFile(pkgFile, JSON.stringify(pkg, null, 4) + '\n')
|
|
||||||
}
|
|
||||||
|
|
||||||
// because i am fucking dumb and have adhd and always forget it lol
|
|
||||||
console.log(
|
|
||||||
'Done! Please make sure packages compile before committing and pushing'
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async function overrideInt53(schema: TlFullSchema): Promise<void> {
|
async function overrideInt53(schema: TlFullSchema): Promise<void> {
|
||||||
|
|
|
@ -22,6 +22,7 @@ importers:
|
||||||
nyc: ^15.1.0
|
nyc: ^15.1.0
|
||||||
prettier: ^2.6.2
|
prettier: ^2.6.2
|
||||||
rimraf: ^3.0.2
|
rimraf: ^3.0.2
|
||||||
|
semver: ^7.3.7
|
||||||
ts-node: ^10.7.0
|
ts-node: ^10.7.0
|
||||||
typedoc: ^0.22.15
|
typedoc: ^0.22.15
|
||||||
typescript: ^4.6.4
|
typescript: ^4.6.4
|
||||||
|
@ -45,6 +46,7 @@ importers:
|
||||||
nyc: 15.1.0
|
nyc: 15.1.0
|
||||||
prettier: 2.6.2
|
prettier: 2.6.2
|
||||||
rimraf: 3.0.2
|
rimraf: 3.0.2
|
||||||
|
semver: 7.3.7
|
||||||
ts-node: 10.7.0_mocf6w6juzjyi26vrxr4oqpfq4
|
ts-node: 10.7.0_mocf6w6juzjyi26vrxr4oqpfq4
|
||||||
typedoc: 0.22.15_typescript@4.6.4
|
typedoc: 0.22.15_typescript@4.6.4
|
||||||
typescript: 4.6.4
|
typescript: 4.6.4
|
||||||
|
@ -53,7 +55,7 @@ importers:
|
||||||
specifiers:
|
specifiers:
|
||||||
'@mtcute/core': workspace:^1.0.0
|
'@mtcute/core': workspace:^1.0.0
|
||||||
'@mtcute/file-id': workspace:^1.0.0
|
'@mtcute/file-id': workspace:^1.0.0
|
||||||
'@mtcute/tl': workspace:142.0.0
|
'@mtcute/tl': workspace:143.0.0
|
||||||
'@types/long': ^4.0.1
|
'@types/long': ^4.0.1
|
||||||
'@types/node': ^15.12.1
|
'@types/node': ^15.12.1
|
||||||
eager-async-pool: ^1.0.0
|
eager-async-pool: ^1.0.0
|
||||||
|
@ -71,7 +73,7 @@ importers:
|
||||||
|
|
||||||
packages/core:
|
packages/core:
|
||||||
specifiers:
|
specifiers:
|
||||||
'@mtcute/tl': workspace:142.0.0
|
'@mtcute/tl': workspace:143.0.0
|
||||||
'@mtcute/tl-runtime': workspace:^1.0.0
|
'@mtcute/tl-runtime': workspace:^1.0.0
|
||||||
'@types/events': ^3.0.0
|
'@types/events': ^3.0.0
|
||||||
'@types/long': ^4.0.2
|
'@types/long': ^4.0.2
|
||||||
|
@ -85,12 +87,12 @@ importers:
|
||||||
'@mtcute/tl': link:../tl
|
'@mtcute/tl': link:../tl
|
||||||
'@mtcute/tl-runtime': link:../tl-runtime
|
'@mtcute/tl-runtime': link:../tl-runtime
|
||||||
'@types/events': 3.0.0
|
'@types/events': 3.0.0
|
||||||
|
'@types/long': 4.0.2
|
||||||
'@types/node': 15.14.9
|
'@types/node': 15.14.9
|
||||||
big-integer: 1.6.48
|
big-integer: 1.6.48
|
||||||
events: 3.2.0
|
events: 3.2.0
|
||||||
long: 4.0.0
|
long: 4.0.0
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@types/long': 4.0.2
|
|
||||||
'@types/ws': 7.4.7
|
'@types/ws': 7.4.7
|
||||||
ws: 7.5.7
|
ws: 7.5.7
|
||||||
|
|
||||||
|
@ -107,7 +109,7 @@ importers:
|
||||||
specifiers:
|
specifiers:
|
||||||
'@mtcute/client': workspace:^1.0.0
|
'@mtcute/client': workspace:^1.0.0
|
||||||
'@mtcute/core': workspace:^1.0.0
|
'@mtcute/core': workspace:^1.0.0
|
||||||
'@mtcute/tl': workspace:142.0.0
|
'@mtcute/tl': workspace:143.0.0
|
||||||
events: ^3.2.0
|
events: ^3.2.0
|
||||||
dependencies:
|
dependencies:
|
||||||
'@mtcute/client': link:../client
|
'@mtcute/client': link:../client
|
||||||
|
@ -118,7 +120,7 @@ importers:
|
||||||
packages/file-id:
|
packages/file-id:
|
||||||
specifiers:
|
specifiers:
|
||||||
'@mtcute/core': workspace:^1.0.0
|
'@mtcute/core': workspace:^1.0.0
|
||||||
'@mtcute/tl': workspace:142.0.0
|
'@mtcute/tl': workspace:143.0.0
|
||||||
'@mtcute/tl-runtime': workspace:^1.0.0
|
'@mtcute/tl-runtime': workspace:^1.0.0
|
||||||
'@types/long': ^4.0.1
|
'@types/long': ^4.0.1
|
||||||
long: ^4.0.0
|
long: ^4.0.0
|
||||||
|
@ -133,7 +135,7 @@ importers:
|
||||||
packages/html-parser:
|
packages/html-parser:
|
||||||
specifiers:
|
specifiers:
|
||||||
'@mtcute/client': workspace:^1.0.0
|
'@mtcute/client': workspace:^1.0.0
|
||||||
'@mtcute/tl': workspace:142.0.0
|
'@mtcute/tl': workspace:143.0.0
|
||||||
'@types/long': ^4.0.1
|
'@types/long': ^4.0.1
|
||||||
htmlparser2: ^6.0.1
|
htmlparser2: ^6.0.1
|
||||||
long: ^4.0.0
|
long: ^4.0.0
|
||||||
|
@ -154,7 +156,7 @@ importers:
|
||||||
packages/markdown-parser:
|
packages/markdown-parser:
|
||||||
specifiers:
|
specifiers:
|
||||||
'@mtcute/client': workspace:^1.0.0
|
'@mtcute/client': workspace:^1.0.0
|
||||||
'@mtcute/tl': workspace:142.0.0
|
'@mtcute/tl': workspace:143.0.0
|
||||||
'@types/long': ^4.0.1
|
'@types/long': ^4.0.1
|
||||||
long: ^4.0.0
|
long: ^4.0.0
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -426,6 +428,8 @@ packages:
|
||||||
resolution: {integrity: sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==}
|
resolution: {integrity: sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==}
|
||||||
engines: {node: '>=6.0.0'}
|
engines: {node: '>=6.0.0'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
dependencies:
|
||||||
|
'@babel/types': 7.17.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@babel/template/7.16.7:
|
/@babel/template/7.16.7:
|
||||||
|
@ -1084,6 +1088,8 @@ packages:
|
||||||
ssri: 9.0.0
|
ssri: 9.0.0
|
||||||
tar: 6.1.11
|
tar: 6.1.11
|
||||||
unique-filename: 1.1.1
|
unique-filename: 1.1.1
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- bluebird
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/caching-transform/4.0.0:
|
/caching-transform/4.0.0:
|
||||||
|
@ -2352,6 +2358,7 @@ packages:
|
||||||
socks-proxy-agent: 6.2.0
|
socks-proxy-agent: 6.2.0
|
||||||
ssri: 9.0.0
|
ssri: 9.0.0
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
|
- bluebird
|
||||||
- supports-color
|
- supports-color
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
@ -2572,6 +2579,7 @@ packages:
|
||||||
tar: 6.1.11
|
tar: 6.1.11
|
||||||
which: 2.0.2
|
which: 2.0.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
|
- bluebird
|
||||||
- supports-color
|
- supports-color
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
@ -2864,6 +2872,11 @@ packages:
|
||||||
|
|
||||||
/promise-inflight/1.0.1:
|
/promise-inflight/1.0.1:
|
||||||
resolution: {integrity: sha1-mEcocL8igTL8vdhoEputEsPAKeM=}
|
resolution: {integrity: sha1-mEcocL8igTL8vdhoEputEsPAKeM=}
|
||||||
|
peerDependencies:
|
||||||
|
bluebird: '*'
|
||||||
|
peerDependenciesMeta:
|
||||||
|
bluebird:
|
||||||
|
optional: true
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/promise-retry/2.0.1:
|
/promise-retry/2.0.1:
|
||||||
|
|
1
scripts/version.d.ts
vendored
Normal file
1
scripts/version.d.ts
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
export declare function bumpVersion(packageName: string, version: string): void
|
127
scripts/version.js
Normal file
127
scripts/version.js
Normal file
|
@ -0,0 +1,127 @@
|
||||||
|
const fs = require('fs')
|
||||||
|
const path = require('path')
|
||||||
|
const semver = require('semver')
|
||||||
|
|
||||||
|
function bumpVersion(packageName, version) {
|
||||||
|
const packageJsons = fs
|
||||||
|
.readdirSync(path.join(__dirname, '../packages'))
|
||||||
|
.filter((s) => !s.startsWith('.'))
|
||||||
|
.map((name) => {
|
||||||
|
try {
|
||||||
|
return JSON.parse(
|
||||||
|
fs.readFileSync(
|
||||||
|
path.join(__dirname, '../packages', name, 'package.json'),
|
||||||
|
'utf-8'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
} catch (e) {
|
||||||
|
if (e.code !== 'ENOENT') throw e
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.filter(Boolean)
|
||||||
|
const packageJsonChanged = new Set()
|
||||||
|
|
||||||
|
// i am pretty fucking sure there is a better way to do this, but whatever
|
||||||
|
// im tired as fuck and hadnt had sleep for a while
|
||||||
|
|
||||||
|
const newVersions = { [packageName]: version }
|
||||||
|
let hadChanges = true
|
||||||
|
while (hadChanges) {
|
||||||
|
hadChanges = false
|
||||||
|
|
||||||
|
packageJsons.forEach((json) => {
|
||||||
|
if (!json.name.startsWith('@mtcute/')) return
|
||||||
|
const pkgName = json.name.slice(8)
|
||||||
|
|
||||||
|
function check(deps) {
|
||||||
|
if (!deps) return
|
||||||
|
|
||||||
|
Object.keys(deps).forEach((depName) => {
|
||||||
|
if (!depName.startsWith('@mtcute/')) return
|
||||||
|
|
||||||
|
const depVersionRange = deps[depName].replace(/^workspace:/, '')
|
||||||
|
depName = depName.slice(8)
|
||||||
|
|
||||||
|
if (
|
||||||
|
newVersions[depName] &&
|
||||||
|
!newVersions[pkgName] &&
|
||||||
|
!semver.satisfies(newVersions[depName], depVersionRange)
|
||||||
|
) {
|
||||||
|
newVersions[pkgName] = semver.inc(json.version, 'patch')
|
||||||
|
hadChanges = true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
check(json.dependencies)
|
||||||
|
check(json.devDependencies)
|
||||||
|
check(json.peerDependencies)
|
||||||
|
check(json.optionalDependencies)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
Object.keys(newVersions).forEach((pkgName) => {
|
||||||
|
packageJsonChanged.add(pkgName)
|
||||||
|
|
||||||
|
const version = newVersions[pkgName]
|
||||||
|
console.log(`updated ${pkgName} to ${version}`)
|
||||||
|
|
||||||
|
for (const json of packageJsons) {
|
||||||
|
if (json.name === `@mtcute/${pkgName}`) continue
|
||||||
|
|
||||||
|
function updateDependencies(obj) {
|
||||||
|
if (!obj) return
|
||||||
|
Object.keys(obj).forEach((depName) => {
|
||||||
|
if (!depName.startsWith('@mtcute/')) return
|
||||||
|
|
||||||
|
const depVersionRange = obj[depName].replace(/^workspace:/, '')
|
||||||
|
depName = depName.slice(8)
|
||||||
|
|
||||||
|
if (
|
||||||
|
depName === pkgName &&
|
||||||
|
!semver.satisfies(version, depVersionRange)
|
||||||
|
) {
|
||||||
|
obj[depName] = `workspace:^${version}`
|
||||||
|
console.log(` - updated dependency ${depName} at ${json.name}`)
|
||||||
|
packageJsonChanged.add(json.name.slice(8))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
updateDependencies(json.dependencies)
|
||||||
|
updateDependencies(json.devDependencies)
|
||||||
|
updateDependencies(json.peerDependencies)
|
||||||
|
updateDependencies(json.optionalDependencies)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
console.log('changed package.json in:', packageJsonChanged)
|
||||||
|
|
||||||
|
packageJsonChanged.forEach((name) => {
|
||||||
|
const json = packageJsons.find((json) => json.name === `@mtcute/${name}`)
|
||||||
|
if (!json) return
|
||||||
|
|
||||||
|
fs.writeFileSync(
|
||||||
|
path.join(__dirname, '../packages', name, 'package.json'),
|
||||||
|
JSON.stringify(json, null, 4)
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
console.log('Done!')
|
||||||
|
// because i am fucking dumb and have adhd and always forget it lol
|
||||||
|
console.log('Now run `pnpm i` and make sure everything compiles.')
|
||||||
|
}
|
||||||
|
|
||||||
|
if (require.main === module) {
|
||||||
|
const packageName = process.argv[2]
|
||||||
|
const version = process.argv[3]
|
||||||
|
if (!packageName || !version) {
|
||||||
|
console.log('Usage: version.js <packageName> <version>')
|
||||||
|
process.exit(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
bumpVersion(packageName, version)
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = { bumpVersion }
|
Loading…
Reference in a new issue