Chore: Electron refactoring (#2270)

* use specter_dev dir in dev + change logic to determine dev mode

* SPECTER_DATA_FOLDER picked up in Electron to set dev folder

---------

Co-authored-by: k9ert <k9ert@gmx.de>
This commit is contained in:
Manolis Mandrapilias 2023-03-02 18:58:00 +01:00 committed by GitHub
parent ddcafe0bd3
commit 10d84ddac7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 62 additions and 45 deletions

View file

@ -1,26 +1,61 @@
const fs = require('fs')
const os = require('os')
const path = require('path')
const crypto = require('crypto')
const readLastLines = require('read-last-lines');
const downloadloc = require('./downloadloc');
const { loggers } = require('winston');
const appName = downloadloc.appName()
const appNameLower = appName.toLowerCase()
const isDev = process.env.NODE_ENV === "development"
const unresolvedDevFolder = process.env.SPECTER_DATA_FOLDER || "~/.specter_dev"
const devFolder = unresolvedDevFolder.replace(/^~/, os.homedir());
const prodFolder = path.resolve(os.homedir(), `.${appNameLower}`)
const isMac = process.platform === 'darwin'
let appSettingsPath
let specterdDirPath
let specterAppLogPath
let versionData
try {
// Use different version-data.jsons
// Should look like this:
// {
// "version": "v2.0.0-pre32",
// "sha256": "aa049abf3e75199bad26fbded08ee5911ad48e325b42c43ec195136bd0736785"
// }
if (isDev) {
let versionDataPath = `${devFolder}/version-data.json`
try {
versionData = require(versionDataPath)
}
catch {
}
}
else {
try {
versionData = require('./version-data.json')
console.log(versionData)
} catch (e) {
console.log('Could not find default version data configurations...'+e)
}
catch (e) {
console.log('Could not find default version data configurations: '+e)
versionData = {
"version": "",
"sha256": ""
}
}
}
if (isDev) {
appSettingsPath = `${devFolder}/app_settings.json`
specterdDirPath = `${devFolder}/specterd-binaries`
specterAppLogPath = `${devFolder}/specterApp.log`
}
else {
appSettingsPath = `${prodFolder}/app_settings.json`
specterdDirPath = `${prodFolder}/specterd-binaries`
specterAppLogPath = `${prodFolder}/specterApp.log`
}
const appSettingsPath = path.resolve(require('os').homedir(), `.${appNameLower}/app_settings.json`)
const specterdDirPath = path.resolve(require('os').homedir(), `.${appNameLower}/specterd-binaries`)
const specterAppLogPath = path.resolve(require('os').homedir(), `.${appNameLower}/specterApp.log`)
function getFileHash(filename, callback) {
let shasum = crypto.createHash('sha256')
@ -45,8 +80,8 @@ function getAppSettings() {
basicAuthPass: '',
tor: false,
proxyURL: "socks5://127.0.0.1:9050",
specterdVersion: versionData.version,
specterdHash: versionData.sha256,
specterdVersion: (versionData && versionData.version !== undefined) ? versionData.version : 'unknown',
specterdHash: (versionData && versionData.sha256 !== undefined) ? versionData.sha256 : 'unknown',
specterdCLIArgs: "",
versionInitialized: false
}
@ -82,5 +117,9 @@ module.exports = {
getAppSettings: getAppSettings,
specterdDirPath: specterdDirPath,
getSpecterAppLogs: getSpecterAppLogs,
specterAppLogPath: specterAppLogPath
specterAppLogPath: specterAppLogPath,
versionData,
isDev: isDev,
devFolder,
isMac, isMac
}

View file

@ -9,34 +9,30 @@ const extract = require('extract-zip')
const defaultMenu = require('electron-default-menu');
const ProgressBar = require('electron-progressbar')
const { spawn, exec } = require('child_process');
const helpers = require('./helpers')
const getFileHash = helpers.getFileHash
const getAppSettings = helpers.getAppSettings
const appSettingsPath = helpers.appSettingsPath
const specterdDirPath = helpers.specterdDirPath
const { getFileHash, getAppSettings, appSettingsPath, specterdDirPath, specterAppLogPath, versionData, isDev, devFolder, isMac } = require('./helpers')
const downloadloc = require('./downloadloc')
const getDownloadLocation = downloadloc.getDownloadLocation
const appName = downloadloc.appName()
const appNameLower = appName.toLowerCase()
// Quit again if there is no version-data in dev
if (isDev && versionData === undefined) {
console.log(`You need to create a version-data.json in your dev folder (${devFolder}) to run the app. Check helpers.js for the format. Quitting ...`)
app.quit()
return
}
ipcMain.handle("showMessageBoxSync", (e, message, buttons) => {
dialog.showMessageBoxSync(mainWindow, { message, buttons });
});
// Helper
const isMac = process.platform === 'darwin'
const isDev = process.env.NODE_ENV !== "production"
// Logging
const {transports, format, createLogger } = require('winston')
const combinedLog = new transports.File({ filename: helpers.specterAppLogPath });
const combinedLog = new transports.File({ filename: specterAppLogPath });
const winstonOptions = {
exitOnError: false,
format: format.combine(
format.timestamp(),
// format.timestamp({format:'MM/DD/YYYY hh:mm:ss.SSS'}),
format.json(),
format.printf(info => {
return `${info.timestamp} [${info.level}] : ${info.message}`;
@ -326,19 +322,6 @@ app.whenReady().then(() => {
fs.mkdirSync(specterdDirPath, { recursive: true });
}
let versionData
// Download specterd, run sha256sum on it and then set your own versionData in dev, should look this:
// {
// "version": "v2.0.0-pre32",
// "sha256": "aa049abf3e75199bad26fbded08ee5911ad48e325b42c43ec195136bd0736785"
// }
if (isDev) {
versionData = require('./version-data-dev.json')
}
else {
versionData = require('./version-data.json')
}
if (!appSettings.versionInitialized || appSettings.versionInitialized != versionData.version) {
logger.info(`Updating ${appSettingsPath} : ${JSON.stringify(appSettings)}`);
appSettings.specterdVersion = versionData.version

View file

@ -4,9 +4,9 @@
"version": "v0.0.0",
"main": "main.js",
"scripts": {
"start": "cp -R ../../src/cryptoadvance/specter/static/fonts ../../src/cryptoadvance/specter/static/output.css ../../src/cryptoadvance/specter/static/typography.css . && electron .",
"start": "export NODE_ENV=development && cp -R ../../src/cryptoadvance/specter/static/fonts ../../src/cryptoadvance/specter/static/output.css ../../src/cryptoadvance/specter/static/typography.css . && electron .",
"pack": "electron-builder --dir",
"dist": "export NODE_ENV=production && electron-builder --publish=never",
"dist": "electron-builder --publish=never",
"postinstall": "electron-builder install-app-deps"
},
"repository": "https://github.com/cryptoadvance/specter-desktop",
@ -53,4 +53,4 @@
"request": "^2.88.2",
"winston": "^3.3.3"
}
}
}

View file

@ -1,5 +0,0 @@
{
"version": "v2.0.0-pre32",
"sha256": "aa049abf3e75199bad26fbded08ee5911ad48e325b42c43ec195136bd0736785"
}