結城タスク / 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_task
の system("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
下で管理されているので、 プロジェクトルート直下の TODO
と makefile
を .gitignore
に登録すれば、 公開前提のプロジェクトでもいい感じに管理できそう。 (場合によっては TODO
すら ignore 設定しなくてもよい感じ)
ここまで試してみて、グラフ表示に魅力を感じてきているので、使い方を模索しつつなるべく体をなじませていきたい感じ。
参考資料
- Windows に YukiTask を導入する(メモ) | 萌えとかプログラミングとか
pbcopy
の代替方法や、 Winddows ネイティブの Ruby を使う Tips、 Haskell プロジェクトを例にした makefile の書き方などがわかりやすくまとまっている。
0 件のコメント:
コメントを投稿