Files
gnome-shell-extension-freon/freon@UshakovVasilii_Github.yahoo.com/commandLineUtil.js
Jonas Malaco cb33301cc7 commandLineUtil: toggle _updated after the callback returns
The callback can be used to process the received data a single time, and
in that case this._updated should only be toggled after the callback has
completed, since other methods may depend on its side effects.

In other scenarios the order does not matter (either way).
2021-04-28 06:38:29 -03:00

55 lines
1.3 KiB
JavaScript

const ByteArray = imports.byteArray;
const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio;
var CommandLineUtil = class {
constructor(){
this._argv = null;
this._updated = false;
}
execute(callback) {
try{
this._callback = callback;
let proc = Gio.Subprocess.new(this._argv,
Gio.SubprocessFlags.STDOUT_PIPE |
Gio.SubprocessFlags.STDERR_PIPE);
proc.communicate_utf8_async(null, null, (proc, result) => {
try {
let [, stdout, stderr] = proc.communicate_utf8_finish(result);
this._output = stdout ? stdout.split('\n') : [];
this._error_output = stderr ? stderr.split('\n') : [];
} catch (e) {
logError(e);
} finally {
callback();
this._updated = true;
}
});
} catch(e){
global.log(e.toString());
}
}
get available(){
return this._argv != null;
}
get updated (){
return this._updated;
}
set updated (updated){
this._updated = updated;
}
destroy(){
this._argv = null;
}
};