build-macos.mjs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #!/usr/bin/env node
  2. /* eslint-disable @typescript-eslint/prefer-nullish-coalescing */
  3. import { build as builder } from 'electron-builder'
  4. import * as vars from './vars.mjs'
  5. const isTag = (process.env.GITHUB_REF || '').startsWith('refs/tags/')
  6. process.env.ARCH = process.env.ARCH || process.arch
  7. if (process.env.GITHUB_HEAD_REF) {
  8. delete process.env.CSC_LINK
  9. delete process.env.CSC_KEY_PASSWORD
  10. process.env.CSC_IDENTITY_AUTO_DISCOVERY = 'false'
  11. }
  12. process.env.APPLE_ID ??= process.env.APPSTORE_USERNAME
  13. process.env.APPLE_APP_SPECIFIC_PASSWORD ??= process.env.APPSTORE_PASSWORD
  14. builder({
  15. dir: true,
  16. mac: ['dmg', 'zip'],
  17. x64: process.env.ARCH === 'x86_64',
  18. arm64: process.env.ARCH === 'arm64',
  19. config: {
  20. extraMetadata: {
  21. version: vars.version,
  22. },
  23. mac: {
  24. identity: !process.env.CI || process.env.CSC_LINK ? undefined : null,
  25. notarize: process.env.APPLE_TEAM_ID ? {
  26. appBundleId: 'org.tabby',
  27. teamId: process.env.APPLE_TEAM_ID,
  28. } : false,
  29. },
  30. npmRebuild: process.env.ARCH !== 'arm64',
  31. publish: process.env.KEYGEN_TOKEN ? [
  32. vars.keygenConfig,
  33. {
  34. provider: 'github',
  35. channel: `latest-${process.env.ARCH}`,
  36. },
  37. ] : undefined,
  38. },
  39. publish: process.env.KEYGEN_TOKEN ? isTag ? 'always' : 'onTagOrDraft' : 'never',
  40. }).catch(e => {
  41. console.error(e)
  42. process.exit(1)
  43. })