4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Nimでファイルの変更を検知してタスクを実行するタスクランナーmonitを書いた

Last updated at Posted at 2019-09-28

まえがき

先日Nim 1.0.0がリリースされました
Nimにはずっと期待していて、自分も多少公式コンパイラにコミットしたりしていたので、今回の発表はとても嬉しいです。

それはさておいて、Nimでファイル変更監視をして、変更があると任意のタスクを実行するタスクランナーを作りました。
同様のソフトウェアとしてはNode.jsのgulpとかがそれになるでしょうか。

gulpを使ったことないのですが、Node.jsでスクリプトを書かないといけなさそうなのが面倒そうだったのと、さっと設定ファイル(yaml)でタスクを定義できてすぐに導入できる単純なツールがほしかったので、今回Nimで作成してみました。

複雑なタスクは定義できないですが、最低限必要な機能はこさえたつもりです。

成果物

(モニタリングなのでmonitにしましたが、モニタリングだとサーバのリソース監視のほうを想像するような気がした)

使い方

  • monit init で設定ファイルの雛形を生成
  • エディタで .monit.yml を編集
  • monit run でファイル変更監視を開始

デフォルトで nimble buildとnimble testがセットされるようにしています。

設定できること

%YAML 1.2
%TAG !n! tag:nimyaml.org,2016:
--- !n!custom:MonitorConfig 
sleep: 1
targets: 
  - 
    name: Task name
    paths: [src, tests]
    commands:
      - nimble build --hints:off
      - nimble test
    extensions: [.nim]
    files: []
    exclude_extensions: []
    exclude_files: []
    once: y
  • ファイル変更監視の間隔を何秒にするか
  • どのディレクトリ配下のファイルを監視するか
  • どの拡張子のファイルを監視するか、あるいはしないか
  • どのファイルを監視するか、あるいはしないか
  • タスクランナー起動時に一度はタスクを実行する

くらいしか設定を用意していません。
僕がCLIツールをNimや他の言語で書く時に欲しいと思ったのがこれくらいでした。

停止方法

Ctrl-Cで停止するか、.monit.ymlと同じディレクトリに .monit.stop というファイルを配置します。

使用しているライブラリ

おわりに

ライブラリのおかげで思いの外簡単に実装できました。
自動テストもできるようになって、開発が少し楽になってハッピーです。
Nimの開発に役立てば幸いです。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?