| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- import type { Configuration } from "electron-builder"
- const channel = (() => {
- const raw = process.env.OPENCODE_CHANNEL
- if (raw === "dev" || raw === "beta" || raw === "prod") return raw
- return "dev"
- })()
- const getBase = (): Configuration => ({
- artifactName: "opencode-electron-${os}-${arch}.${ext}",
- directories: {
- output: "dist",
- buildResources: "resources",
- },
- files: ["out/**/*", "resources/**/*"],
- extraResources: [
- {
- from: "resources/",
- to: "",
- filter: ["opencode-cli*"],
- },
- {
- from: "native/",
- to: "native/",
- filter: ["index.js", "index.d.ts", "build/Release/mac_window.node", "swift-build/**"],
- },
- ],
- mac: {
- category: "public.app-category.developer-tools",
- icon: `resources/icons/icon.icns`,
- hardenedRuntime: true,
- gatekeeperAssess: false,
- entitlements: "resources/entitlements.plist",
- entitlementsInherit: "resources/entitlements.plist",
- notarize: true,
- target: ["dmg", "zip"],
- },
- dmg: {
- sign: true,
- },
- protocols: {
- name: "OpenCode",
- schemes: ["opencode"],
- },
- win: {
- icon: `resources/icons/icon.ico`,
- target: ["nsis"],
- },
- nsis: {
- oneClick: false,
- allowToChangeInstallationDirectory: true,
- installerIcon: `resources/icons/icon.ico`,
- installerHeaderIcon: `resources/icons/icon.ico`,
- },
- linux: {
- icon: `resources/icons`,
- category: "Development",
- target: ["AppImage", "deb", "rpm"],
- },
- })
- function getConfig() {
- const base = getBase()
- switch (channel) {
- case "dev": {
- return {
- ...base,
- appId: "ai.opencode.desktop.dev",
- productName: "OpenCode Dev",
- rpm: { packageName: "opencode-dev" },
- }
- }
- case "beta": {
- return {
- ...base,
- appId: "ai.opencode.desktop.beta",
- productName: "OpenCode Beta",
- protocols: { name: "OpenCode Beta", schemes: ["opencode"] },
- publish: { provider: "github", owner: "anomalyco", repo: "opencode-beta", channel: "latest" },
- rpm: { packageName: "opencode-beta" },
- }
- }
- case "prod": {
- return {
- ...base,
- appId: "ai.opencode.desktop",
- productName: "OpenCode",
- protocols: { name: "OpenCode", schemes: ["opencode"] },
- publish: { provider: "github", owner: "anomalyco", repo: "opencode", channel: "latest" },
- rpm: { packageName: "opencode" },
- }
- }
- }
- }
- export default getConfig()
|