2019-05-17 23:48:59 +02:00

60 lines
1.7 KiB
TypeScript

import * as path from 'path'
import { Injectable } from '@angular/core'
import { DomSanitizer } from '@angular/platform-browser'
import { HostAppService, Platform } from 'terminus-core'
import { ShellProvider, IShell } from '../api'
/** @hidden */
@Injectable()
export class CmderShellProvider extends ShellProvider {
constructor (
private domSanitizer: DomSanitizer,
private hostApp: HostAppService,
) {
super()
}
async provide (): Promise<IShell[]> {
if (this.hostApp.platform !== Platform.Windows) {
return []
}
if (!process.env.CMDER_ROOT) {
return []
}
return [
{
id: 'cmder',
name: 'Cmder',
command: 'cmd.exe',
args: [
'/k',
path.join(process.env.CMDER_ROOT, 'vendor', 'init.bat'),
],
icon: this.domSanitizer.bypassSecurityTrustHtml(require('../icons/cmder.svg')),
env: {
TERM: 'cygwin',
}
},
{
id: 'cmderps',
name: 'Cmder PowerShell',
command: 'powershell.exe',
args: [
'-ExecutionPolicy',
'Bypass',
'-nologo',
'-noprofile',
'-noexit',
'-command',
`Invoke-Expression '. ''${path.join(process.env.CMDER_ROOT, 'vendor', 'profile.ps1')}'''`
],
icon: this.domSanitizer.bypassSecurityTrustHtml(require('../icons/cmder-powershell.svg')),
env: {},
},
]
}
}