1
0
Эх сурвалжийг харах

add a custom npm path option (fixes #10)

Eugene Pankov 8 жил өмнө
parent
commit
f2a8eb92a1

+ 1 - 1
terminus-core/src/services/config.service.ts

@@ -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)

+ 2 - 2
terminus-plugin-manager/src/components/pluginsSettingsTab.component.pug

@@ -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 - 0
terminus-plugin-manager/src/config.ts

@@ -0,0 +1,7 @@
+import { ConfigProvider } from 'terminus-core'
+
+export class PluginsConfigProvider extends ConfigProvider {
+    defaults = {
+        npm: 'npm',
+    }
+}

+ 3 - 0
terminus-plugin-manager/src/index.ts

@@ -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: [

+ 5 - 5
terminus-plugin-manager/src/services/pluginManager.service.ts

@@ -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)
     }
     }
 }
 }