git return value insead of logging

addgitService
yann300 4 years ago
parent 5c58b4895f
commit a789fa7f9a
  1. 16
      apps/remix-ide/src/app/panels/terminal.js
  2. 34
      libs/remixd/src/services/gitClient.ts

@ -103,13 +103,7 @@ class Terminal extends Plugin {
})
this.on('scriptRunner', 'error', (msg) => {
this.commands.error.apply(this.commands, msg.data)
})
this.on('git', 'log', (result) => {
this.commands.html(yo`<pre>${result}</pre>`)
})
this.on('git', 'error', (result) => {
this.commands.html(yo`<pre>${result}</pre>`)
})
})
}
onDeactivation () {
@ -117,8 +111,6 @@ class Terminal extends Plugin {
this.off('scriptRunner', 'info')
this.off('scriptRunner', 'warn')
this.off('scriptRunner', 'error')
this.off('git', 'log')
this.off('git', 'error')
}
logHtml (html) {
@ -755,11 +747,13 @@ class Terminal extends Plugin {
}
}
try {
let result
if (script.trim().startsWith('git')) {
await this.call('git', 'execute', script)
result = await this.call('git', 'execute', script)
} else {
await this.call('scriptRunner', 'execute', script)
result = await this.call('scriptRunner', 'execute', script)
}
if (result) self.commands.html(yo`<pre>${result}</pre>`)
done()
} catch (error) {
done(error.message || error)

@ -17,22 +17,24 @@ export class GitClient extends PluginClient {
this.readOnly = readOnly
}
execute (cmd: string) {
assertCommand(cmd)
const options = { cwd: this.currentSharedFolder, shell: true }
const child = spawn(cmd, options)
let result = ''
let error = ''
child.stdout.on('data', (data) => {
result += data.toString()
})
child.stderr.on('data', (err) => {
error += err.toString()
})
child.on('close', () => {
if (error !== '') this.emit('error', error)
else this.emit('log', result)
})
execute (cmd: string) {
assertCommand(cmd)
const options = { cwd: this.currentSharedFolder, shell: true }
const child = spawn(cmd, options)
let result = ''
let error = ''
return new Promise((resolve, reject) => {
child.stdout.on('data', (data) => {
result += data.toString()
})
child.stderr.on('data', (err) => {
error += err.toString()
})
child.on('close', () => {
if (error) reject(error)
else resolve(result)
})
})
}
}

Loading…
Cancel
Save