標準愚痴出力

個人的なIT作業ログです。もしかしたら一般的に参考になることが書いているかもしれません(弱気

(リリース予告)NYAGOS 4.4.6_0

現在、まだ手元で試験運用中ですが、次の nyagos では次のような修正が盛り込まれる予定です。公開時期は未定ですが、特に不具合が発覚しなければ連休明けくらいが無難かなと考えています。

なお、master ブランチにはすでにマージされているので、使ってみたい人は AppVeyorの Current Build → Environment:Platform → Artifacts から実行ファイルをダウンロードしてください。

%DATE% と %TIME% を実装した。

以前、記しました %DATE% の展開をサポートした を御覧ください。

nyagos.envdel は削除したディレクトリを戻り値として返すようになった。

こんな感じに使います。

for _,s in pairs{
    nyagos.envdel("PATH",
        "Oracle",
        "Lenovo",
        "Skype",
        "chocolatey",
        "TypeScript",
        "WindowsApps",
        "OpenSSH",
        "dotnet",
        "MinGW")} do
    print("del",s)
end

通常は %PATH% で削除したフォルダーを %NYAGOSPATH% に追加するためなどに使います。

dos/net*.go などを github.com/zetamatta/go-windows-netresource へ移行

サブパッケージ dosnodos で定義していた、下請けの汎用関数を別のパッケージ

で独立管理するようにしました。

(#379) nyagos.preexechook & postexechook を追加

リクエストいただいた仕様追加です。コマンドを発行する直前・直後で呼び出す Lua 関数を設定できるようにしました。こんな感じに使います。

(登録)

nyagos.preexechook = function(args)
    io.write("Call ")
    for i=1,#args do
        io.write("[" .. args[i] .. "]")
    end
    io.write("\n")
end

nyagos.postexechook = function(args)
    io.write("Done ")
    for i=1,#args do
        io.write("[" .. args[i] .. "]")
    end
    io.write("\n")
end

(解除)

nyagos.preexechook = nil
nyagos.postexechook = nil
(#383) 端末がクラッシュした時、無限ループに突入してしまう不具合を修正

junegunn/fzf: A command-line fuzzy finder というツール内で日本語検索をするとターミナルがクラッシュしてしまうのですが、呼び出し元の nyagos がターミナルが消えた後も生き残って CPU リソースを消費し続けてしまうという問題がありました。

クラッシュ自体は fzf とターミナルの問題なのですが、ターミナル無き後も動作するのは nyagos の問題です。調査してみると、どうやら、go-tty.Open が出している go-tty.Open: No process is on the other end of the pipe. というエラーを握りつぶしてしまっていました。 これを「ただちに終了する」よう修正したところ、いつまでも nyagos が残ってしまう問題は解決しました。
(なお、fzf のクラッシュは俺の知ったことではない)

なお、当問題が発覚した当初、ターミナルがないのに残ってしまった nyagos プロセスをゾンビプロセスと表記していましたが、ゾンビプロセスとはプロセス自体は終了しているのにプロセスのテーブルに残っているもので kill できないというもので、nyagos の場合とは明らかに違いました。訂正します。 issue でも、最初は件名を Crash or be zombie on searching Japanese words by fzf だったのを、後から Go into an infinite-loop when the terminal crashes に改めました。

以上