diff --git a/.gitignore b/.gitignore index 72859a9..1570184 100644 --- a/.gitignore +++ b/.gitignore @@ -149,7 +149,8 @@ $RECYCLE.BIN/ .LSOverride # Icon must end with two \r -Icon +Icon + # Thumbnails ._* @@ -170,3 +171,5 @@ Network Trash Folder Temporary Items .apdisk +app.zip +/appcode \ No newline at end of file diff --git a/download.js b/download.js new file mode 100644 index 0000000..c537ce2 --- /dev/null +++ b/download.js @@ -0,0 +1,14 @@ +const axios = require('axios').default; +const unzip = require('unzip-stream'); +const fs = require('fs'); +const download = require('download'); + +axios.get('https://git.odit.services/api/v1/repos/lfk/scanclient/releases').then(({ data }) => { + (async () => { + const download_file = data[0].assets.find((a) => a.name === 'dist.zip').browser_download_url; + fs.writeFileSync('app.zip', await download(download_file)); + fs.createReadStream('app.zip').pipe(unzip.Parse()).on('entry', () => { + fs.createReadStream('app.zip').pipe(unzip.Extract({ path: './appcode/' })); + }); + })(); +}); diff --git a/main.js b/main.js new file mode 100644 index 0000000..2ef3d56 --- /dev/null +++ b/main.js @@ -0,0 +1,39 @@ +const { app, BrowserWindow } = require('electron'); +const path = require('path'); + +function createWindow() { + const mainWindow = new BrowserWindow({ + width: 800, + height: 600, + fullscreen: true + // webPreferences: { + // preload: path.join(__dirname, 'preload.js') + // } + }); + mainWindow.loadFile('appcode/dist/index.html'); + // mainWindow.removeMenu(); + // mainWindow.webContents.openDevTools() +} + +// This method will be called when Electron has finished +// initialization and is ready to create browser windows. +// Some APIs can only be used after this event occurs. +app.whenReady().then(() => { + createWindow(); + + app.on('activate', function() { + // On macOS it's common to re-create a window in the app when the + // dock icon is clicked and there are no other windows open. + if (BrowserWindow.getAllWindows().length === 0) createWindow(); + }); +}); + +// Quit when all windows are closed, except on macOS. There, it's common +// for applications and their menu bar to stay active until the user quits +// explicitly with Cmd + Q. +app.on('window-all-closed', function() { + if (process.platform !== 'darwin') app.quit(); +}); + +// In this file you can include the rest of your app's specific main process +// code. You can also put them in separate files and require them here. diff --git a/package.json b/package.json new file mode 100644 index 0000000..130ba3e --- /dev/null +++ b/package.json @@ -0,0 +1,53 @@ +{ + "name": "@lfk/scanclient-electron", + "version": "0.0.0", + "description": "minimal electron application", + "main": "main.js", + "scripts": { + "download": "node download.js", + "build": "yarn download && yarn electron:package", + "electron:start": "electron-forge start", + "electron:package": "electron-forge package" + }, + "devDependencies": { + "@electron-forge/cli": "^6.0.0-beta.54", + "@electron-forge/maker-deb": "^6.0.0-beta.54", + "@electron-forge/maker-rpm": "^6.0.0-beta.54", + "@electron-forge/maker-squirrel": "^6.0.0-beta.54", + "@electron-forge/maker-zip": "^6.0.0-beta.54", + "@taraus-he/tdunzip": "^1.0.4", + "axios": "^0.21.1", + "download": "^8.0.0", + "electron-nightly": "14.0.0-nightly.20210319", + "extract-zip": "^2.0.1", + "js-file-downloader": "^1.1.16", + "unzip-stream": "^0.3.1" + }, + "dependencies": { + "electron-squirrel-startup": "1.0.0" + }, + "config": { + "forge": { + "packagerConfig": {}, + "makers": [ + { + "name": "@electron-forge/maker-zip", + "platforms": [ + "darwin" + ], + "config": { + "name": "lfk__scanclient" + } + }, + { + "name": "@electron-forge/maker-deb", + "config": {} + }, + { + "name": "@electron-forge/maker-rpm", + "config": {} + } + ] + } + } +}