From 1b04aa32e7075c2ba942d32c2120754c414f8f83 Mon Sep 17 00:00:00 2001 From: NAmorim Date: Thu, 7 Oct 2021 08:48:41 +0100 Subject: [PATCH 1/6] Electron wrapper for binaries --- electron-wrapper.js | 130 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 electron-wrapper.js diff --git a/electron-wrapper.js b/electron-wrapper.js new file mode 100644 index 000000000..b47a036be --- /dev/null +++ b/electron-wrapper.js @@ -0,0 +1,130 @@ +const {app, Menu, BrowserWindow} = require('electron') + +const path = require('path') +const fs = require('fs') + +const WINDOW_WIDTH = null +const WINDOW_HEIGHT = null + +var w + +var app_ready = false +var server_ready = false + +const port = 34248 // Default HTTP port + +/* To check if the folders where user data do exist. If not, create them */ +function userData() { + const dataStorage = path.join(process.cwd(), '/Platform/My-Data-Storage') + const logFiles = path.join(process.cwd(), '/Platform/My-Log-Files') + const workspace = path.join(process.cwd(), '/Platform/My-Workspaces') + + if (!fs.existsSync(dataStorage)) { + fs.mkdirSync(dataStorage) + } + + if (!fs.existsSync(logFiles)) { + fs.mkdirSync(logFiles) + } + + if (!fs.existsSync(workspace)) { + fs.mkdirSync(workspace) + } +} +run() + +function run() { + userData() + const { fork } = require('child_process') + fork(path.join(__dirname, './PlatformRoot.js'), { + execArgv: ['noBrowser'] + }) + + server_ready = true + if (app_ready) open() +} + +function open () { + let bw_options = { + width: WINDOW_WIDTH ? WINDOW_WIDTH : 1280, + height: WINDOW_HEIGHT ? WINDOW_HEIGHT : 720, + resizable: true + } + + w = new BrowserWindow( + bw_options + ) + + w.setResizable(true) + + w.loadURL("http://localhost:" + port) + + // w.webContents.openDevTools() + + w.on('closed', function () { + w = null + }) +} + +app.on('ready', function () { + app_ready = true + create_menus() + if (server_ready) open() +}) + +app.on('window-all-closed', function () { + app.quit() +}) + +function create_menus () { + const template = [ + { + label: app.getName(), + submenu: [ + { + role: 'quit' + } + ] + }, + { + label: 'Edit', + submenu: [ + {role: 'undo'}, + {role: 'redo'}, + {type: 'separator'}, + {role: 'cut'}, + {role: 'copy'}, + {role: 'paste'}, + {role: 'pasteandmatchstyle'}, + {role: 'delete'}, + {role: 'selectall'} + ] + }, + { + label: 'View', + submenu: [ + { + label: 'Open in Browser...', + click () { + require('electron').shell.openExternal('http://localhost:' + port) + } + }, + { + type: 'separator' + }, + {role: 'reload'}, + {role: 'forcereload'}, + {role: 'toggledevtools'}, + {type: 'separator'}, + {role: 'resetzoom'}, + {role: 'zoomin'}, + {role: 'zoomout'}, + {type: 'separator'}, + {role: 'togglefullscreen'} + ] + } + ] + + const menu = Menu.buildFromTemplate(template) + Menu.setApplicationMenu(menu) +} \ No newline at end of file From c0c2f10228710158cb71969561698a12b7e3b268 Mon Sep 17 00:00:00 2001 From: NAmorim Date: Thu, 7 Oct 2021 08:49:07 +0100 Subject: [PATCH 2/6] Path update to run inside electron package --- Environment.js | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/Environment.js b/Environment.js index a042eaf5b..e3d44a91c 100644 --- a/Environment.js +++ b/Environment.js @@ -1,18 +1,20 @@ +const path = require("path") + exports.newEnvironment = function () { let thisObject = { WEB_SERVER_URL: 'localhost', CLIENT_WEB_SOCKETS_INTERFACE_PORT: 18041, CLIENT_HTTP_INTERFACE_PORT: 34248, - PATH_TO_DATA_STORAGE: './Platform/My-Data-Storage', - PATH_TO_LOG_FILES: './Platform/My-Log-Files', - PATH_TO_PROJECTS: './Projects', - PATH_TO_PROJECTS_REQUIRED: './Projects', - PATH_TO_PROJECT_SCHEMA: './Projects/ProjectsSchema.json', - PATH_TO_CLIENT: './Platform', - PATH_TO_DEFAULT_WORKSPACE: './Projects/Foundations/Plugins/Workspaces', - PATH_TO_MY_WORKSPACES: './Platform/My-Workspaces', - PATH_TO_FONTS: './Platform/WebServer/Fonts' + PATH_TO_DATA_STORAGE: path.join(__dirname, './Platform/My-Data-Storage'), + PATH_TO_PROJECTS: path.join(__dirname, './Projects'), + PATH_TO_LOG_FILES: path.join(__dirname, './Platform/My-Log-Files'), + PATH_TO_PROJECTS_REQUIRED: path.join(__dirname, './Projects'), + PATH_TO_PROJECT_SCHEMA: path.join(__dirname, './Projects/ProjectsSchema.json'), + PATH_TO_CLIENT: path.join(__dirname, './Platform'), + PATH_TO_DEFAULT_WORKSPACE: path.join(__dirname, './Projects/Foundations/Plugins/Workspaces'), + PATH_TO_MY_WORKSPACES: path.join(__dirname, './Platform/My-Workspaces'), + PATH_TO_FONTS: path.join(__dirname, './Platform/WebServer/Fonts') } return thisObject From 37587029d20bc1c1b1ff5a7babfc90c8b06cbf5d Mon Sep 17 00:00:00 2001 From: NAmorim Date: Thu, 7 Oct 2021 08:49:29 +0100 Subject: [PATCH 3/6] Binaries build scripts --- .gitignore | 1 + package.json | 75 +++++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 72 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 749233d0e..77cf8ef6a 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,4 @@ node_modules launch.json package-lock.json .idea +build diff --git a/package.json b/package.json index ab00b7ad6..b1345736d 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,21 @@ { "name": "superalgos", - "version": "0.0.11", - "description": "Superalgos", + "version": "0.0.12-beta", + "description": "Superalgos is a free, open-source crypto trading bot", + "main": "electron-wrapper.js", + "license": "Apache License 2.0", + "homepage": "https://www.superalgos.org/", "author": { "name": "Luis-Fernando-Molina" }, "scripts": { - "start": "node platform minMemo noBrowser", - "setup": "node setup noShortcuts" + "start-dev": "node platform minMemo noBrowser", + "setup": "node setup noShortcuts", + "release-dev": "electron-builder --dir", + "release-win": "electron-builder --win", + "release-mac": "electron-builder --mac", + "start": "electron .", + "postinstall": "electron-builder install-app-deps" }, "dependencies": { "@octokit/rest": "^18.11.4", @@ -29,5 +37,64 @@ "util": "^0.12.4", "web3": "^1.6.0", "ws": "^8.2.3" + }, + "devDependencies": { + "electron": "^15.1.0", + "electron-builder": "^22.11.7" + }, + "build": { + "appId": "org.superalgos.platform", + "productName": "Superalgos", + "directories": { + "output": "build" + }, + "files": [ + "**/*", + "!.github${/*}", + "!.vscode${/*}", + "!.dockerignore${/*}", + "!Data-Storage/*", + "!Log-Files/*", + "!My-Workspaces/*", + "!build", + "!Docker", + "!Launch-Scripts", + "!run.js", + "!setup.js", + "!uninstall.js" + ], + "win": { + "target": [ + { + "target": "portable", + "arch": "x64" + }, + { + "target": "nsis", + "arch": "x64" + } + ], + "icon": "./Launch-Scripts/superalgos.ico", + "publish": "github" + }, + "nsis": { + "oneClick": false, + "perMachine": false, + "allowElevation": false, + "allowToChangeInstallationDirectory": true, + "createDesktopShortcut": true, + "createStartMenuShortcut": true, + "license": "./LICENSE", + "runAfterFinish": false + }, + "mac": { + "category": "public.app-category.finance", + "target": "dmg", + "type": "development", + "publish": "github" + }, + "linux": { + "maintainer": "na.amorim@gmail.com" + } } } From c1fe2e975d1eedb2da3606f5db5a49b117fd852a Mon Sep 17 00:00:00 2001 From: NAmorim Date: Thu, 7 Oct 2021 11:28:06 +0100 Subject: [PATCH 4/6] Correction for arguments --- electron-wrapper.js | 4 +--- package.json | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/electron-wrapper.js b/electron-wrapper.js index b47a036be..92566cc6e 100644 --- a/electron-wrapper.js +++ b/electron-wrapper.js @@ -36,9 +36,7 @@ run() function run() { userData() const { fork } = require('child_process') - fork(path.join(__dirname, './PlatformRoot.js'), { - execArgv: ['noBrowser'] - }) + fork(path.join(__dirname, './PlatformRoot.js'), process.argv) server_ready = true if (app_ready) open() diff --git a/package.json b/package.json index b1345736d..2c1bf7587 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "release-dev": "electron-builder --dir", "release-win": "electron-builder --win", "release-mac": "electron-builder --mac", - "start": "electron .", + "start": "electron . noBrowser", "postinstall": "electron-builder install-app-deps" }, "dependencies": { From 80c93c226cc9affdc59365dbe4ee7fe20f974f2a Mon Sep 17 00:00:00 2001 From: NAmorim Date: Thu, 7 Oct 2021 16:00:21 +0100 Subject: [PATCH 5/6] Checking Github Actions --- .github/workflows/ci_cd.yml | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 .github/workflows/ci_cd.yml diff --git a/.github/workflows/ci_cd.yml b/.github/workflows/ci_cd.yml new file mode 100644 index 000000000..1e31793ec --- /dev/null +++ b/.github/workflows/ci_cd.yml @@ -0,0 +1,32 @@ +# name of your github action +name: CI +# this will help you specify where to run +on: + push: + branches: + # this will run on the electron branch + - develop +# this is where the magic happens, each job happens in parallel btw +jobs: + build_on_mac: + runs-on: macOS-latest + steps: + - uses: actions/checkout@master + with: + ref: develop + - uses: actions/setup-node@master + with: + node-version: 16 + - name: see directory + run: ls +build_on_win: + runs-on: windows-2016 + steps: + - uses: actions/checkout@master + with: + ref: develop + - uses: actions/setup-node@master + with: + node-version: 16 + - name: see directory + run: ls \ No newline at end of file From 9cf1ede9f244b9b0d7d6788ee8c35ce8ba781f2c Mon Sep 17 00:00:00 2001 From: NAmorim Date: Thu, 7 Oct 2021 16:04:12 +0100 Subject: [PATCH 6/6] Fix typo --- .github/workflows/ci_cd.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci_cd.yml b/.github/workflows/ci_cd.yml index 1e31793ec..b45ef4cfa 100644 --- a/.github/workflows/ci_cd.yml +++ b/.github/workflows/ci_cd.yml @@ -19,7 +19,8 @@ jobs: node-version: 16 - name: see directory run: ls -build_on_win: + + build_on_win: runs-on: windows-2016 steps: - uses: actions/checkout@master