mirror of
https://github.com/Eugeny/tabby
synced 2024-11-15 01:17:14 +00:00
Merge pull request #9383 from ricado-group/master
Add Support for a Quick Connect CLI command
This commit is contained in:
commit
c9339ea76a
2 changed files with 30 additions and 0 deletions
|
@ -28,6 +28,16 @@ export function parseArgs (argv: string[], cwd: string): any {
|
|||
.command('recent [index]', 'open a tab with a recent profile', {
|
||||
profileNumber: { type: 'number' },
|
||||
})
|
||||
.command('quickConnect <providerId> <query>', 'open a tab for specified quick connect provider', yargs => {
|
||||
return yargs.positional('providerId', {
|
||||
describe: 'The name of a quick connect profile provider',
|
||||
type: 'string',
|
||||
choices: ['ssh', 'telnet'],
|
||||
}).positional('query', {
|
||||
describe: 'The quick connect query string',
|
||||
type: 'string',
|
||||
})
|
||||
})
|
||||
.version(app.getVersion())
|
||||
.option('debug', {
|
||||
alias: 'd',
|
||||
|
|
|
@ -2,6 +2,7 @@ import { Injectable } from '@angular/core'
|
|||
import { HostAppService } from './api/hostApp'
|
||||
import { CLIHandler, CLIEvent } from './api/cli'
|
||||
import { HostWindowService } from './api/hostWindow'
|
||||
import { QuickConnectProfileProvider } from './api/profileProvider'
|
||||
import { ProfilesService } from './services/profiles.service'
|
||||
|
||||
@Injectable()
|
||||
|
@ -27,6 +28,10 @@ export class ProfileCLIHandler extends CLIHandler {
|
|||
this.handleOpenRecentProfile(event.argv.profileNumber)
|
||||
return true
|
||||
}
|
||||
if (op === 'quickConnect') {
|
||||
this.handleOpenQuickConnect(event.argv.providerId, event.argv.query)
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
|
@ -48,6 +53,21 @@ export class ProfileCLIHandler extends CLIHandler {
|
|||
this.profiles.openNewTabForProfile(profiles[profileNumber])
|
||||
this.hostWindow.bringToFront()
|
||||
}
|
||||
|
||||
private async handleOpenQuickConnect (providerId: string, query: string) {
|
||||
const provider = this.profiles.getProviders().find(x => x.id === providerId)
|
||||
if(!provider || !(provider instanceof QuickConnectProfileProvider)) {
|
||||
console.error(`Requested provider "${providerId}" not found`)
|
||||
return
|
||||
}
|
||||
const profile = provider.quickConnect(query)
|
||||
if(!profile) {
|
||||
console.error(`Could not parse quick connect query "${query}"`)
|
||||
return
|
||||
}
|
||||
this.profiles.openNewTabForProfile(profile)
|
||||
this.hostWindow.bringToFront()
|
||||
}
|
||||
}
|
||||
|
||||
@Injectable()
|
||||
|
|
Loading…
Reference in a new issue