From 714d87241ceb07dfd6c08cee55347a937e97a279 Mon Sep 17 00:00:00 2001 From: Sefa Eyeoglu Date: Fri, 25 Aug 2023 14:15:02 +0200 Subject: build: allow overriding git details & disabling updating (#1677) Co-authored-by: V --- scripts/build/build.mjs | 5 +++-- scripts/build/buildWeb.mjs | 5 +++-- scripts/build/common.mjs | 18 ++++++++++++------ src/components/VencordSettings/UpdaterTab.tsx | 2 +- src/globals.d.ts | 1 + src/main/updater/index.ts | 3 ++- src/plugins/_core/settings.tsx | 2 +- src/utils/updater.ts | 2 +- 8 files changed, 24 insertions(+), 14 deletions(-) diff --git a/scripts/build/build.mjs b/scripts/build/build.mjs index e044378..ce84fed 100755 --- a/scripts/build/build.mjs +++ b/scripts/build/build.mjs @@ -19,13 +19,14 @@ import esbuild from "esbuild"; -import { commonOpts, globPlugins, isStandalone, VERSION, watch } from "./common.mjs"; +import { BUILD_TIMESTAMP, commonOpts, globPlugins, isStandalone, updaterDisabled, VERSION, watch } from "./common.mjs"; const defines = { IS_STANDALONE: isStandalone, IS_DEV: JSON.stringify(watch), + IS_UPDATER_DISABLED: updaterDisabled, VERSION: JSON.stringify(VERSION), - BUILD_TIMESTAMP: Date.now(), + BUILD_TIMESTAMP, }; if (defines.IS_STANDALONE === "false") // If this is a local build (not standalone), optimise diff --git a/scripts/build/buildWeb.mjs b/scripts/build/buildWeb.mjs index 434d176..aab82d0 100644 --- a/scripts/build/buildWeb.mjs +++ b/scripts/build/buildWeb.mjs @@ -24,7 +24,7 @@ import { readFileSync } from "fs"; import { appendFile, mkdir, readFile, rm, writeFile } from "fs/promises"; import { join } from "path"; -import { commonOpts, globPlugins, VERSION, watch } from "./common.mjs"; +import { BUILD_TIMESTAMP, commonOpts, globPlugins, VERSION, watch } from "./common.mjs"; /** * @type {esbuild.BuildOptions} @@ -46,8 +46,9 @@ const commonOptions = { IS_DEV: JSON.stringify(watch), IS_DISCORD_DESKTOP: "false", IS_VESKTOP: "false", + IS_UPDATER_DISABLED: "true", VERSION: JSON.stringify(VERSION), - BUILD_TIMESTAMP: Date.now(), + BUILD_TIMESTAMP, } }; diff --git a/scripts/build/common.mjs b/scripts/build/common.mjs index b63ea61..a12e9ee 100644 --- a/scripts/build/common.mjs +++ b/scripts/build/common.mjs @@ -30,15 +30,18 @@ import PackageJSON from "../../package.json" assert { type: "json" }; import { getPluginTarget } from "../utils.mjs"; export const VERSION = PackageJSON.version; -export const BUILD_TIMESTAMP = Date.now(); +// https://reproducible-builds.org/docs/source-date-epoch/ +export const BUILD_TIMESTAMP = Number(process.env.SOURCE_DATE_EPOCH) || Date.now(); export const watch = process.argv.includes("--watch"); export const isStandalone = JSON.stringify(process.argv.includes("--standalone")); -export const gitHash = execSync("git rev-parse --short HEAD", { encoding: "utf-8" }).trim(); +export const updaterDisabled = JSON.stringify(process.argv.includes("--disable-updater")); +export const gitHash = process.env.VENCORD_HASH || execSync("git rev-parse --short HEAD", { encoding: "utf-8" }).trim(); export const banner = { js: ` // Vencord ${gitHash} // Standalone: ${isStandalone} // Platform: ${isStandalone === "false" ? process.platform : "Universal"} +// Updater disabled: ${updaterDisabled} `.trim() }; @@ -133,11 +136,14 @@ export const gitRemotePlugin = { namespace: "git-remote", path: args.path })); build.onLoad({ filter, namespace: "git-remote" }, async () => { + let remote = process.env.VENCORD_REMOTE; + if (!remote) { const res = await promisify(exec)("git remote get-url origin", { encoding: "utf-8" }); - const remote = res.stdout.trim() - .replace("https://github.com/", "") - .replace("git@github.com:", "") - .replace(/.git$/, ""); + remote = res.stdout.trim() + .replace("https://github.com/", "") + .replace("git@github.com:", "") + .replace(/.git$/, ""); + } return { contents: `export default "${remote}"` }; }); diff --git a/src/components/VencordSettings/UpdaterTab.tsx b/src/components/VencordSettings/UpdaterTab.tsx index 4d0b86c..6766cf0 100644 --- a/src/components/VencordSettings/UpdaterTab.tsx +++ b/src/components/VencordSettings/UpdaterTab.tsx @@ -249,4 +249,4 @@ function Updater() { ); } -export default IS_WEB ? null : wrapTab(Updater, "Updater"); +export default IS_UPDATER_DISABLED ? null : wrapTab(Updater, "Updater"); diff --git a/src/globals.d.ts b/src/globals.d.ts index 720cd5e..daccf33 100644 --- a/src/globals.d.ts +++ b/src/globals.d.ts @@ -35,6 +35,7 @@ declare global { export var IS_WEB: boolean; export var IS_DEV: boolean; export var IS_STANDALONE: boolean; + export var IS_UPDATER_DISABLED: boolean; export var IS_DISCORD_DESKTOP: boolean; export var IS_VESKTOP: boolean; export var VERSION: string; diff --git a/src/main/updater/index.ts b/src/main/updater/index.ts index 7036112..32d5cd6 100644 --- a/src/main/updater/index.ts +++ b/src/main/updater/index.ts @@ -16,4 +16,5 @@ * along with this program. If not, see . */ -import(IS_STANDALONE ? "./http" : "./git"); +if (!IS_UPDATER_DISABLED) + import(IS_STANDALONE ? "./http" : "./git"); diff --git a/src/plugins/_core/settings.tsx b/src/plugins/_core/settings.tsx index e5f710c..88ebb57 100644 --- a/src/plugins/_core/settings.tsx +++ b/src/plugins/_core/settings.tsx @@ -103,7 +103,7 @@ export default definePlugin({ element: require("@components/VencordSettings/ThemesTab").default, className: "vc-themes" }, - !IS_WEB && { + !IS_UPDATER_DISABLED && { section: "VencordUpdater", label: "Updater", element: require("@components/VencordSettings/UpdaterTab").default, diff --git a/src/utils/updater.ts b/src/utils/updater.ts index 2e2bfe1..f99c6ca 100644 --- a/src/utils/updater.ts +++ b/src/utils/updater.ts @@ -63,7 +63,7 @@ export async function update() { export const getRepo = () => Unwrap(VencordNative.updater.getRepo()); export async function maybePromptToUpdate(confirmMessage: string, checkForDev = false) { - if (IS_WEB) return; + if (IS_WEB || IS_UPDATER_DISABLED) return; if (checkForDev && IS_DEV) return; try { -- cgit