mirror of
https://github.com/Eugeny/tabby.git
synced 2025-06-20 11:29:56 +00:00
46 lines
1.3 KiB
TypeScript
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',
|
|
},
|
|
}]
|
|
}
|
|
}
|