mirror of
https://github.com/Eugeny/tabby.git
synced 2025-06-15 17:09:59 +00:00
add a custom npm path option (fixes #10)
This commit is contained in:
parent
48e8ffd729
commit
f2a8eb92a1
@ -67,7 +67,7 @@ export class ConfigService {
|
|||||||
this.defaults = configProviders.map(provider => {
|
this.defaults = configProviders.map(provider => {
|
||||||
let defaults = {}
|
let defaults = {}
|
||||||
if (provider.platformDefaults) {
|
if (provider.platformDefaults) {
|
||||||
defaults = configMerge(defaults, provider.platformDefaults[hostApp.platform])
|
defaults = configMerge(defaults, provider.platformDefaults[hostApp.platform] || {})
|
||||||
}
|
}
|
||||||
if (provider.defaults) {
|
if (provider.defaults) {
|
||||||
defaults = configMerge(defaults, provider.defaults)
|
defaults = configMerge(defaults, provider.defaults)
|
||||||
|
@ -42,11 +42,11 @@ h3 Installed
|
|||||||
|
|
||||||
.text-center.mt-5(*ngIf='npmMissing')
|
.text-center.mt-5(*ngIf='npmMissing')
|
||||||
h4 npm not installed
|
h4 npm not installed
|
||||||
p.mb-2 a(href='https://www.npmjs.com/')npm is required to install Terminus plugins.
|
p.mb-2 npm is required to install Terminus plugins.
|
||||||
.btn-group
|
.btn-group
|
||||||
button.btn.btn-outline-primary((click)='downloadNPM()')
|
button.btn.btn-outline-primary((click)='downloadNPM()')
|
||||||
i.fa.fa-download
|
i.fa.fa-download
|
||||||
span Download NPM
|
span Get npm
|
||||||
button.btn.btn-outline-info((click)='checkNPM()')
|
button.btn.btn-outline-info((click)='checkNPM()')
|
||||||
i.fa.fa-refresh
|
i.fa.fa-refresh
|
||||||
span Try again
|
span Try again
|
||||||
|
7
terminus-plugin-manager/src/config.ts
Normal file
7
terminus-plugin-manager/src/config.ts
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
import { ConfigProvider } from 'terminus-core'
|
||||||
|
|
||||||
|
export class PluginsConfigProvider extends ConfigProvider {
|
||||||
|
defaults = {
|
||||||
|
npm: 'npm',
|
||||||
|
}
|
||||||
|
}
|
@ -4,10 +4,12 @@ import { FormsModule } from '@angular/forms'
|
|||||||
import { NgPipesModule } from 'ngx-pipes'
|
import { NgPipesModule } from 'ngx-pipes'
|
||||||
import { NgbModule } from '@ng-bootstrap/ng-bootstrap'
|
import { NgbModule } from '@ng-bootstrap/ng-bootstrap'
|
||||||
|
|
||||||
|
import { ConfigProvider } from 'terminus-core'
|
||||||
import { SettingsTabProvider } from 'terminus-settings'
|
import { SettingsTabProvider } from 'terminus-settings'
|
||||||
|
|
||||||
import { PluginsSettingsTabComponent } from './components/pluginsSettingsTab.component'
|
import { PluginsSettingsTabComponent } from './components/pluginsSettingsTab.component'
|
||||||
import { PluginManagerService } from './services/pluginManager.service'
|
import { PluginManagerService } from './services/pluginManager.service'
|
||||||
|
import { PluginsConfigProvider } from './config'
|
||||||
import { PluginsSettingsTabProvider } from './settings'
|
import { PluginsSettingsTabProvider } from './settings'
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
@ -19,6 +21,7 @@ import { PluginsSettingsTabProvider } from './settings'
|
|||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
{ provide: SettingsTabProvider, useClass: PluginsSettingsTabProvider, multi: true },
|
{ provide: SettingsTabProvider, useClass: PluginsSettingsTabProvider, multi: true },
|
||||||
|
{ provide: ConfigProvider, useClass: PluginsConfigProvider, multi: true },
|
||||||
PluginManagerService,
|
PluginManagerService,
|
||||||
],
|
],
|
||||||
entryComponents: [
|
entryComponents: [
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { Observable } from 'rxjs'
|
import { Observable } from 'rxjs'
|
||||||
import { Injectable } from '@angular/core'
|
import { Injectable } from '@angular/core'
|
||||||
import { Logger, LogService } from 'terminus-core'
|
import { Logger, LogService, ConfigService } from 'terminus-core'
|
||||||
import { exec } from 'mz/child_process'
|
import { exec } from 'mz/child_process'
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
|
|
||||||
@ -23,17 +23,17 @@ export class PluginManagerService {
|
|||||||
builtinPluginsPath: string = (window as any).builtinPluginsPath
|
builtinPluginsPath: string = (window as any).builtinPluginsPath
|
||||||
userPluginsPath: string = (window as any).userPluginsPath
|
userPluginsPath: string = (window as any).userPluginsPath
|
||||||
installedPlugins: IPluginInfo[] = (window as any).installedPlugins
|
installedPlugins: IPluginInfo[] = (window as any).installedPlugins
|
||||||
npmBinary = 'npm'
|
|
||||||
|
|
||||||
constructor (
|
constructor (
|
||||||
log: LogService,
|
log: LogService,
|
||||||
|
private config: ConfigService,
|
||||||
) {
|
) {
|
||||||
this.logger = log.create('pluginManager')
|
this.logger = log.create('pluginManager')
|
||||||
}
|
}
|
||||||
|
|
||||||
async isNPMInstalled (): Promise<boolean> {
|
async isNPMInstalled (): Promise<boolean> {
|
||||||
try {
|
try {
|
||||||
await exec(`${this.npmBinary} -v`)
|
await exec(`${this.config.store.npm} -v`)
|
||||||
return true
|
return true
|
||||||
} catch (_) {
|
} catch (_) {
|
||||||
return false
|
return false
|
||||||
@ -56,14 +56,14 @@ export class PluginManagerService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async installPlugin (plugin: IPluginInfo) {
|
async installPlugin (plugin: IPluginInfo) {
|
||||||
let result = await exec(`${this.npmBinary} --prefix "${this.userPluginsPath}" install ${plugin.packageName}@${plugin.version}`)
|
let result = await exec(`${this.config.store.npm} --prefix "${this.userPluginsPath}" install ${plugin.packageName}@${plugin.version}`)
|
||||||
console.log(result)
|
console.log(result)
|
||||||
this.installedPlugins = this.installedPlugins.filter(x => x.packageName !== plugin.packageName)
|
this.installedPlugins = this.installedPlugins.filter(x => x.packageName !== plugin.packageName)
|
||||||
this.installedPlugins.push(plugin)
|
this.installedPlugins.push(plugin)
|
||||||
}
|
}
|
||||||
|
|
||||||
async uninstallPlugin (plugin: IPluginInfo) {
|
async uninstallPlugin (plugin: IPluginInfo) {
|
||||||
await exec(`${this.npmBinary} --prefix "${this.userPluginsPath}" remove ${plugin.packageName}`)
|
await exec(`${this.config.store.npm} --prefix "${this.userPluginsPath}" remove ${plugin.packageName}`)
|
||||||
this.installedPlugins = this.installedPlugins.filter(x => x.packageName !== plugin.packageName)
|
this.installedPlugins = this.installedPlugins.filter(x => x.packageName !== plugin.packageName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user