2017/03/09

YukiTask を MSYS2 on Windows 環境で試した

結城タスク / YukiTask - A Simple Task Manager for Command Line Lovers. が気になったので、 Windows で使えないか試行錯誤してみた。その作業記録。

前提環境

  • OS : Windows 10 Pro 64bit
  • MSYS2 環境インストール済み
    • /etc/fstab/C/Users/mikoto を指定しているので、「Windows のホームディレクトリ == MSYS2 環境のホームディレクトリ」になっている状態
  • RubyInstaller for Windows の 2.3.3 をインストール済みなので、これを使用する

作業ログ

Setup YukiTask を参照しながらセットアップ。 (今回はお試しなので、 .bashrc に追記しないで試している。)

$ cd ~project
$ wget https://github.com/hyuki0000/yukitask/archive/master.zip
$ unzip master.zip
$ cd yukitask-master
$ mv yukitask/ ~

$ export EDITOR=~/app/vim80-kaoriya-win64/gvim.exe
$ export PATH=~/yukitask:$PATH
$ export PATH=$PATH:/C/Ruby23-x64/bin/
$ source ~/yukitask/command_aliases
$ source ~/yukitask/here_aliases

導入はできたはずなので YukiTask TODO management を試してみる。

$ mkdir ~/project/yukitask_practice
$ cd ~/project/yukitask_practice
$ here yukitask_practice
'pbcopy' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
~/yukitask/here_aliases is updated.
alias yukitask_practice='pushd C:/Users/mikoto/project/yukitask_practice; show_todo'
Execute Command+V on the command line to update aliases.

pbcopy がないのか...。 pbcopy の代替設定を行って再挑戦。

$ function pbcopy() {
>     echo $* > /dev/clipboard
> }
$ cd ~/project/yukitask_practice
$ here yukitask_practice
'pbcopy' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
~/yukitask/here_aliases is updated.
alias yukitask_practice='pushd C:/Users/mikoto/project/yukitask_practice; show_todo'
Execute Command+V on the command line to update aliases.

あー...。 ~/yukitask/here が Ruby スクリプトで、 system() でコマンド実行しているから functioin で関数定義するだけじゃ無理なのか。

処理内容を見る限り、ペーストでの ~/yukitask/here_aliases の再読み込みができないだけで ~/yukitask/here_aliases の更新自体はされているようなので保留とする。

更新時は source ~/yukitask/here_aliases を自力で打つ感じで。

ということで続きをやってみる。

$ cd
$ yukitask_practice
~/project/yukitask_practice ~
bash: /home/mikoto/yukitask/show_todo: /usr/bin/ruby: 誤ったインタプリタです: No such file or directory

oh...。~/yukitask/show_todo の shebang が /usr/bin/ruby になっているから ruby が見つからない。 #!/usr/bin/ruby#!/usr/bin/env ruby に書き換えて実行。

あ、あと、関係ないけど移動は pushd でやっているのね。

$ cd
$ yukitask_practice
~/project/yukitask_practice ~
cat: '$HOME/yukitask/TODO': No such file or directory

えーと、今度は、ホームディレクトリを表すのに $HOME を使用しているから、 Windows ネイティブのの Ruby からだと環境変数が見えないのか。

$HOME~ に修正して試してみる。

$ yukitask_practice
~/project/yukitask_practice ~
This is your global TODO file.
Use 'TT' command to edit this file.

ok。 続きを実施。

$ T # TODO 修正
$ cd
$ yukitask_practice
~/project/yukitask_practice ~ ~
This is your global TODO file.
Use 'TT' command to edit this file.
yukitask_practice's TODO

ちゃんと動いているっぽい。

続いて YukiTask Make を試す。 さっき使ったプロジェクトをそのまま流用。

$ cd ~/project/yukitask_practice
$ cp ~/yukitask/makefile.default makefile
$ m # エディタで makefile が開かれる
$ mk
You are executing 'mk' command. Please edit your 'makefile'.

こちらも大丈夫そう。

ちゃちゃっと試していきましょう。 次は YukiTask Graph

$ start ~/yukitask/graph-recent.html # 空白のページが表示された

あれー??? ~/yukitask/touch_task あたりが原因かな?とあたりを付けてソースを読む。

~/yukitask/touch_tasksystem("update_graph") が怪しいので、 とりあえず ~/yukitask/update_graph 単独で実行してみる。

$ cd ~/project/yukitask_practice
$ update_graph
$ start ~/yukitask/graph-recent.html # グラフが表示された

これは、 Windows ネイティブの Ruby 使っているから PATH が通っていないんだなきっと。

うーん、MSYS2 環境から Windows ネイティブ Ruby 呼ぶのが間違いなきがしてきた。 とはいえ MSYS2 の Ruby 入れると使い分けとかいろいろややこしくなりそう。

面倒なので bash 経由で呼び出すように修正した。 bash なら環境変数よしなに取り扱ってくれそうだし。

%s/system("update_graph")/system("bash -c \\\"\~\/yukitask\/update_graph\\\"") 的な感じで書き換えて再挑戦。

$ cat /dev/null > ~/yukitask/graph-recent.html
$ mk
$ start ~/yukitask/graph-recent.html # グラフが表示された

何となく mk の実行時間長くなった気がするけどとりあえずグラフの更新は成功した。

感想

MSYS2 の packman でインストールできる ruby を使うようにすれば、 今回つまずいた中のいくつかは回避できるんじゃないかな? 特にこだわりが無いのであればそちらを推奨。

yukitask 自体の設定ファイル的な存在が makefile なので、 プロジェクトルートに Makefile が存在するようなプロジェクトの管理はできなそう。 (昨今そんなプロジェクトはめったにないけれど)

基本的な設定は ~/yukitask 下で管理されているので、 プロジェクトルート直下の TODOmakefile.gitignore に登録すれば、 公開前提のプロジェクトでもいい感じに管理できそう。 (場合によっては TODO すら ignore 設定しなくてもよい感じ)

ここまで試してみて、グラフ表示に魅力を感じてきているので、使い方を模索しつつなるべく体をなじませていきたい感じ。

参考資料

0 件のコメント: