mirror of
https://github.com/Eugeny/tabby.git
synced 2025-07-20 02:18:01 +00:00
.
This commit is contained in:
@@ -131,7 +131,7 @@ start = () => {
|
||||
width: 800,
|
||||
height: 400,
|
||||
//icon: `${app.getAppPath()}/assets/img/icon.png`,
|
||||
title: 'Term',
|
||||
title: 'Terminus',
|
||||
minWidth: 300,
|
||||
minHeight: 100,
|
||||
'web-preferences': {'web-security': false},
|
||||
|
@@ -2,6 +2,10 @@
|
||||
"name": "terminus",
|
||||
"version": "0.0.1",
|
||||
"main": "main.js",
|
||||
"scripts": {
|
||||
"build": "../node_modules/.bin/webpack --progress --color --display-modules",
|
||||
"watch": "../node_modules/.bin/webpack --progress --color --watch"
|
||||
},
|
||||
"dependencies": {
|
||||
"@angular/animations": "4.0.1",
|
||||
"@angular/common": "4.0.1",
|
||||
@@ -15,6 +19,7 @@
|
||||
"electron-config": "0.2.1",
|
||||
"electron-debug": "1.0.1",
|
||||
"electron-is-dev": "0.1.2",
|
||||
"fs-promise": "^2.0.2",
|
||||
"js-yaml": "3.8.2",
|
||||
"path": "0.12.7",
|
||||
"rxjs": "5.3.0",
|
||||
|
@@ -1,28 +1,23 @@
|
||||
import { NgModule } from '@angular/core'
|
||||
import { BrowserModule } from '@angular/platform-browser'
|
||||
import { NgbModule } from '@ng-bootstrap/ng-bootstrap'
|
||||
import { loadPlugins } from './plugins'
|
||||
|
||||
const projectRoot = '/home/eugene/Work/term/'
|
||||
if (process.env.DEV) {
|
||||
(<any>global).require('module').globalPaths.push(projectRoot);
|
||||
(<any>global).require('module').globalPaths.push(projectRoot + 'app/node_modules')
|
||||
}
|
||||
|
||||
let plugins = [
|
||||
(<any>global).require(projectRoot + 'terminus-settings').default,
|
||||
(<any>global).require(projectRoot + 'terminus-terminal').default,
|
||||
(<any>global).require(projectRoot + 'terminus-clickable-links').default,
|
||||
(<any>global).require(projectRoot + 'terminus-community-color-schemes').default,
|
||||
(<any>global).require(projectRoot + 'terminus-theme-hype').default,
|
||||
]
|
||||
|
||||
const core = (<any>global).require(projectRoot + 'terminus-core')
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
core.AppRootModule.forRoot(),
|
||||
...plugins,
|
||||
export async function getRootModule(): Promise<any> {
|
||||
let plugins = await loadPlugins()
|
||||
let imports = [
|
||||
BrowserModule,
|
||||
...(plugins.map(x => x.default.forRoot ? x.default.forRoot() : x.default)),
|
||||
NgbModule.forRoot(),
|
||||
],
|
||||
bootstrap: [core.AppRootComponent]
|
||||
})
|
||||
export class RootModule { }
|
||||
]
|
||||
let bootstrap = [
|
||||
...(plugins.filter(x => x.bootstrap).map(x => x.bootstrap)),
|
||||
]
|
||||
|
||||
@NgModule({
|
||||
imports,
|
||||
bootstrap,
|
||||
}) class RootModule { }
|
||||
|
||||
return RootModule
|
||||
}
|
||||
|
@@ -3,12 +3,11 @@
|
||||
import 'core-js'
|
||||
import 'zone.js/dist/zone.js'
|
||||
import 'core-js/es7/reflect'
|
||||
import 'jquery'
|
||||
|
||||
// Always land on the start view
|
||||
location.hash = ''
|
||||
|
||||
import { RootModule } from './app.module'
|
||||
import { getRootModule } from './app.module'
|
||||
import { enableProdMode } from '@angular/core'
|
||||
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'
|
||||
|
||||
@@ -18,8 +17,6 @@ if ((<any>global).require('electron-is-dev')) {
|
||||
enableProdMode()
|
||||
}
|
||||
|
||||
(<any>console).timeStamp('angular bootstrap started')
|
||||
platformBrowserDynamic().bootstrapModule(RootModule);
|
||||
|
||||
|
||||
(<any>process).emitWarning = function () { console.log(arguments) }
|
||||
getRootModule().then(module => {
|
||||
platformBrowserDynamic().bootstrapModule(module)
|
||||
})
|
||||
|
32
app/src/plugins.ts
Normal file
32
app/src/plugins.ts
Normal file
@@ -0,0 +1,32 @@
|
||||
import * as fs from 'fs-promise'
|
||||
import * as path from 'path'
|
||||
|
||||
let nodeRequire = (<any>global).require
|
||||
let module = nodeRequire('module')
|
||||
nodeRequire.main.paths.map(x => module.globalPaths.push(x))
|
||||
if (process.env.TERMINUS_PLUGINS) {
|
||||
process.env.TERMINUS_PLUGINS.split(':').map(x => module.globalPaths.push(x))
|
||||
}
|
||||
|
||||
export async function loadPlugins (): Promise<any[]> {
|
||||
let paths = module.globalPaths
|
||||
let plugins: any[] = []
|
||||
for (let pluginDir of paths) {
|
||||
if (!await fs.exists(pluginDir)) {
|
||||
continue
|
||||
}
|
||||
for (let pluginName of await fs.readdir(pluginDir)) {
|
||||
if (/^terminus-/.exec(pluginName)) {
|
||||
let pluginPath = path.join(pluginDir, pluginName)
|
||||
console.info(`Loading ${pluginName}: ${nodeRequire.resolve(pluginPath)}`)
|
||||
try {
|
||||
let pluginModule = nodeRequire(pluginPath)
|
||||
plugins.push(pluginModule)
|
||||
} catch (error) {
|
||||
console.error(`Could not load ${pluginName}:`, error)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return plugins
|
||||
}
|
38
app/tsconfig.json
Normal file
38
app/tsconfig.json
Normal file
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"baseUrl": "./src",
|
||||
"module": "commonjs",
|
||||
"target": "es5",
|
||||
"declaration": false,
|
||||
"noImplicitAny": false,
|
||||
"removeComments": false,
|
||||
"emitDecoratorMetadata": true,
|
||||
"experimentalDecorators": true,
|
||||
"sourceMap": true,
|
||||
"noUnusedParameters": true,
|
||||
"noImplicitReturns": true,
|
||||
"noFallthroughCasesInSwitch": true,
|
||||
"noUnusedParameters": true,
|
||||
"noUnusedLocals": true,
|
||||
"lib": [
|
||||
"dom",
|
||||
"es2015",
|
||||
"es2015.iterable.ts",
|
||||
"es7"
|
||||
]
|
||||
},
|
||||
"compileOnSave": false,
|
||||
"exclude": [
|
||||
"node_modules",
|
||||
"*/node_modules",
|
||||
"terminus*",
|
||||
"platforms"
|
||||
],
|
||||
"filesGlob" : [
|
||||
"app/src/*.ts",
|
||||
"app/src/**/*.ts",
|
||||
"!node_modules/**",
|
||||
"!app/node_modules/**",
|
||||
"!*/node_modules/**"
|
||||
]
|
||||
}
|
@@ -25,8 +25,10 @@ module.exports = {
|
||||
loaders: [
|
||||
{
|
||||
test: /\.ts$/,
|
||||
use: 'awesome-typescript-loader',
|
||||
exclude: [/node_modules/]
|
||||
loader: 'awesome-typescript-loader',
|
||||
options: {
|
||||
configFileName: path.resolve(__dirname, 'tsconfig.json'),
|
||||
}
|
||||
},
|
||||
{
|
||||
test: /\.scss$/,
|
||||
@@ -40,14 +42,14 @@ module.exports = {
|
||||
test: /\.(png|svg)$/,
|
||||
loader: "file-loader",
|
||||
options: {
|
||||
name: 'images/[name].[hash:8].[ext]'
|
||||
name: 'images/[name].[ext]'
|
||||
}
|
||||
},
|
||||
{
|
||||
test: /\.(ttf|eot|otf|woff|woff2)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
|
||||
loader: "file-loader",
|
||||
options: {
|
||||
name: 'fonts/[name].[hash:8].[ext]'
|
||||
name: 'fonts/[name].[ext]'
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -60,6 +62,9 @@ module.exports = {
|
||||
'@angular/forms': 'commonjs @angular/forms',
|
||||
'@angular/common': 'commonjs @angular/common',
|
||||
'@ng-bootstrap/ng-bootstrap': 'commonjs @ng-bootstrap/ng-bootstrap',
|
||||
'fs-promise': 'commonjs fs-promise',
|
||||
'module': 'commonjs module',
|
||||
'path': 'commonjs path',
|
||||
'rxjs': 'commonjs rxjs',
|
||||
'zone.js': 'commonjs zone.js',
|
||||
},
|
||||
|
Reference in New Issue
Block a user