| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248 | 
							- /**
 
-  * make
 
-  * @author: oldj
 
-  * @homepage: https://oldj.net
 
-  */
 
- require('dotenv').config()
 
- const version = require('../src/version.json')
 
- const builder = require('electron-builder')
 
- const execa = require('execa')
 
- const fse = require('fs-extra')
 
- const homedir = require('os').homedir()
 
- const path = require('path')
 
- const root_dir = path.normalize(path.join(__dirname, '..'))
 
- const dist_dir = path.normalize(path.join(__dirname, '..', 'dist'))
 
- const electronLanguages = ['en', 'zh_CN']
 
- const TARGET_PLATFORMS_configs = {
 
-   mac: {
 
-     mac: ['default']
 
-   },
 
-   mas: {
 
-     mac: ['mas']
 
-   },
 
-   macs: {
 
-     mac: ['default', 'mas']
 
-   },
 
-   win: {
 
-     win: ['nsis:ia32', 'portable:ia32']
 
-   },
 
-   all: {
 
-     mac: ['default'],
 
-     linux: [/*'zip:x64', */'AppImage:x64', 'deb:x64'],
 
-     win: ['nsis:ia32', 'nsis:x64', 'portable:ia32']
 
-   }
 
- }
 
- const APP_NAME = 'SwitchHosts'
 
- const { IDENTITY } = process.env
 
- const cfg_common = {
 
-   copyright: `Copyright © ${(new Date()).getFullYear()}`,
 
-   buildVersion: version[3].toString(),
 
-   directories: {
 
-     buildResources: 'build',
 
-     app: 'build'
 
-   },
 
-   electronDownload: {
 
-     cache: path.join(homedir, '.electron'),
 
-     mirror: 'https://npm.taobao.org/mirrors/electron/'
 
-   }
 
- }
 
- const sign = async () => {
 
-   console.log('-> to sign...')
 
-   let wd = process.cwd()
 
-   process.chdir(__dirname)
 
-   let cmd = path.join(__dirname, 'sign-mac.sh')
 
-   try {
 
-     const { stdout } = await execa(cmd)
 
-     console.log(stdout)
 
-   } catch (e) {
 
-     //console.error(e)
 
-     console.log(e.stdout)
 
-     console.error(e.stderr)
 
-   }
 
-   process.chdir(wd)
 
- }
 
- const beforeMake = async () => {
 
-   console.log('-> beforeMake...')
 
-   fse.removeSync(dist_dir)
 
-   fse.ensureDirSync(dist_dir)
 
-   const to_cp = [
 
-     [
 
-       path.join(root_dir, 'assets', 'app.png'),
 
-       path.join(root_dir, 'build', 'assets', 'app.png')
 
-     ]
 
-   ]
 
-   to_cp.map(([src, target]) => {
 
-     fse.copySync(src, target)
 
-   })
 
-   let pkg_base = require(path.join(root_dir, 'package.json'))
 
-   let pkg_app = require(path.join(root_dir, 'app', 'package.json'))
 
-   pkg_app.name = APP_NAME
 
-   pkg_app.version = version.slice(0, 3).join('.')
 
-   pkg_app.dependencies = pkg_base.dependencies
 
-   fse.writeFileSync(
 
-     path.join(root_dir, 'build', 'package.json'),
 
-     JSON.stringify(pkg_app, null, 2),
 
-     'utf-8'
 
-   )
 
- }
 
- const afterMake = async () => {
 
-   console.log('-> afterMake...')
 
- }
 
