From 9981da93ed4c45e4407b509c00c0eb989f4e3b72 Mon Sep 17 00:00:00 2001 From: Lucas Fernandes Nogueira Date: Wed, 21 Aug 2019 18:35:52 -0300 Subject: [PATCH] chore(mode) cleanup (#23) * feat(mode) cleanup * fix(cli) fix bin entry --- lib/tauri.js | 5 --- {tauri => mode}/bin/tauri-build.js | 9 ++--- {tauri => mode}/bin/tauri-dev.js | 8 +--- {tauri => mode}/bin/tauri-init.js | 3 +- {tauri => mode}/bin/tauri.js | 0 tauri/helpers/generator.js => mode/entry.js | 10 ++--- mode/generator.js | 11 ++++++ {tauri => mode}/helpers/app-paths.js | 0 {tauri => mode}/helpers/logger.js | 0 {tauri => mode}/helpers/on-shutdown.js | 0 {tauri => mode}/helpers/spawn.js | 0 {tauri => mode}/helpers/tauri-config.js | 0 {tauri => mode}/runner.js | 24 +++++++----- mode/template.js | 29 +++++++++++++++ package.json | 3 +- tauri/injector.js | 41 --------------------- tauri/lib.js | 9 ----- 17 files changed, 67 insertions(+), 85 deletions(-) rename {tauri => mode}/bin/tauri-build.js (70%) rename {tauri => mode}/bin/tauri-dev.js (72%) rename {tauri => mode}/bin/tauri-init.js (87%) rename {tauri => mode}/bin/tauri.js (100%) rename tauri/helpers/generator.js => mode/entry.js (50%) create mode 100644 mode/generator.js rename {tauri => mode}/helpers/app-paths.js (100%) rename {tauri => mode}/helpers/logger.js (100%) rename {tauri => mode}/helpers/on-shutdown.js (100%) rename {tauri => mode}/helpers/spawn.js (100%) rename {tauri => mode}/helpers/tauri-config.js (100%) rename {tauri => mode}/runner.js (89%) create mode 100644 mode/template.js delete mode 100644 tauri/injector.js delete mode 100644 tauri/lib.js diff --git a/lib/tauri.js b/lib/tauri.js index e733154d3..8fcb277fb 100644 --- a/lib/tauri.js +++ b/lib/tauri.js @@ -1,8 +1,3 @@ -<% - if (typeof(confName) === 'undefined') { - confName = 'quasar.conf.js' - } -%> /** * THIS FILE IS GENERATED AUTOMATICALLY. * DO NOT EDIT. diff --git a/tauri/bin/tauri-build.js b/mode/bin/tauri-build.js similarity index 70% rename from tauri/bin/tauri-build.js rename to mode/bin/tauri-build.js index 9ca86ffcb..87b9cae95 100644 --- a/tauri/bin/tauri-build.js +++ b/mode/bin/tauri-build.js @@ -25,18 +25,15 @@ if (argv.help) { const appPaths = require('../helpers/app-paths'), Runner = require('../runner'), - Injector = require('../injector'), tauri = new Runner(appPaths), - injector = new Injector(appPaths), tauriConfig = require('../helpers/tauri-config')({ ctx: { debug: argv.debug } }) -const {bundle, ...cfg} = tauriConfig.tauri, - cfgDir = injector.configDir() -writeFileSync(path.join(cfgDir, 'config.json'), JSON.stringify(cfg)) -writeFileSync(path.join(cfgDir, 'bundle.json'), JSON.stringify(bundle)) + +require('../generator').generate(tauriConfig.tauri) +require('../entry').generate(appPaths.tauriDir, tauriConfig, true) require('../helpers/generator')(tauriConfig) tauri.build(tauriConfig) diff --git a/tauri/bin/tauri-dev.js b/mode/bin/tauri-dev.js similarity index 72% rename from tauri/bin/tauri-dev.js rename to mode/bin/tauri-dev.js index aeaf4f13f..e5851c0d6 100644 --- a/tauri/bin/tauri-dev.js +++ b/mode/bin/tauri-dev.js @@ -24,9 +24,7 @@ if (argv.help) { const appPaths = require('../helpers/app-paths'), Runner = require('../runner'), - Injector = require('../injector'), tauri = new Runner(appPaths), - injector = new Injector(appPaths), tauriConfig = require('../helpers/tauri-config')({ ctx: { debug: true @@ -36,9 +34,7 @@ const appPaths = require('../helpers/app-paths'), const { bundle, ...cfg } = tauriConfig.tauri, cfgDir = injector.configDir() -writeFileSync(path.join(cfgDir, 'config.json'), JSON.stringify(cfg)) -writeFileSync(path.join(cfgDir, 'bundle.json'), JSON.stringify(bundle)) - -require('../helpers/generator')(tauriConfig) +require('../generator').generate(tauriConfig.tauri) +require('../entry').generate(appPaths.tauriDir, tauriConfig, true) tauri.run(tauriConfig) diff --git a/tauri/bin/tauri-init.js b/mode/bin/tauri-init.js similarity index 87% rename from tauri/bin/tauri-init.js rename to mode/bin/tauri-init.js index 509cdd043..189fd1e0c 100644 --- a/tauri/bin/tauri-init.js +++ b/mode/bin/tauri-init.js @@ -22,8 +22,7 @@ if (argv.help) { process.exit(0) } -const Injector = require('../injector'), - injector = new Injector(appPaths) +require('../template').inject(appPaths.tauriDir) if (injector.injectTemplate()) { log('Tauri template successfully installed') } diff --git a/tauri/bin/tauri.js b/mode/bin/tauri.js similarity index 100% rename from tauri/bin/tauri.js rename to mode/bin/tauri.js diff --git a/tauri/helpers/generator.js b/mode/entry.js similarity index 50% rename from tauri/helpers/generator.js rename to mode/entry.js index 115b2cf3e..52cabc793 100644 --- a/tauri/helpers/generator.js +++ b/mode/entry.js @@ -1,13 +1,13 @@ const compileTemplate = require('lodash.template'), - { readFileSync, writeFileSync } = require('fs'), - appPaths = require('./app-paths'), + { readFileSync, writeFileSync + } = require('fs'), path = require('path') -module.exports = cfg => { +module.exports.generate = (outDir, cfg, tauri = false) => { const apiTemplate = readFileSync(path.resolve(__dirname, '../../lib/tauri.js'), 'utf-8') const apiContent = compileTemplate(apiTemplate)({ ...cfg, - confName: 'tauri.conf.js' + confName: `${tauri ? 'tauri' : 'quasar'}.conf.js` }) - writeFileSync(appPaths.resolve.tauri('tauri.js'), apiContent, 'utf-8') + writeFileSync(path.join(outDir, 'tauri.js'), apiContent, 'utf-8') } diff --git a/mode/generator.js b/mode/generator.js new file mode 100644 index 000000000..3eece577d --- /dev/null +++ b/mode/generator.js @@ -0,0 +1,11 @@ +const + path = require('path'), + { writeFileSync } = require('fs') + +module.exports.generate = tauriConfig => { + const + { bundle, ...cfg } = tauriConfig, + outDir = path.resolve(__dirname, '../..') + writeFileSync(path.join(outDir, 'config.json'), JSON.stringify(cfg)) + writeFileSync(path.join(outDir, 'bundle.json'), JSON.stringify(bundle)) +} diff --git a/tauri/helpers/app-paths.js b/mode/helpers/app-paths.js similarity index 100% rename from tauri/helpers/app-paths.js rename to mode/helpers/app-paths.js diff --git a/tauri/helpers/logger.js b/mode/helpers/logger.js similarity index 100% rename from tauri/helpers/logger.js rename to mode/helpers/logger.js diff --git a/tauri/helpers/on-shutdown.js b/mode/helpers/on-shutdown.js similarity index 100% rename from tauri/helpers/on-shutdown.js rename to mode/helpers/on-shutdown.js diff --git a/tauri/helpers/spawn.js b/mode/helpers/spawn.js similarity index 100% rename from tauri/helpers/spawn.js rename to mode/helpers/spawn.js diff --git a/tauri/helpers/tauri-config.js b/mode/helpers/tauri-config.js similarity index 100% rename from tauri/helpers/tauri-config.js rename to mode/helpers/tauri-config.js diff --git a/tauri/runner.js b/mode/runner.js similarity index 89% rename from tauri/runner.js rename to mode/runner.js index 4ff868cf8..8434a472e 100644 --- a/tauri/runner.js +++ b/mode/runner.js @@ -1,16 +1,18 @@ const chokidar = require('chokidar'), - debounce = require('lodash.debounce') + debounce = require('lodash.debounce'), + path = require('path') const { spawn } = require('./helpers/spawn'), log = require('./helpers/logger')('app:tauri') onShutdown = require('./helpers/on-shutdown'), - { readFileSync, writeFileSync } = require('fs-extra') + { readFileSync, writeFileSync } = require('fs-extra'), + generator = require('./generator') class TauriRunner { - constructor(appPaths) { - this.appPaths = appPaths + constructor({ modeDir }) { + this.modeDir = modeDir this.pid = 0 this.tauriWatcher = null @@ -35,6 +37,8 @@ class TauriRunner { this.__whitelistApi(cfg, toml) }) + generator.generate(cfg.tauri) + this.url = url const args = ['--url', url] @@ -49,9 +53,9 @@ class TauriRunner { // Start watching for tauri app changes this.tauriWatcher = chokidar .watch([ - this.appPaths.resolve.tauri('src'), - this.appPaths.resolve.tauri('Cargo.toml'), - this.appPaths.resolve.tauri('build.rs') + path.join(this.modeDir, 'src'), + path.join(this.modeDir, 'Cargo.toml'), + path.join(this.modeDir, 'build.rs') ], { watchers: { chokidar: { @@ -72,6 +76,8 @@ class TauriRunner { this.__whitelistApi(cfg, toml) }) + generator.generate(cfg.tauri) + const features = [] if (cfg.tauri.embeddedServer.active) { features.push('embedded-server') @@ -116,7 +122,7 @@ class TauriRunner { cargoArgs.concat(['--']).concat(extraArgs) : cargoArgs, - this.appPaths.tauriDir, + this.modeDir, code => { if (code) { @@ -160,7 +166,7 @@ class TauriRunner { __manipulateToml(callback) { const toml = require('@iarna/toml'), - tomlPath = this.appPaths.resolve.tauri('Cargo.toml'), + tomlPath = path.join(this.modeDir, 'Cargo.toml'), tomlFile = readFileSync(tomlPath), tomlContents = toml.parse(tomlFile) diff --git a/mode/template.js b/mode/template.js new file mode 100644 index 000000000..ccb8b41da --- /dev/null +++ b/mode/template.js @@ -0,0 +1,29 @@ +const { copySync, renameSync, existsSync, mkdirSync } = require('fs-extra'), + path = require('path') + +module.exports.inject = injectPath => { + if (existsSync(injectPath)) { + console.log(`Tauri dir (${injectPath}) not empty.`) + return false + } + mkdirSync(injectPath) + copySync(path.resolve(__dirname, '../templates/rust'), injectPath) + const files = require('fast-glob').sync(['**/_*'], { + cwd: injectPath + }) + for (const rawPath of files) { + const targetRelativePath = rawPath.split('/').map(name => { + // dotfiles are ignored when published to npm, therefore in templates + // we need to use underscore instead (e.g. "_gitignore") + if (name.charAt(0) === '_' && name.charAt(1) !== '_') { + return `.${name.slice(1)}` + } + if (name.charAt(0) === '_' && name.charAt(1) === '_') { + return `${name.slice(1)}` + } + return name + }).join('/') + renameSync(path.join(injectPath, rawPath), path.join(injectPath, targetRelativePath)) + } + return true +} diff --git a/package.json b/package.json index b79f29f67..dc2ce5ca1 100644 --- a/package.json +++ b/package.json @@ -2,9 +2,8 @@ "name": "@quasar/tauri", "version": "1.0.0-alpha.0", "description": "Multi-binding collection of libraries and templates for building Tauri", - "main": "tauri/lib.js", "bin": { - "tauri": "tauri/bin/tauri.js" + "tauri": "mode/bin/tauri.js" }, "scripts": { "test": "echo \"Error: no test specified\" && exit 1" diff --git a/tauri/injector.js b/tauri/injector.js deleted file mode 100644 index ae679e8cf..000000000 --- a/tauri/injector.js +++ /dev/null @@ -1,41 +0,0 @@ -const { copySync, renameSync, existsSync, mkdirSync } = require('fs-extra'), - path = require('path') - -class TauriInjector { - constructor(appPaths) { - this.appPaths = appPaths - } - - configDir() { - return path.resolve(__dirname, '..') - } - - injectTemplate() { - if (existsSync(this.appPaths.tauriDir)) { - console.log(`Tauri dir (${this.appPaths.tauriDir}) not empty.`) - return false - } - mkdirSync(this.appPaths.tauriDir) - copySync(path.resolve(__dirname, '../templates/rust'), this.appPaths.tauriDir) - const files = require('fast-glob').sync(['**/_*'], { - cwd: this.appPaths.tauriDir - }) - for (const rawPath of files) { - const targetRelativePath = rawPath.split('/').map(name => { - // dotfiles are ignored when published to npm, therefore in templates - // we need to use underscore instead (e.g. "_gitignore") - if (name.charAt(0) === '_' && name.charAt(1) !== '_') { - return `.${name.slice(1)}` - } - if (name.charAt(0) === '_' && name.charAt(1) === '_') { - return `${name.slice(1)}` - } - return name - }).join('/') - renameSync(this.appPaths.resolve.tauri(rawPath), this.appPaths.resolve.tauri(targetRelativePath)) - } - return true - } -} - -module.exports = TauriInjector diff --git a/tauri/lib.js b/tauri/lib.js deleted file mode 100644 index 9c6fd5faf..000000000 --- a/tauri/lib.js +++ /dev/null @@ -1,9 +0,0 @@ -const TauriRunner = require('./runner'), - TauriInjector = require('./injector'), - path = require('path') - -module.exports = { - runner: TauriRunner, - injector: TauriInjector, - apiTemplatePath: path.resolve(__dirname, '../lib/tauri.js') -}