Skip to content

Commit

Permalink
- add notarization scripts.
Browse files Browse the repository at this point in the history
 - fix some small issues of StatConfirm.
  • Loading branch information
oldj committed Jan 9, 2020
1 parent 79a7065 commit 51cf7a9
Show file tree
Hide file tree
Showing 11 changed files with 94 additions and 10 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Expand Up @@ -22,3 +22,6 @@ xcdebugger
npm-debug.log*
.nyc_output
coverage/

.env

3 changes: 2 additions & 1 deletion app-ui/frame/MyFrame.jsx
Expand Up @@ -60,7 +60,7 @@ export default class MyFrame extends React.Component {
if (!this.props.show) {
return null
}
let {show, title, body, lang, width, okText, cancelText} = this.props
let {show, title, body, lang, width, okText, cancelText, maskClosable} = this.props

return (
<Modal
Expand All @@ -78,6 +78,7 @@ export default class MyFrame extends React.Component {
{okText || lang.ok}
</Button>
]}
maskClosable={maskClosable}
>
<div className="prompt-body">{body}</div>
{/*<div className="prompt">*/}
Expand Down
3 changes: 2 additions & 1 deletion app-ui/frame/StatConfirm.jsx
Expand Up @@ -33,12 +33,13 @@ const StatConfirm = (props) => {
show={show}
title={lang.pref_tab_usage_data_title}
body={<div className="ln">{lang.pref_tab_usage_data_desc}</div>}
onOK={() => setShow(true)}
onOK={() => setSend(true)}
onCancel={() => setSend(false)}
lang={lang}
width={400}
okText={lang.send_usage_data_ok}
cancelText={lang.send_usage_data_cancel}
maskClosable={false}
/>
)
}
Expand Down
2 changes: 1 addition & 1 deletion app/ui/app.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion app/ui/common.js.LICENSE
@@ -1,4 +1,4 @@
/*! SwitchHosts! common.js, 2019-11-25 20:56:14 */
/*! SwitchHosts! common.js, 2020-01-09 13:52:30 */

/*!
Copyright (c) 2017 Jed Watson.
Expand Down
2 changes: 1 addition & 1 deletion app/version.js
@@ -1 +1 @@
module.exports = [3, 5, 3, 5510]
module.exports = [3, 5, 3, 5514]
33 changes: 30 additions & 3 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 6 additions & 1 deletion package.json
Expand Up @@ -73,8 +73,10 @@
"copy-webpack-plugin": "^5.0.5",
"cross-env": "^6.0.3",
"css-loader": "^3.2.0",
"dotenv": "^8.2.0",
"electron": "^7.1.2",
"electron-builder": "^21.2.0",
"electron-notarize": "^0.2.1",
"eslint": "^6.7.1",
"eslint-config-standard": "^14.1.0",
"eslint-friendly-formatter": "^4.0.1",
Expand Down Expand Up @@ -142,5 +144,8 @@
"stage-0"
]
}
},
"build": {
"afterSign": "scripts/notarize.js"
}
}
}
8 changes: 8 additions & 0 deletions scripts/entitlements.mac.plist
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
</dict>
</plist>
6 changes: 5 additions & 1 deletion scripts/make.js
Expand Up @@ -39,7 +39,9 @@ const makeApp = async () => {
category: 'public.app-category.productivity',
icon: 'assets/app.icns',
gatekeeperAssess: false,
identity: 'oldj',
hardenedRuntime: true,
entitlements: 'scripts/entitlements.mac.plist',
entitlementsInherit: 'scripts/entitlements.mac.plist',
artifactName: '${productName}_macOS_${version}(${buildVersion}).${ext}'
},
dmg: {
Expand All @@ -60,6 +62,7 @@ const makeApp = async () => {
type: 'link',
path: '/Applications'
}],
sign: false,
artifactName: '${productName}_macOS_${version}(${buildVersion}).${ext}'
},
win: {
Expand All @@ -75,6 +78,7 @@ const makeApp = async () => {
artifactName: '${productName}_windows_portable_${version}(${buildVersion}).${ext}'
},
linux: {
category: 'Development',
artifactName: '${productName}_linux_${arch}_${version}(${buildVersion}).${ext}'
}
}
Expand Down
35 changes: 35 additions & 0 deletions scripts/notarize.js
@@ -0,0 +1,35 @@
/**
* notarize.js
*
* @see https://oldj.net/blog/2019/12/29/electron-builder-sign-and-notarize-for-macos
*/

require('dotenv').config()
const {notarize} = require('electron-notarize')

exports.default = async function notarizing (context) {
const appName = context.packager.appInfo.productFilename
const {electronPlatformName, appOutDir} = context
if (electronPlatformName !== 'darwin') {
return
}

let appPath = `${appOutDir}/${appName}.app`
let {appleId, appBundleId, ascProvider, appleIdPassword} = process.env
if (!appleIdPassword) {
appleIdPassword = `@keychain:Application Loader: ${appleId}`
}

if (!appleId || !appBundleId || !ascProvider || !appleIdPassword) {
console.log('Not notarized.')
return
}

return await notarize({
appBundleId,
appPath,
ascProvider,
appleId,
appleIdPassword
})
}

0 comments on commit 51cf7a9

Please sign in to comment.