tabby/terminus-terminal/src/shells/linuxDefault.ts
2019-05-17 23:48:59 +02:00

45 lines
1.3 KiB
TypeScript

import * as fs from 'mz/fs'
import { Injectable } from '@angular/core'
import { HostAppService, Platform, LogService, Logger } from 'terminus-core'
import { ShellProvider, IShell } from '../api'
/** @hidden */
@Injectable()
export class LinuxDefaultShellProvider extends ShellProvider {
private logger: Logger
constructor (
private hostApp: HostAppService,
log: LogService,
) {
super()
this.logger = log.create('linuxDefaultShell')
}
async provide (): Promise<IShell[]> {
if (this.hostApp.platform !== Platform.Linux) {
return []
}
let line = (await fs.readFile('/etc/passwd', { encoding: 'utf-8' }))
.split('\n').find(x => x.startsWith(process.env.LOGNAME + ':'))
if (!line) {
this.logger.warn('Could not detect user shell')
return [{
id: 'default',
name: 'User default',
command: '/bin/sh',
env: {},
}]
} else {
return [{
id: 'default',
name: 'User default',
command: line.split(':')[6],
args: ['--login'],
hidden: true,
env: {},
}]
}
}
}