mirror of
https://github.com/Eugeny/tabby.git
synced 2025-06-18 02:19:57 +00:00
49 lines
1.3 KiB
TypeScript
49 lines
1.3 KiB
TypeScript
import * as fs from 'fs/promises'
|
|
import * as path from 'path'
|
|
import { Injectable } from '@angular/core'
|
|
import { HostAppService, Platform } from 'tabby-core'
|
|
|
|
import { ShellProvider, Shell } from '../api'
|
|
|
|
/** @hidden */
|
|
@Injectable()
|
|
export class MSYS2ShellProvider extends ShellProvider {
|
|
constructor (
|
|
private hostApp: HostAppService,
|
|
) {
|
|
super()
|
|
}
|
|
|
|
async provide (): Promise<Shell[]> {
|
|
if (this.hostApp.platform !== Platform.Windows) {
|
|
return []
|
|
}
|
|
|
|
const msys2Path = path.resolve(process.env.SystemRoot ?? 'C:\\Windows', '../msys64')
|
|
try {
|
|
await fs.access(msys2Path)
|
|
} catch {
|
|
return []
|
|
}
|
|
|
|
let homePath: string|undefined = path.resolve(msys2Path, 'home', process.env.USERNAME!)
|
|
try {
|
|
await fs.access(msys2Path)
|
|
} catch {
|
|
homePath = undefined
|
|
}
|
|
|
|
const environments = ['msys', 'mingw64', 'clang64', 'ucrt64']
|
|
|
|
return environments.map(e => ({
|
|
id: `msys2-${e}`,
|
|
name: `MSYS2 (${e.toUpperCase()})`,
|
|
command: path.join(msys2Path, 'msys2_shell.cmd'),
|
|
args: ['-defterm', '-here', '-no-start', '-' + e],
|
|
icon: require('../icons/msys2.svg'),
|
|
env: {},
|
|
cwd: homePath,
|
|
}))
|
|
}
|
|
}
|