Ein Atom-Paket von mir öffnet eine Datei im Standard-Datei-Manager des Systems. Unter Linux habe ich eine Reihe von weit verbreiteten Datei-Managern, die ich über den which
-Befehl ausführen und den Pfad zurückgeben möchte.Node.js: Iterating welcher Befehl über ein Array von Binärdateien
Das Problem mit meinem aktuellen Skript ist, dass ich nicht weiß, wie man die Iteration bricht. Das Ausführen dieses Codes protokolliert alle which
Versuche und führt zu jeder verfügbaren Option. Offensichtlich ist dies nicht der Zweck der Iteration.
Coffee (JavaScript unten):
fileManagers: ['xdg-open', 'gnome-open', 'kde-open', 'nautilus', 'dolphin']
@loopWhich (result) ->
console.log "Result: #{result}"
loopWhich: (callback) ->
{exec} = require('child_process')
for fm in @fileManagers
console.log "which: #{fm}"
exec "which #{fm}", (error, stdout, stderr) ->
if error is null
callback stdout
JavaScript (automatisch generiert durch [email protected]
):
({
fileManagers: ['xdg-open', 'gnome-open', 'kde-open', 'nautilus', 'dolphin']
});
this.loopWhich(function(result) {
return console.log("Result: " + result);
});
({
loopWhich: function(callback) {
var exec, fm, i, len, ref, results;
exec = require('child_process').exec;
ref = this.fileManagers;
results = [];
for (i = 0, len = ref.length; i < len; i++) {
fm = ref[i];
console.log("which: " + fm);
results.push(exec("which " + fm, function(error, stdout, stderr) {
if (error === null) {
return callback(stdout);
}
}));
}
return results;
}
});