diff --git a/.gitignore b/.gitignore
index b664b188..e76c9138 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
+.env
.DS_Store
node_modules
/dist
@@ -22,4 +23,4 @@ yarn-error.log*
#Electron-builder output
/dist_electron
-yarn.lock
\ No newline at end of file
+yarn.lock
diff --git a/build/entitlements.mac.plist b/build/entitlements.mac.plist
new file mode 100644
index 00000000..d6b93bc0
--- /dev/null
+++ b/build/entitlements.mac.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ com.apple.security.cs.allow-unsigned-executable-memory
+
+
+
diff --git a/build/icon.png b/build/icon.png
new file mode 100644
index 00000000..6bdf787d
Binary files /dev/null and b/build/icon.png differ
diff --git a/package-lock.json b/package-lock.json
index 154f3ce2..cb45e497 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2579,6 +2579,12 @@
"execa": "^3.3.0"
}
},
+ "dotenv": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-7.0.0.tgz",
+ "integrity": "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==",
+ "dev": true
+ },
"emoji-regex": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
@@ -3833,7 +3839,6 @@
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
"requires": {
"sprintf-js": "~1.0.2"
}
@@ -4413,7 +4418,6 @@
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz",
"integrity": "sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==",
- "dev": true,
"requires": {
"bluebird": "^3.5.5"
}
@@ -6843,9 +6847,9 @@
}
},
"dotenv": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-7.0.0.tgz",
- "integrity": "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==",
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz",
+ "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==",
"dev": true
},
"dotenv-expand": {
@@ -7094,6 +7098,30 @@
}
}
},
+ "electron-builder-http": {
+ "version": "19.4.2",
+ "resolved": "https://registry.npmjs.org/electron-builder-http/-/electron-builder-http-19.4.2.tgz",
+ "integrity": "sha512-9t0W0ynQT3Aul+XAzwg16bfBzJ8GS6aQ9oPVMR4IiBu0Z7DTpWeorrtlrhr6XJzs0c0mkK8/YL18Pjn9696iNg==",
+ "requires": {
+ "debug": "2.6.8",
+ "fs-extra-p": "^4.3.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.8",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz",
+ "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ }
+ }
+ },
"electron-chromedriver": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/electron-chromedriver/-/electron-chromedriver-5.0.1.tgz",
@@ -7143,6 +7171,34 @@
}
}
},
+ "electron-is-dev": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/electron-is-dev/-/electron-is-dev-0.1.2.tgz",
+ "integrity": "sha1-ihBD4ys6HaHD9VPc4oznZCRhZ+M="
+ },
+ "electron-notarize": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/electron-notarize/-/electron-notarize-0.2.1.tgz",
+ "integrity": "sha512-oZ6/NhKeXmEKNROiFmRNfytqu3cxqC95sjooG7kBXQVEUSQkZnbiAhxVh5jXngL881G197pbwpeVPJyM7Ikmxw==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.1.1",
+ "fs-extra": "^8.1.0"
+ },
+ "dependencies": {
+ "fs-extra": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ }
+ }
+ },
"electron-publish": {
"version": "21.2.0",
"resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-21.2.0.tgz",
@@ -7182,6 +7238,46 @@
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.344.tgz",
"integrity": "sha512-tvbx2Wl8WBR+ym3u492D0L6/jH+8NoQXqe46+QhbWH3voVPauGuZYeb1QAXYoOAWuiP2dbSvlBx0kQ1F3hu/Mw=="
},
+ "electron-updater": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-2.2.4.tgz",
+ "integrity": "sha512-0Hk1KNvebgsEWWlQawFWUooGANccs+Dqn7vAL9JQkXFzCMs+Hr+AunB3CXTSrP8jUUeHI9Sk3eVIWsL5dwcTuQ==",
+ "requires": {
+ "bluebird-lst": "^1.0.2",
+ "debug": "^2.6.8",
+ "electron-builder-http": "~19.4.2",
+ "electron-is-dev": "^0.1.2",
+ "fs-extra-p": "^4.3.0",
+ "js-yaml": "^3.8.4",
+ "semver": "^5.3.0",
+ "source-map-support": "^0.4.15",
+ "uuid-1345": "^0.99.6",
+ "xelement": "^1.0.16"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ },
+ "source-map-support": {
+ "version": "0.4.18",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
+ "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
+ "requires": {
+ "source-map": "^0.5.6"
+ }
+ }
+ }
+ },
"elliptic": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz",
@@ -9064,6 +9160,27 @@
"universalify": "^0.1.0"
}
},
+ "fs-extra-p": {
+ "version": "4.6.1",
+ "resolved": "https://registry.npmjs.org/fs-extra-p/-/fs-extra-p-4.6.1.tgz",
+ "integrity": "sha512-IsTMbUS0svZKZTvqF4vDS9c/L7Mw9n8nZQWWeSzAGacOSe+8CzowhUN0tdZEZFIJNP5HC7L9j3MMikz/G4hDeQ==",
+ "requires": {
+ "bluebird-lst": "^1.0.5",
+ "fs-extra": "^6.0.1"
+ },
+ "dependencies": {
+ "fs-extra": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz",
+ "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==",
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ }
+ }
+ },
"fs-minipass": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
@@ -10489,7 +10606,6 @@
"version": "3.13.1",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
"integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
- "dev": true,
"requires": {
"argparse": "^1.0.7",
"esprima": "^4.0.0"
@@ -10558,7 +10674,6 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
"integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
- "dev": true,
"requires": {
"graceful-fs": "^4.1.6"
}
@@ -11134,6 +11249,11 @@
}
}
},
+ "macaddress": {
+ "version": "0.2.9",
+ "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.9.tgz",
+ "integrity": "sha512-k4F1JUof6cQXxNFzx3thLby4oJzXTXQueAOOts944Vqizn+Rjc2QNFenT9FJSLU1CH3PmrHRSyZs2E+Cqw+P2w=="
+ },
"magic-string": {
"version": "0.25.6",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.6.tgz",
@@ -14806,8 +14926,7 @@
"sax": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
- "dev": true
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
},
"scheduler": {
"version": "0.18.0",
@@ -15471,8 +15590,7 @@
"sprintf-js": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
- "dev": true
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
},
"sshpk": {
"version": "1.16.1",
@@ -16859,8 +16977,7 @@
"universalify": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
- "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
- "dev": true
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
},
"unpipe": {
"version": "1.0.0",
@@ -17102,6 +17219,14 @@
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
"integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
},
+ "uuid-1345": {
+ "version": "0.99.7",
+ "resolved": "https://registry.npmjs.org/uuid-1345/-/uuid-1345-0.99.7.tgz",
+ "integrity": "sha512-A70cwvqH95zULri1/t00/r6Bd97hKpNvS9SoSLP9Bupn95sX/01JkOuH9YjJrmNul7ZAjyX3Y3ZMlDrCjuoNPQ==",
+ "requires": {
+ "macaddress": "^0.2.9"
+ }
+ },
"validate-npm-package-license": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
@@ -19570,6 +19695,14 @@
"integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=",
"dev": true
},
+ "xelement": {
+ "version": "1.0.17",
+ "resolved": "https://registry.npmjs.org/xelement/-/xelement-1.0.17.tgz",
+ "integrity": "sha1-6dEkl68ed5IrRWrLINgIzUQZO6c=",
+ "requires": {
+ "sax": "^1.2.1"
+ }
+ },
"xtend": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
diff --git a/package.json b/package.json
index 8d5caea1..ddd12c48 100644
--- a/package.json
+++ b/package.json
@@ -2,6 +2,8 @@
"name": "unipept-desktop",
"version": "0.1.0",
"private": true,
+ "author": "Unipept Team (Ghent University)",
+ "description": "A desktop equivalent of unipept.ugent.be. This app aims at high-throughput analysis of metaproteomics samples.",
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
@@ -22,6 +24,7 @@
"better-sqlite3": "^5.4.3",
"chokidar": "^3.3.1",
"core-js": "^2.6.9",
+ "electron-updater": "^2.2.4",
"jquery": "^3.4.1",
"regenerator-runtime": "^0.13.3",
"vue": "^2.6.10",
@@ -45,7 +48,9 @@
"babel-eslint": "^10.0.1",
"copy-webpack-plugin": "^5.0.4",
"css-loader": "^3.2.0",
+ "dotenv": "^8.2.0",
"electron": "^6.0.0",
+ "electron-notarize": "^0.2.1",
"eslint": "^5.16.0",
"eslint-plugin-vue": "^5.0.0",
"less": "^3.10.3",
diff --git a/scripts/notarize.js b/scripts/notarize.js
new file mode 100644
index 00000000..8d818b6a
--- /dev/null
+++ b/scripts/notarize.js
@@ -0,0 +1,18 @@
+require("dotenv").config();
+const { notarize } = require("electron-notarize");
+
+exports.default = async function notarizing(context) {
+ const { electronPlatformName, appOutDir } = context;
+ if (electronPlatformName !== "darwin") {
+ return;
+ }
+
+ const appName = context.packager.appInfo.productFilename;
+
+ return await notarize({
+ appBundleId: "be.ugent.unipept.desktop",
+ appPath: `${appOutDir}/${appName}.app`,
+ appleId: process.env.APPLEID,
+ appleIdPassword: process.env.APPLEIDPASS,
+ });
+};
diff --git a/src/assets/icon.svg b/src/assets/icon.svg
deleted file mode 100644
index 7582f5c1..00000000
--- a/src/assets/icon.svg
+++ /dev/null
@@ -1,72 +0,0 @@
-
-
-
-
diff --git a/vue.config.js b/vue.config.js
index 6a9449c2..8eb9110a 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -8,5 +8,23 @@ module.exports = {
"better-sqlite3": "require('better-sqlite3')"
}
])
+ },
+ pluginOptions: {
+ electronBuilder: {
+ builderOptions: {
+ "appId": "be.ugent.unipept.desktop"
+ // Disable code signing for now.
+ // "mac": {
+ // "hardenedRuntime": true,
+ // "gatekeeperAssess": false,
+ // "entitlements": "build/entitlements.mac.plist",
+ // "entitlementsInherit": "build/entitlements.mac.plist"
+ // },
+ // "afterSign": "scripts/notarize.js",
+ // "dmg": {
+ // "sign": false
+ // }
+ },
+ }
}
}