Potaufeu v1.0.0 をリリースしました
自作のソフトをリリースしました。
バージョン1.0.0の正式版です。
これは何ですか?
Javaで書いたコマンドラインユーティリティーで、find
みたいな動作をします。
Java8以降のJREが必要です。
GitHubに公開しています。
GitHubのWikiページにユーザーガイドを掲載しています。
インストール
コマンドで自動インストールできるようにしました。
自動インストールには、Bashなどのシェル環境と、curl
とunzip
コマンドが必要です。
もっとも短いコマンドは、
$ curl -L j.mp/instpotf | sh
です。
無駄な出力を出したくない場合は、curl
のオプションを-fsSL
にすると良いです。
とは言っても、野良ソフトをいきなりインストールするのは怖いと思うので、curl -L j.mp/instpotf -o install.sh
でインストールスクリプトをいったんダウンロードして確認してみてください。
このコマンドのURLは、https://raw.githubusercontent.com/argius/potaufeu/master/install.sh
の短縮URLです。
自動インストールについては、Mac(OS X, macOS)、いくつかのLinuxディストリビューション、Windowsの場合はCygwinとBash on Ubuntu on Windowsで動作確認しています。MinGW(Git Bashを含む)は、最小限の環境のため対応を見送っています。1
本体はJavaアプリなので、自動インストールに対応していない環境でも、基本的にはJavaが動作する環境であれば使えます。
Windowsなら、リリースされたZIPをダウンロードしてJarを取り出し、java -jar /path/to/potaufeu-X.X.X.jar %*
(/path/to
はJarを置いた場所)をpotf.bat
ファイルに書いて、そのbat
ファイルをどこかパスの通っているディレクトリーに置けばOKです。
使ってみる
インストールに成功したら、まずpotf --help
でヘルプを表示してみて、それから以下のコマンドを試してみて下さい。
コマンドライン引数に何も指定しないと、find
と同じくカレントディレクトリーから全てのファイルを検索しますので注意してください。
$ potf --depth 1 --heads -FL
これは、「カレントディレクトリーに対して(デフォルトの動作)、最大の再帰深度を1(--depth 1
)にして、ディレクトリーを除くファイル(-F
)の最初の10件(--heads
= --head 10
)をPOSIX風に出力(-L
)」という意味です。
Potaufeuは、find
ほど多機能ではないけれど、簡潔で直観的な入力で実行できるのが特徴です。
$ potf -d src -d tmp .java Test -t 201705- -L
このコマンドは、
- カレントディレクトリーのサブディレクトリーである
src
とtmp
を対象に(-d src -d tmp
)、 - 拡張子
.java
のファイル(.java
)である、 - かつ、パスのどこかに
Test
が含まれる、 - かつ、最終更新日時が2017年5月以降(
-t 201705-
、実際には2017-05-01 00:00:00以降という意味)である - 上記条件に合致するファイルをPOSIX風リストですべて出力
します。2と3はオプションではなく、パターンを表す基本の引数です。
一部を除いて、OR条件を指定できないのが貧弱なところですが…今後の課題です。
globや正規表現も使えるようにしたいですね。
どちらも実装はそれほど難しくなくて、記法さえ決まればすぐに導入したいところです。
このツールのもうひとつの特徴として、対話モードというのがあります。 まだ機能は充実していませんが、検索結果をいったんメモリー上に保存して、さらに絞り込んだり、結果を合成したり、保存・復元したりできます。
対話モード以外では、基本的に読取専用の処理しかしないはずなので、ヘルプとユーザーガイドを参考にして試してみて下さい。
リリースまでの経緯
個人的に欲しかった機能を、最低限の完成品としたものがこのソフトです。
Javaを使っているのは、複数のOSで同じバイナリーを扱えて楽だからです。
(ただ、良く考えてみると、このリリース方式を使えばGoみたいなクロスコンパイルしたものでも行けそうな気がしてきました。なので、使い慣れていてコンパクトだからということにしておきます。)
すでに類似のものを作っていましたが、いくつか不満がありました。
- コードベースが古すぎるのでもう触りたくない(Java5以前)
- インストールが面倒
これらを改善すべく、Java8でラムダやストリームが使えるようになったことだし、これを使って作ってみることにしました。
最初のベータ版が2年前で、2か月ほど開発していたものの、それから2年近く放置してしまいました。
個人的にちゃんと使える状態にしておきたかったので少しやる気がでて、なんとか最初の安定版までは頑張ろうと思い、やっとリリースできました。
実装はJava8の新機能を使いまくっているので、Java8以降でないと(今回の方法では)作れなかったのですが、それ以外は特に難しいこともなかったので3年前には完成させておきたかったんですけどね。
(おわり)