tabby/terminus-terminal/src/shells/powershellCore.ts
2019-06-14 23:47:48 +02:00

46 lines
1.3 KiB
TypeScript

import { Injectable } from '@angular/core'
import { DomSanitizer } from '@angular/platform-browser'
import { HostAppService, Platform } from 'terminus-core'
import { ShellProvider } from '../api/shellProvider'
import { Shell } from '../api/interfaces'
/* eslint-disable block-scoped-var */
try {
var wnr = require('windows-native-registry') // eslint-disable-line @typescript-eslint/no-var-requires
} catch { }
/** @hidden */
@Injectable()
export class PowerShellCoreShellProvider extends ShellProvider {
constructor (
private domSanitizer: DomSanitizer,
private hostApp: HostAppService,
) {
super()
}
async provide (): Promise<Shell[]> {
if (this.hostApp.platform !== Platform.Windows) {
return []
}
const pwshPath = wnr.getRegistryValue(wnr.HK.LM, 'SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\pwsh.exe', '')
if (!pwshPath) {
return []
}
return [{
id: 'powershell-core',
name: 'PowerShell Core',
command: pwshPath,
args: ['-nologo'],
icon: this.domSanitizer.bypassSecurityTrustHtml(require('../icons/powershell-core.svg')),
env: {
TERM: 'cygwin',
},
}]
}
}