データベースの作成、パッケージ登録

From Milkode

Jump to: navigation, search

Contents

[edit] デフォルトデータベースの作成

Milkodeのデータベースやパッケージの管理には全てmilkというコマンドを使います(Windowsではmilk.bat)。 まずはデフォルトデータベースを作成しましょう。

$ milk init --default
create     : /Users/auser/.milkode/milkode.yaml
create     : /Users/auser/.milkode/db/milkode.db created.

Milkodeに登録したソースコードはデータベースと呼ばれる場所に格納されます。 デフォルトデータベースの位置は~/.milkode, もしくは環境変数MILKODE_DEFAULT_DIRで指定された値です。

[edit] パッケージの追加

データベースの作成が終わったらパッケージを登録していきましょう。 試しにa_projectというディレクトリを作り、パッケージとして追加します。

$ cd ~/Documents/
$ mkdir a_project
$ echo "aaaaaa" > a_project/a.txt
$ echo "bbbbbb" > a_project/b.txt
$ echo "print 'cccccc'" > a_project/c.rb
$ milk add a_project/
package    : a_project
add_record : /Users/auser/Documents/a_project/a.txt
add_record : /Users/auser/Documents/a_project/b.txt
add_record : /Users/auser/Documents/a_project/c.rb
result     : 1 packages, 3 records, 3 add. (0.21sec)
*milkode*  : 1 packages, 3 records in /Users/auser/.milkode/db/milkode.db.

登録されているパッケージはmilk listコマンドで確認出来ます。

$ milk list
a_project

インストールしたmilkode本体を登録してみます。

# 環境によってgemの位置が変わります (以下は、MacPorts rubyの場合)
$ milk add /opt/local/lib/ruby/gems/1.8/gems/milkode-0.2.9/
.
.
add_record : /opt/local/lib/ruby/gems/1.8/gems/milkode-0.2.9/VERSION
result     : 1 packages, 79 records, 79 add. (0.68sec)
*milkode*  : 2 packages, 82 records in /Users/auser/.milkode/db/milkode.db.

httpからの取り込みもサポートしています。Rubyのソースコードを取り込んでみます。

$ milk add http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p290.zip
download   : http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p290.zip
extract    : ./packages/http/ruby-1.9.2-p290.zip
package    : ruby-1.9.2-p290
.
.
result     : 1 packages, 3257 records, 3257 add. (1m 1.75s)
*milkode*  : 3 packages, 3339 records in /Users/auser/.milkode/db/milkode.db.

milk list -vで、パッケージの位置も表示されます。

$ milk list -v
a_project         /Users/auser/Documents/a_project
milkode-0.2.9   /opt/local/lib/ruby/gems/1.8/gems/milkode-0.2.9
ruby-1.9.2-p290   /Users/auser/.milkode/packages/zip/ruby-1.9.2-p290

管理するパッケージが増えてきたら、キーワードで絞り込むことも出来ます。

$ milk list milk
milkode-0.2.9

[edit] mcdコマンドのインストール

mcdコマンドをインストールすると、パッケージ間を素早く移動することが出来るようになるのでおすすめです。

パッケージ間を簡単に移動するためのmcdコマンド

[edit] 登録したパッケージ内の検索

データベースに登録したパッケージはmilk grepコマンドを使って検索することが出来ます。 -aは全てのパッケージから、という意味です、printcccc両キーワードを含む行を探します。

$ milk grep -a print ccccc
a_project/c.rb:1:print 'cccccc'

Rubyのソースコードからsplitメソッドを定義している箇所を特定してみます。 3339ファイルから検索していますが一瞬です。

$ milk grep -a rb_define_method split
../.milkode/packages/zip/ruby-1.9.2-p290/string.c:7505:    rb_define_method(rb_cString, "split", rb_str_split_m, -1);
../.milkode/packages/zip/ruby-1.9.2-p290/ext/tk/tcltklib.c:10519:    rb_define_method(ip, "_split_tklist", ip_split_tklist, 1);
../.milkode/packages/zip/ruby-1.9.2-p290/ext/bigdecimal/bigdecimal.c:2038:    rb_define_method(rb_cBigDecimal, "split", BigDecimal_split, 0);

milk grepのさらに詳しい使い方については、コマンドラインから検索をどうぞ。

[edit] パッケージの更新

登録したパッケージにファイルを追加したり内容を変更した時は、milk updateを使うことで検索対象に含まれるようになります。 まずa_projectの内容を変更します。

