mirror of https://github.com/nocodb/nocodb
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
3.4 KiB
98 lines
3.4 KiB
const fs = require('fs') |
|
const path = require('path'); |
|
const execSync = require('child_process').execSync; |
|
|
|
// extract latest version from package.json |
|
const nocodbSdkPackage = JSON.parse(fs.readFileSync(path.join(__dirname, '..', 'packages', 'nocodb-sdk', 'package.json'), 'utf8')) |
|
|
|
|
|
if (process.env.revertSDK === 'true') { |
|
nocodbSdkPackage.version = 'workspace:^'; |
|
} |
|
|
|
const replacePackageName = (filePath) => { |
|
return new Promise((resolve, reject) => { |
|
return fs.readFile(filePath, 'utf8', function (err, data) { |
|
if (err) return reject(err) |
|
var result = data.replace(/nocodb-sdk/g, nocodbSdkPackage.name); |
|
return fs.writeFile(filePath, result, 'utf8', function (err) { |
|
if (err) return reject(err) |
|
return resolve() |
|
}); |
|
}); |
|
}) |
|
} |
|
|
|
const replacePackageVersion = (filePath) => { |
|
return new Promise((resolve, reject) => { |
|
return fs.readFile(filePath, 'utf8', function (err, data) { |
|
if (err) return reject(err) |
|
const rgx = new RegExp(`"${nocodbSdkPackage.name}": ".*"`, "g"); |
|
var result = data.replace(rgx, `"${nocodbSdkPackage.name}": "${nocodbSdkPackage.version}"`); |
|
return fs.writeFile(filePath, result, 'utf8', function (err) { |
|
if (err) return reject(err) |
|
return resolve() |
|
}); |
|
}); |
|
}) |
|
} |
|
|
|
const bumbVersionAndSave = () => { |
|
// upgrade nocodb-sdk version in nocodb & nc-gui |
|
return Promise.all([ |
|
replacePackageVersion(path.join(__dirname, '..', 'packages', 'nocodb', 'package.json')), |
|
replacePackageVersion(path.join(__dirname, '..', 'packages', 'nc-gui', 'package.json')), |
|
]) |
|
} |
|
|
|
const dfs = function(dir) { |
|
var res = []; |
|
var list = fs.readdirSync(dir); |
|
list.forEach(function(file) { |
|
if (['node_modules', 'build'].includes(file)) return; |
|
file = dir + '/' + file; |
|
var stat = fs.statSync(file); |
|
if (stat && stat.isDirectory()) { |
|
res = res.concat(dfs(file)); |
|
} else { |
|
const ext = path.extname(file).toLowerCase() |
|
if (ext == '.vue' || ext == '.ts' || ext == '.js') { |
|
res.push(file); |
|
} |
|
} |
|
}) |
|
return res; |
|
} |
|
|
|
const searchAndReplace = (target) => { |
|
let list = [ |
|
...dfs(path.resolve(path.join(__dirname, '..', 'packages', 'nc-gui'))), |
|
...dfs(path.resolve(path.join(__dirname, '..', 'packages', 'nocodb'))), |
|
...dfs(path.resolve(path.join(__dirname, '..', 'tests', 'playwright'))), |
|
path.join(__dirname, '..', 'packages', 'nc-gui', 'package.json'), |
|
path.join(__dirname, '..', 'packages', 'nocodb', 'package.json'), |
|
path.join(__dirname, '..', 'tests', 'playwright', 'package.json'), |
|
] |
|
return Promise.all(list.map(d => { |
|
return new Promise((resolve, reject) => { |
|
fs.readFile(d, function(err, content) { |
|
if (err) reject(err) |
|
if (content.indexOf(target) > -1) { |
|
resolve(replacePackageName(d)) |
|
} else { |
|
resolve() |
|
} |
|
}) |
|
}) |
|
})) |
|
} |
|
|
|
if (process.env.targetEnv === 'DEV') { |
|
// replace nocodb-sdk by nocodb-sdk-daily if it is nightly build / pr build |
|
searchAndReplace('nocodb-sdk') |
|
.then(() => { |
|
bumbVersionAndSave() |
|
}) |
|
} else { |
|
bumbVersionAndSave() |
|
}
|
|
|