- const makeMacArm = async () => {
 
-   console.log('-> makeMacArm...')
 
-   await builder.build({
 
-     config: {
 
-       ...cfg_common,
 
-       appId: 'SwitchHosts',
 
-       productName: APP_NAME,
 
-       mac: {
 
-         target: [
 
-           {
 
-             target: 'dmg',
 
-             arch: [
 
-               //'x64',
 
-               'arm64'
 
-             ]
 
-           }
 
-         ],
 
-         category: 'public.app-category.productivity',
 
-         icon: 'assets/app.icns',
 
-         gatekeeperAssess: false,
 
-         electronLanguages,
 
-         identity: IDENTITY,
 
-         hardenedRuntime: true,
 
-         entitlements: 'scripts/entitlements.mac.plist',
 
-         entitlementsInherit: 'scripts/entitlements.mac.plist',
 
-         provisioningProfile: 'scripts/app.provisionprofile',
 
-         artifactName: '${productName}_arm64_${version}(${buildVersion}).${ext}'
 
-       },
 
-       dmg: {
 
-         //backgroundColor: '#f1f1f6',
 
-         background: 'assets/dmg-bg.png',
 
-         //icon: 'assets/dmg-icon.icns',
 
-         iconSize: 160,
 
-         window: {
 
-           width: 600,
 
-           height: 420
 
-         },
 
-         contents: [{
 
-           x: 150,
 
-           y: 200
 
-         }, {
 
-           x: 450,
 
-           y: 200,
 
-           type: 'link',
 
-           path: '/Applications'
 
-         }],
 
-         sign: false,
 
-         artifactName: '${productName}_arm64_${version}(${buildVersion}).${ext}'
 
-       }
 
-     }
 
-   })
 
-   console.log('done!')
 
- }
 
- const makeDefault = async () => {
 
-   console.log('-> makeDefault...')
 
-   // forFullVersion.task(APP_NAME)
 
-   await builder.build({
 
-     //targets: Platform.MAC.createTarget(),
 
-     //...TARGET_PLATFORMS_configs.mac,
 
-     //...TARGET_PLATFORMS_configs.win,
 
-     ...TARGET_PLATFORMS_configs.all,
 
-     config: {
 
-       ...cfg_common,
 
-       appId: 'SwitchHosts',
 
-       productName: APP_NAME,
 
-       mac: {
 
-         category: 'public.app-category.productivity',
 
-         icon: 'assets/app.icns',
 
-         gatekeeperAssess: false,
 
-         electronLanguages,
 
-         identity: IDENTITY,
 
-         hardenedRuntime: true,
 
-         entitlements: 'scripts/entitlements.mac.plist',
 
-         entitlementsInherit: 'scripts/entitlements.mac.plist',
 
-         provisioningProfile: 'scripts/app.provisionprofile',
 
-         artifactName: '${productName}_${version}(${buildVersion}).${ext}'
 
-       },
 
-       dmg: {
 
-         //backgroundColor: '#f1f1f6',
 
-         background: 'assets/dmg-bg.png',
 
-         //icon: 'assets/dmg-icon.icns',
 
-         iconSize: 160,
 
-         window: {
 
-           width: 600,
 
-           height: 420
 
-         },
 
-         contents: [{
 
-           x: 150,
 
-           y: 200
 
-         }, {
 
-           x: 450,
 
-           y: 200,
 
-           type: 'link',
 
-           path: '/Applications'
 
-         }],
 
-         sign: false,
 
-         artifactName: '${productName}_${version}(${buildVersion}).${ext}'
 
-       },
 
-       win: {
 
-         icon: 'assets/app.ico'
 
-         //requestedExecutionLevel: 'requireAdministrator'
 
-       },
 
-       nsis: {
 
-         installerIcon: 'assets/installer-icon.ico',
 
-         oneClick: false,
 
-         allowToChangeInstallationDirectory: true,
 
-         artifactName: '${productName}_installer_${version}(${buildVersion}).${ext}'
 
-       },
 
-       portable: {
 
-         artifactName: '${productName}_portable_${version}(${buildVersion}).${ext}'
 
-       },
 
-       linux: {
 
-         icon: 'assets/app.png',
 
-         artifactName: '${productName}_linux_${version}(${buildVersion}).${ext}',
 
-         category: 'Office'
 
-       }
 
-     }
 
-   })
 
-   console.log('done!')
 
- }
 
- (async () => {
 
-   try {
 
-     await beforeMake()
 
-     await makeMacArm()
 
-     await makeDefault()
 
-     await afterMake()
 
-     await sign()
 
-     console.log('-> meke Done!')
 
-   } catch (e) {
 
-     console.log(e)
 
-   }
 
- })()
 
 
  |