$ mcd a_pro   # もしくは cd /Users/auser/Documents/a_project
/Users/auser/Documents/a_project
$ echo "puts 'cccccc'" > c.rb
$ echo "puts 'dddddd'" > d.rb

milk updateしましょう、現在位置にあるパッケージを更新します。

$ milk update
package    : a_project
update     : /Users/auser/Documents/a_project/c.rb
add_record : /Users/auser/Documents/a_project/d.rb
result     : 1 packages, 4 records, 1 add, 1 update. (0.01sec)
*milkode*  : 3 packages, 3340 records in /Users/auser/.milkode/db/milkode.db.

全てのパッケージを更新したい時はmilk update --allです。

$ milk update --all
package    : a_project
package    : milkode-0.2.9
package    : ruby-1.9.2-p290
result     : 3 packages, 3340 records. (0.74sec)
*milkode*  : 3 packages, 3340 records in /Users/auser/.milkode/db/milkode.db.

[edit] カスタムデータベースの作成

データベースは複数個作ることが出来ます。 デフォルト以外のデータベースを作る時はまずは空のディレクトリを用意します。

$ mkdir ~/tmp/milkode_db2

作成したディレクトリに移動後、milk initを実行します。

$ cd ~/tmp/milkode_db2/
$ milk init
create     : milkode.yaml
create     : /Users/aurser/tmp/milkode_db2/db/milkode.db created.

カレントディレクトリがMilkodeデータベースの場合、そのデータベースに対して操作を行います。 カレントディレクトリがデータベースでない場合、デフォルトデータベースに対して操作が行われます。 現在操作可能なデータベースはmilk pwdで確認可能です。

# 現在操作可能なデータベース
$ milk pwd
/Users/aurser/tmp/milkode_db2
# milkode_db2 に a_project を追加
$ milk add ~/Documents/a_project/
package    : a_project
add_record : /Users/aurser/Documents/a_project/a.txt
add_record : /Users/aurser/Documents/a_project/b.txt
add_record : /Users/aurser/Documents/a_project/c.rb
add_record : /Users/aurser/Documents/a_project/d.rb
result     : 1 packages, 4 records, 4 add. (0.15sec)
*milkode*  : 1 packages, 4 records in /Users/aurser/tmp/milkode_db2/db/milkode.db.
# 確認
$ milk list
a_project
# カレントディレクトリがデータベースでない場合、デフォルトデータベースが操作対象となる
$ cd ~
$ milk pwd
/Users/aurser/.milkode

[edit] デフォルトデータベースの切り替え

milk setdb でデフォルトデータベースを切り替えることが出来ます。

# デフォルトデータベースの確認
$ cd ~
$ milk pwd
/Users/auser/.milkode
 
# 'milk sedb'でデフォルトデータベースの切り替え
$ milk setdb ~/tmp/milkode_db2/
Set default db /Users/auser/tmp/milkode_db2.
# 確認
$ milk pwd
 
# 'milk list'や'milk grep'の対象も変化する
/Users/auser/tmp/milkode_db2
$ milk list
a_project
$ milk grep -a aaaaaa
Documents/a_project/a.txt:1:aaaaaa
 
# 'milk setdb --reset'でデフォルトデータベースを元に戻す
$ milk setdb --reset
Reset default db
  remove:      /Users/auser/.milkode_db_dir
  default_db:  /Users/auser/.milkode
# 確認
$ milk pwd
/Users/auser/.milkode

[edit] その他のコマンド

milkには他にも便利なコマンドがたくさん用意されています。詳しい使い方は各コマンドのヘルプを見て下さい。

$ milk -h
milk COMMAND [ARGS]
 
The most commonly used milk are:
  add         Add packages.
  cleanup     Cleanup garbage records.
  dir         Disp package dir.
  dump        Dump records.
  grep        Print lines matching a pattern
  init        Init db.
  list        List packages. 
  mcd         Print 'mcd' command.
  pwd         Disp current db.
  rebuild     Rebuild db.
  remove      Remove packages.
  setdb       Set default db. 
  update      Update packages.
  web         Run web-app.
$ milk add -h
milk add package1 [package2 ...]
usage:
  milk add /path/to/dir1
  milk add /path/to/dir2 /path/to/dir3
  milk add /path/is/*
  milk add /path/to/zipfile.zip
  milk add /path/to/addon.xpi
  milk add http://example.com/urlfile.zip
Personal tools