diff --git a/.gitignore b/.gitignore index 0b100f4b..31a929ea 100644 --- a/.gitignore +++ b/.gitignore @@ -1,19 +1,10 @@ app/node_modules -app/src/daemonInstaller.generated.js app/assets/webpack -app/elements-native.node node_modules -typings build/files.wxs -native/windows/build -native/mac/build -native/linux/build -native/build dist -driver/build -driver/obj *.xcworkspacedata *.xcuserstate @@ -22,3 +13,5 @@ driver/obj coverage .nyc_output npm-debug.log + +builtin-plugins diff --git a/Makefile b/Makefile index 2dc63dce..ec6c26ee 100644 --- a/Makefile +++ b/Makefile @@ -3,6 +3,8 @@ MAC_OUTPUT="./dist/Elements-Electron.pkg" FULL_VERSION=$(shell python -c 'import subprocess; v = subprocess.check_output("git describe --tags --long", shell=True).strip()[1:]; print(v.split("-0-g")[0])') SHORT_VERSION=$(shell python -c 'import subprocess; v = subprocess.check_output("git describe --tags --long", shell=True).strip()[1:].split("-")[0]; print(v)') +builtin_plugins = terminus-core terminus-settings terminus-terminal + all: run run: @@ -20,7 +22,7 @@ watch: install-deps: npm install npm prune - for dir in app terminus-* ; do \ + for dir in app $(builtin_plugins) ; do \ cd $$dir; \ npm install; \ npm prune; \ @@ -32,39 +34,29 @@ build-native: ./node_modules/.bin/electron-rebuild -f -w terminus-terminal/node_modules/node-pty -m terminus-terminal ./node_modules/.bin/electron-rebuild -f -w terminus-terminal/node_modules/font-manager -m terminus-terminal -build-native-windows: - echo :: Building native extensions - rm -r ./native/windows/build || true - cd native/windows && node-gyp rebuild --target=1.4.12 --arch=x64 --dist-url=https://atom.io/download/atom-shell - mkdir native/build || true - cp ./native/windows/build/Release/elements-native.node ./app/ - -build-native-mac: - echo :: Building native extensions - rm -r ./native/mac/build || true - cd native/mac && node-gyp rebuild --target=1.4.12 --arch=x64 --dist-url=https://atom.io/download/atom-shell - mkdir native/build || true - cp ./native/mac/build/Release/elements-native.node ./app/ - -build-native-linux: - echo :: Building native extensions - rm -r ./native/linux/build || true - cd native/linux && node-gyp rebuild --target=1.4.12 --arch=x64 --dist-url=https://atom.io/download/atom-shell - mkdir native/build || true - cp ./native/linux/build/Release/elements-native.node ./app/ - -build-windows: build-native-windows +build-windows: echo :: Building application ./node_modules/.bin/build --dir --win --em.version=$(FULL_VERSION) cp ./app/assets/img/disk.ico dist/win-unpacked/ -build-mac: build-native-mac +build-mac: echo :: Building application ./node_modules/.bin/build --dir --mac --em.version=$(FULL_VERSION) -build-linux: build-native-linux +build-linux: echo :: Building application + mkdir builtin-plugins || true + echo '{}' > builtin-plugins/package.json + + cd builtin-plugins && for dir in $(builtin_plugins) ; do \ + npm install ../$$dir; \ + done + + cd builtin-plugins && npm dedupe + ./node_modules/.bin/electron-rebuild -f -m builtin-plugins -w node-pty,font-manager + ./node_modules/.bin/build --linux --em.version=$(FULL_VERSION) + rm -r builtin-plugins || true package-windows-app: echo :: Building app MSI $(SHORT_VERSION) diff --git a/app/package.json b/app/package.json index e0e4e800..4a1e8fb0 100644 --- a/app/package.json +++ b/app/package.json @@ -1,6 +1,7 @@ { "name": "terminus", - "version": "0.0.1", + "description": "A terminal for a modern age", + "author": "Eugene Pankov", "main": "main.js", "scripts": { "build": "../node_modules/.bin/webpack --progress --color --display-modules", diff --git a/app/src/plugins.ts b/app/src/plugins.ts index c0ff98ff..53913aa4 100644 --- a/app/src/plugins.ts +++ b/app/src/plugins.ts @@ -12,6 +12,12 @@ function normalizePath (path: string): string { }; (global).require.main.paths.map(x => nodeModule.globalPaths.push(normalizePath(x))) +nodeModule.globalPaths.unshift( + path.join( + path.dirname(require('electron').remote.app.getPath('exe')), + 'resources/builtin-plugins/node_modules', + ) +) if (process.env.TERMINUS_PLUGINS) { process.env.TERMINUS_PLUGINS.split(':').map(x => nodeModule.globalPaths.unshift(normalizePath(x))) diff --git a/app/webpack.config.js b/app/webpack.config.js index 63de2cf1..32b48fec 100644 --- a/app/webpack.config.js +++ b/app/webpack.config.js @@ -56,6 +56,7 @@ module.exports = { '@angular/common': 'commonjs @angular/common', '@ng-bootstrap/ng-bootstrap': 'commonjs @ng-bootstrap/ng-bootstrap', 'fs-promise': 'commonjs fs-promise', + 'electron': 'commonjs electron', 'module': 'commonjs module', 'path': 'commonjs path', 'rxjs': 'commonjs rxjs', diff --git a/package.json b/package.json index 9ae64968..b38f963e 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "cross-env": "^4.0.0", "css-loader": "0.26.1", "electron": "1.6.2", - "electron-builder": "10.6.1", + "electron-builder": "^17.1.1", "electron-osx-sign": "electron-userland/electron-osx-sign#f092181a1bffa2b3248a23ee28447a47e14a8f04", "electron-rebuild": "1.5.7", "file-loader": "^0.9.0", @@ -41,6 +41,9 @@ "appId": "com.elements.benchmark", "productName": "ELEMENTS Benchmark", "compression": "normal", + "extraResources": [ + "builtin-plugins" + ], "win": { "target": "zip", "icon": "./app/assets/img/shortcut.ico" diff --git a/terminus-clickable-links/package.json b/terminus-clickable-links/package.json index ce4226ee..9ed43287 100644 --- a/terminus-clickable-links/package.json +++ b/terminus-clickable-links/package.json @@ -8,6 +8,7 @@ "build": "webpack --progress --color", "watch": "webpack --progress --color --watch" }, + "files": ["dist"], "author": "Eugene Pankov", "license": "MIT", "devDependencies": { diff --git a/terminus-community-color-schemes/package.json b/terminus-community-color-schemes/package.json index 24312f75..333bc011 100644 --- a/terminus-community-color-schemes/package.json +++ b/terminus-community-color-schemes/package.json @@ -8,6 +8,7 @@ "build": "webpack --progress --color", "watch": "webpack --progress --color --watch" }, + "files": ["dist"], "author": "Eugene Pankov", "license": "MIT", "peerDependencies": { diff --git a/terminus-core/package.json b/terminus-core/package.json index 74d1b6ee..ca58e41e 100644 --- a/terminus-core/package.json +++ b/terminus-core/package.json @@ -8,6 +8,7 @@ "build": "rm -rf dist && webpack --progress --color --display-modules", "watch": "rm -rf dist && webpack --progress --color --watch" }, + "files": ["dist"], "author": "Eugene Pankov", "license": "MIT", "devDependencies": { diff --git a/terminus-settings/package.json b/terminus-settings/package.json index 361595cb..87702340 100644 --- a/terminus-settings/package.json +++ b/terminus-settings/package.json @@ -8,6 +8,7 @@ "build": "webpack --progress --color --display-modules", "watch": "webpack --progress --color --watch" }, + "files": ["dist"], "author": "Eugene Pankov", "license": "MIT", "devDependencies": { diff --git a/terminus-terminal/package.json b/terminus-terminal/package.json index ddad79a3..43637da3 100644 --- a/terminus-terminal/package.json +++ b/terminus-terminal/package.json @@ -8,6 +8,7 @@ "build": "webpack --progress --color --display-modules", "watch": "webpack --progress --color --watch" }, + "files": ["dist"], "author": "Eugene Pankov", "license": "MIT", "devDependencies": { diff --git a/terminus-terminal/src/components/terminalTab.component.ts b/terminus-terminal/src/components/terminalTab.component.ts index a1712a02..a33d671f 100644 --- a/terminus-terminal/src/components/terminalTab.component.ts +++ b/terminus-terminal/src/components/terminalTab.component.ts @@ -1,5 +1,5 @@ import { BehaviorSubject, ReplaySubject, Subject, Subscription } from 'rxjs' -import { Component, NgZone, Inject, ViewChild, HostBinding, Input } from '@angular/core' +import { Component, NgZone, Inject, Optional, ViewChild, HostBinding, Input } from '@angular/core' import { AppService, ConfigService, BaseTabComponent, ThemesService, HostAppService, Platform } from 'terminus-core' import { Session } from '../services/sessions.service' @@ -36,9 +36,10 @@ export class TerminalTabComponent extends BaseTabComponent { private themes: ThemesService, private hostApp: HostAppService, public config: ConfigService, - @Inject(TerminalDecorator) private decorators: TerminalDecorator[], + @Optional() @Inject(TerminalDecorator) private decorators: TerminalDecorator[], ) { super() + this.decorators = this.decorators || [] this.configSubscription = config.change.subscribe(() => { this.configure() }) diff --git a/terminus-theme-hype/package.json b/terminus-theme-hype/package.json index 5f5577a6..521b5bec 100644 --- a/terminus-theme-hype/package.json +++ b/terminus-theme-hype/package.json @@ -7,6 +7,7 @@ "build": "webpack --progress --color", "watch": "webpack --progress --color --watch" }, + "files": ["dist"], "author": "Eugene Pankov", "license": "MIT", "peerDependencies": {