sbv2-solana/tools/scripts/update-docker-version.js

74 lines
1.7 KiB
JavaScript

#!/usr/bin/env node
/* eslint-disable @typescript-eslint/no-var-requires */
/* eslint-disable import/no-extraneous-dependencies */
/**
* This script will
* - Globally update the docker version throughout the repo
*/
const shell = require("shelljs");
const fs = require("fs");
const path = require("path");
const projectRoot = path.join(__dirname, "..", "..");
const ignorePatterns = [
"git",
"node_modules",
".anchor",
".switchboard",
".archive",
".docusaurus",
"website/public",
"target/rls",
"target/release",
"target/bpfel-unknown-unknown",
"target/bpfel-unknown-unknown",
".fingerprint",
];
const allowedExtensions = [".md", ".mdx", ".js", ".json", ".yml", ".ts"];
// Regex: dev-v2-[0-9]{1,2}-[0-9]{1,2}-[0-9]{1,2}[A-Za-z]?
shell.cd(projectRoot);
const latestVersionRegex = fs
.readFileSync(path.join(projectRoot, "Oracle_Version.md"), "utf8")
.match(/dev-v2-[0-9]{1,2}-[0-9]{1,2}-[0-9]{1,2}[A-Za-z]?/);
if (!latestVersionRegex) {
throw new Error(
`Failed to find the latest oracle version in Oracle_Version.md`
);
}
const latestVersion = latestVersionRegex[0];
console.log(`Latest Oracle Version: ${latestVersion}`);
shell.find(".").forEach((filePath) => {
// check for ignore patterns
for (const pattern of ignorePatterns) {
if (filePath.indexOf(pattern) !== -1) {
return;
}
}
// check if its a directory
if (fs.statSync(filePath).isDirectory()) {
return;
}
// check if the extension is applicable
if (!allowedExtensions.includes(path.parse(filePath).ext)) {
return;
}
// global find and replace
try {
shell.sed(
"-i",
/dev-v2-[0-9]{1,2}-[0-9]{1,2}-[0-9]{1,2}[A-Za-z]?/g,
latestVersion,
filePath
);
} catch {}
});