blog.textfile.org結城浩のブログ

blog.textfile.org

プロジェクトを開始するときにTODOを表示する

前提

問題

  • そのプロジェクトで次のTODOをさっと思い出したい。

解法

  • プロジェクトに移動するコマンドで、そのディレクトリのTODOファイルを表示するようにすればいい。

詳細

  • 以下は Mac OS X および bash 用である。

  • 以下のスクリプト here を設置する。 このスクリプトは解法で述べた「コマンド」をaliasとして実現する。 aliasの一覧は~/.hereに格納される。

here
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/env ruby

ALIAS_FILE = '$HOME/.here'

if ARGV.length != 1
  puts "Usage: here project-code"
  puts "Example: here math"
  puts
  puts "pwd is clipped."
  system("pwd | pbcopy")
  abort
end

PROJECT_CODE = ARGV[0]
CMDLINE = "alias #{PROJECT_CODE}='pushd #{Dir.pwd}; show_todo'"
File::open(ALIAS_FILE, "a+") do |f|
  f.puts(CMDLINE)
end

puts "#{ALIAS_FILE} is updated.\n#{CMDLINE}"
system("echo source ~/.here | pbcopy")
puts "Execute Command+V on the command line to execute \"source ~/.here\""
  • さらに以下のスクリプト show_todo を設置する。 このスクリプトは $HOME/TODO ファイルを青で、./TODO ファイルを赤で表示するだけの処理を行う。
show_todo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/ruby

COMMON_TODO = '$HOME/TODO'
CURRENT_TODO = './TODO'

RED = "\033[31m"
BLUE = "\033[34m"
DEFAULT = "\033[0m"

print BLUE
system("cat #{COMMON_TODO}")
print RED
system("cat #{CURRENT_TODO}")
print DEFAULT
  • ~/.bash_profile~/.bashrc などに source ~/.here を入れておく。

  • プロジェクトの作業ディレクトリにcdpushdで移動する。

  • プロジェクトの名前がたとえば math だとすると here math を実行する。

  • source ~/.here を実行してaliasを更新する。Command+V でペーストしてもいい。

  • 他のディレクトリに移動する。

  • コマンドラインからmathと入力すると、先ほどのプロジェクトの作業ディレクトリに移動する。

  • さらに移動したときに $HOME/TODO ファイルを青で、./TODO ファイルを赤で表示する。

  • 全体的なTODOを $HOME/TODO に書いておき、プロジェクト固有のTODOを ./TODO ファイルに書いておけばいい。