cmder.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import * as path from 'path'
  2. import { Injectable } from '@angular/core'
  3. import { HostAppService, Platform } from 'tabby-core'
  4. import { ShellProvider, Shell } from 'tabby-local'
  5. /** @hidden */
  6. @Injectable()
  7. export class CmderShellProvider extends ShellProvider {
  8. constructor (
  9. private hostApp: HostAppService,
  10. ) {
  11. super()
  12. }
  13. async provide (): Promise<Shell[]> {
  14. if (this.hostApp.platform !== Platform.Windows) {
  15. return []
  16. }
  17. if (!process.env.CMDER_ROOT) {
  18. return []
  19. }
  20. return [
  21. {
  22. id: 'cmder',
  23. name: 'Cmder',
  24. command: 'cmd.exe',
  25. args: [
  26. '/k',
  27. path.join(process.env.CMDER_ROOT, 'vendor', 'init.bat'),
  28. ],
  29. icon: require('../icons/cmder.svg'),
  30. env: {
  31. TERM: 'cygwin',
  32. },
  33. },
  34. {
  35. id: 'cmderps',
  36. name: 'Cmder PowerShell',
  37. command: 'powershell.exe',
  38. args: [
  39. '-ExecutionPolicy',
  40. 'Bypass',
  41. '-nologo',
  42. '-noprofile',
  43. '-noexit',
  44. '-command',
  45. `Invoke-Expression '. ''${path.join(process.env.CMDER_ROOT, 'vendor', 'profile.ps1')}'''`,
  46. ],
  47. icon: require('../icons/cmder-powershell.svg'),
  48. env: {},
  49. },
  50. ]
  51. }
  52. }