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 も同様だった。
オリジナルも次はこれにしよう。