Comipoli JXA 版はココにきて色々問題が出て困っている。
Fedora で作成した日本語入り cbz が開けなかったり…
コンパイルすると起動引数を受け付けないとか…
他色々…
間違いを堂々と書いていたり、私ってほんとバカ(古い
JXA NSOpenPanel | PaePoi
後で修正するのも面倒なので確実なものだけ書くようにしたい。
そういえば unrar や 7za がインストールしてあるか確認しないと。
JXA では、えっと。
#!/usr/bin/osascript
ObjC.import("Cocoa");
function isCommandExist(cmd) {
let task = $.NSTask.new;
let pipe = $.NSPipe.pipe;
task.standardOutput = pipe;
task.standardError = pipe;
task.launchPath = "/usr/bin/type";
task.arguments = $([cmd]);
task.launch;
task.waitUntilExit;
return task.terminationStatus === 0;
}
console.log(isCommandExist("unzip"));
console.log(isCommandExist("unrar"));
これでいいか。
stdout, stderror を吐かないように pipe に入れて捨てている。
> /dev/null を配列にいれるとエラーになった。
ところで zipinfo -1 という素敵な手段を今頃知った。
unzip -Z -1 でもいい。
if (/\.(cbz|zip)$/i.test(path)) {
this.status = 0;
this.namelist = [];
//let output = this.getString(["unzip", "-Z", path]);
let output = this.getString(["zipinfo", "-1", path]);
let list = output.split("\n");
for (let line of list) {
if (PICEXT.test(line)) {
this.namelist.push(line);
}
/*if (line.startsWith("-")) {
let name = line.slice(53);
if (PICEXT.test(name)) {
this.namelist.push(name);
}
}*/
}
this.namelist.sort();
}
今まで何を。。。。。
Fedora も同様だった。
オリジナルも次はこれにしよう。