milkode 0.2.4 → 0.2.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,19 @@
1
+ === 0.2.9 2011/12/24
2
+
3
+ * gmilk
4
+ * grepのようにコマンドラインから検索可能に
5
+ * mcd
6
+ * データベースに登録したパッケージを簡単にディレクトリ移動することが出来る
7
+ * milk
8
+ * milk setdb を追加、デフォルトデータベースの切り替え
9
+ * milk update の改善、現在位置がパッケージなら
10
+ * milk dir を追加、指定パッケージのディレクトリ位置を表示
11
+ * milk mcd を追加、mcdコマンドのインストール用
12
+ * milk web
13
+ * Ruby1.8の時はhpricotを(文字化けが直る)、Ruby1.9の時はnokogiriを使うように(hpricotだと日本語検索が上手くいかない)。
14
+ * ファイルリストをフォルダ、名前で並べ替えるように
15
+ * MilkodeTestWorkクラスを追加、テスト向け環境構築を容易に
16
+
1
17
  === 0.2.4 2011/10/02
2
18
 
3
19
  * gem 1.3.6, 1.3.7 でインストール出来ない問題を修正
@@ -1,3 +1,28 @@
1
+ === 0.2.9 2011/12/24
2
+
3
+ * gmilk
4
+ * 'gmilk' search from the command line available the grep.
5
+ * mcd
6
+ * 'mcd', you can easy directory move package registered in the database
7
+ * milk
8
+ * Add 'milk setdb'.
9
+ * Add 'milk update'.
10
+ * Add 'milk dir'.
11
+ * Add 'milk mcd'.
12
+ * milk web
13
+ * Ruby1.8 -> hpricot, Ruby1.9 -> nokogiri.
14
+ * Sort the file list folder, and name
15
+ * Add MilkodeTestWork class.
16
+
17
+ === 0.2.4 2011/10/02
18
+
19
+ * Fixed not installing gem 1.3.6, 1.3.7.
20
+
21
+ === 0.2.3 2011/09/29
22
+
23
+ * Search web interface speed.
24
+ * Corresponds to the Japan language file names.
25
+
1
26
  === 0.2.2 2011/08/26
2
27
 
3
28
  * Add a file grep.
data/Rakefile CHANGED
@@ -23,8 +23,8 @@ Jeweler::Tasks.new do |gem|
23
23
 
24
24
  # Include your dependencies below. Runtime dependencies are required when using your gem,
25
25
  gem.add_runtime_dependency 'termcolor','>= 1.2.0'
26
- gem.add_runtime_dependency 'rroonga','>= 1.0.0'
27
- gem.add_runtime_dependency 'rack','>=1.2.1'
26
+ gem.add_runtime_dependency 'rroonga','>= 1.1.0'
27
+ gem.add_runtime_dependency 'rack','>=1.3.4'
28
28
  gem.add_runtime_dependency 'sinatra', '>=1.2.6'
29
29
  gem.add_runtime_dependency 'launchy', '>=0.3.7'
30
30
  gem.add_runtime_dependency 'coderay', '=0.9.8'
@@ -33,6 +33,7 @@ Jeweler::Tasks.new do |gem|
33
33
  gem.add_runtime_dependency 'haml', '>=3.1.2'
34
34
  gem.add_runtime_dependency 'sass', '>=3.1.3'
35
35
  gem.add_runtime_dependency 'nokogiri', '>=1.5.0'
36
+ gem.add_runtime_dependency 'hpricot', '>=0.8.2'
36
37
 
37
38
  # and development dependencies are only needed for development (ie running rake tasks, tests, etc)
38
39
  # gem.add_development_dependency 'rspec', '> 1.2.3'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.4
1
+ 0.2.9
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # milg command.
4
+ #
5
+
6
+ require 'rubygems'
7
+ require 'milkode/grep/cli_grep'
8
+
9
+ Version = "0.2.9"
10
+ Milkode::CLI_Grep.execute(STDOUT, ARGV)
data/bin/milk CHANGED
@@ -6,5 +6,5 @@
6
6
  require 'rubygems'
7
7
  require 'milkode/cdstk/cli_cdstk'
8
8
 
9
- Version = "0.2.4"
9
+ Version = "0.2.9"
10
10
  Milkode::CLI_Cdstk.execute(STDOUT, ARGV)
@@ -19,6 +19,7 @@ rescue LoadError
19
19
  end
20
20
  require 'milkode/cdweb/lib/database'
21
21
  require 'open-uri'
22
+ require 'milkode/cdstk/cdstk_command'
22
23
 
23
24
  module Milkode
24
25
  class Cdstk
@@ -60,20 +61,51 @@ module Milkode
60
61
  db_open(db_file)
61
62
  end
62
63
 
63
- def update(args = nil)
64
+ def update_all
64
65
  print_result do
65
66
  yaml = yaml_load
66
-
67
- update_list = (!args || args.empty?) ? yaml_load.list : yaml_load.list(CdstkYaml::Query.new(args))
68
-
67
+
69
68
  db_open(db_file)
70
69
 
71
- update_list.each do |content|
70
+ yaml.list.each do |content|
72
71
  update_dir_in(content["directory"])
73
72
  end
74
73
  end
75
74
  end
76
75
 
76
+ def update(args, options)
77
+ if (options[:all])
78
+ update_all
79
+ else
80
+ if (args.empty?)
81
+ path = File.expand_path('.')
82
+ package = yaml_load.package_root( path )
83
+
84
+ if (package)
85
+ print_result do
86
+ db_open(db_file)
87
+ update_dir_in(package["directory"])
88
+ end
89
+ else
90
+ @out.puts "Not registered. If you want to add, 'milk add #{path}'."
91
+ end
92
+ else
93
+ print_result do
94
+ update_list = yaml_load.list CdstkYaml::Query.new(args)
95
+ db_open(db_file)
96
+ update_list.each do |content|
97
+ update_dir_in(content["directory"])
98
+ end
99
+ end
100
+ end
101
+ end
102
+ end
103
+
104
+ def update_package(dir)
105
+ db_open(db_file)
106
+ update_dir(dir)
107
+ end
108
+
77
109
  def update_dir(dir)
78
110
  update_dir_in(dir)
79
111
  end
@@ -285,7 +317,7 @@ module Milkode
285
317
  def rebuild
286
318
  db_delete(db_file)
287
319
  db_create(db_file)
288
- update
320
+ update_all
289
321
  end
290
322
 
291
323
  def dump
@@ -305,6 +337,85 @@ module Milkode
305
337
  @out.puts "total #{records.size} record."
306
338
  end
307
339
 
340
+ def dir(args, options)
341
+ yaml = yaml_load
342
+
343
+ if args.empty?
344
+ path = File.expand_path('.')
345
+ package = yaml.package_root(path)
346
+
347
+ if (package)
348
+ @out.print package['directory'] + (options[:top] ? "" : "\n")
349
+ else
350
+ # Use mcd.
351
+ @out.print "Not registered." + (options[:top] ? "" : "\n")
352
+ end
353
+ else
354
+ dirs = yaml.list(CdstkYaml::Query.new(args)).map{|v|v['directory']}.reverse
355
+
356
+ if options[:top]
357
+ unless (dirs.empty?)
358
+ @out.print dirs[0]
359
+ else
360
+ @out.print ""
361
+ end
362
+ else
363
+ @out.puts dirs
364
+ end
365
+ end
366
+ end
367
+
368
+ def setdb(args, options)
369
+ if (options[:reset])
370
+ CdstkCommand.setdb_reset
371
+ @out.puts "Reset default db\n remove: #{Dbdir.milkode_db_dir}\n default_db: #{Dbdir.default_dir}"
372
+ elsif (args.empty?)
373
+ @out.puts Dbdir.default_dir
374
+ else
375
+ path = File.expand_path(args[0])
376
+ begin
377
+ CdstkCommand.setdb_set path
378
+ @out.puts "Set default db #{path}."
379
+ rescue CdstkCommand::NotExistDatabase
380
+ @out.puts "fatal: '#{path}' is not database."
381
+ end
382
+ end
383
+ end
384
+
385
+ def mcd(args, options)
386
+ @out.print <<EOF
387
+ # Copy to '.bashrc'.
388
+ mcd() {
389
+ local args="$1 $2 $3 $4 $5 $6 $7 $8 $9"
390
+ local dir=`milk dir --top $args`
391
+
392
+ if [ "$dir" = "" ]; then
393
+ echo "fatal: Not found package: $1 $2 $3 $4 $5 $6 $7 $8 $9"
394
+ elif [ "$dir" = "Not registered." ]; then
395
+ echo "fatal: Not a package dir: `pwd`"
396
+ else
397
+ cd $dir
398
+ pwd
399
+ fi
400
+ }
401
+
402
+ # For Cygwin.
403
+ mcd() {
404
+ local args="$1 $2 $3 $4 $5 $6 $7 $8 $9"
405
+ local dir=`milk.bat dir --top $args`
406
+
407
+ if [ "$dir" = "" ]; then
408
+ echo "fatal: Not found package: $1 $2 $3 $4 $5 $6 $7 $8 $9"
409
+ elif [ "$dir" = "Not registered." ]; then
410
+ echo "fatal: Not a package dir: `pwd`"
411
+ else
412
+ cd $dir
413
+ pwd
414
+ fi
415
+ }
416
+ EOF
417
+ end
418
+
308
419
  private
309
420
 
310
421
  def db_file
@@ -319,6 +430,10 @@ module Milkode
319
430
  File.expand_path(@db_dir)
320
431
  end
321
432
 
433
+ def custom_db?
434
+ db_dir_expand != Dbdir.default_dir
435
+ end
436
+
322
437
  def yaml_file
323
438
  CdstkYaml.yaml_file @db_dir
324
439
  end
@@ -0,0 +1,28 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # @file
4
+ # @brief cdstk command set (Only action, not display message.)
5
+ # @author ongaeshi
6
+ # @date 2011/12/12
7
+
8
+ require 'milkode/common/dbdir'
9
+
10
+ module Milkode
11
+ module CdstkCommand
12
+ module_function
13
+
14
+ def setdb_set(path)
15
+ raise NotExistDatabase unless Dbdir.dbdir?(path)
16
+ open(Dbdir.milkode_db_dir, "w") {|f| f.print path }
17
+ end
18
+
19
+ def setdb_reset
20
+ FileUtils.rm_f(Dbdir.milkode_db_dir)
21
+ end
22
+
23
+ # --- error ---
24
+ class NotExistDatabase < RuntimeError ; end
25
+ end
26
+ end
27
+
28
+
@@ -36,6 +36,15 @@ module Milkode
36
36
  def initialize(yaml_file, data)
37
37
  @yaml_file = yaml_file
38
38
  @data = data
39
+ normalize
40
+ end
41
+
42
+ def normalize
43
+ if (Util::platform_win?)
44
+ contents.each do |v|
45
+ v['directory'] = Util::normalize_filename v['directory']
46
+ end
47
+ end
39
48
  end
40
49
 
41
50
  def add(dirs)
@@ -44,7 +53,7 @@ module Milkode
44
53
  end
45
54
 
46
55
  def remove(query)
47
- r = query.select(contents)
56
+ r = query.select_any?(contents)
48
57
  r.each {|v| contents.delete v}
49
58
  end
50
59
 
@@ -69,7 +78,7 @@ module Milkode
69
78
  end
70
79
 
71
80
  def list(query = nil)
72
- query ? query.select(contents) : contents
81
+ query ? query.select_all?(contents) : contents
73
82
  end
74
83
 
75
84
  def exist?(shortname)
@@ -94,6 +103,18 @@ module Milkode
94
103
  end
95
104
  end
96
105
 
106
+ def package_root(dir)
107
+ nd = Util::normalize_filename dir
108
+ @data['contents'].find do |v|
109
+ v if nd =~ /^#{v['directory']}/
110
+ end
111
+ end
112
+
113
+ def package_root_dir(dir)
114
+ package = package_root(dir)
115
+ (package) ? package['directory'] : nil
116
+ end
117
+
97
118
  def self.yaml_file(path)
98
119
  Dbdir.yaml_path(path)
99
120
  end
@@ -103,11 +124,17 @@ module Milkode
103
124
  @keywords = keywords
104
125
  end
105
126
 
106
- def select(contents)
127
+ def select_any?(contents)
107
128
  contents.find_all do |v|
108
129
  @keywords.any? {|s| File.basename(v['directory']).include? s }
109
130
  end
110
131
  end
132
+
133
+ def select_all?(contents)
134
+ contents.find_all do |v|
135
+ @keywords.all? {|s| File.basename(v['directory']).include? s }
136
+ end
137
+ end
111
138
  end
112
139
  end
113
140
  end
@@ -4,6 +4,7 @@ require 'milkode/cdstk/cli_cdstksub'
4
4
  require 'milkode/cdstk/cdstk'
5
5
  require 'milkode/common/dbdir.rb'
6
6
  require 'milkode/cdweb/cli_cdweb'
7
+ require 'milkode/grep/cli_grep'
7
8
  include Milkode
8
9
 
9
10
  module Milkode
@@ -13,24 +14,42 @@ module Milkode
13
14
  #{File.basename($0)} COMMAND [ARGS]
14
15
 
15
16
  The most commonly used #{File.basename($0)} are:
16
- init Init db.
17
17
  add Add packages.
18
- update Update packages.
19
- web Run web-app.
20
- remove Remove packages.
18
+ cleanup Cleanup garbage records.
19
+ dir Disp package dir.
20
+ dump Dump records.
21
+ grep Print lines matching a pattern
22
+ init Init db.
21
23
  list List packages.
24
+ mcd Print 'mcd' command.
22
25
  pwd Disp current db.
23
- cleanup Cleanup garbage records.
24
26
  rebuild Rebuild db.
25
- dump Dump records.
27
+ remove Remove packages.
28
+ setdb Set default db.
29
+ update Update packages.
30
+ web Run web-app.
26
31
  EOF
27
32
 
33
+ opt.order!(arguments)
34
+ subcommand = arguments.shift
35
+
36
+ case subcommand
37
+ when 'grep'
38
+ Milkode::CLI_Grep.execute(stdout, arguments)
39
+ else
40
+ subcommand_default(stdout, opt, subcommand, arguments)
41
+ end
42
+ end
43
+
44
+ private
45
+
46
+ def self.subcommand_default(stdout, opt, subcommand, arguments)
28
47
  subopt = Hash.new
29
48
  suboptions = Hash.new
30
49
 
31
50
  subopt['init'], suboptions['init'] = CLI_Cdstksub.setup_init
32
51
  subopt['add'] = CLI_Cdstksub.setup_add
33
- subopt['update'] = OptionParser.new("#{File.basename($0)} update package1 [package2 ...]")
52
+ subopt['update'], suboptions['update'] = CLI_Cdstksub.setup_update
34
53
  subopt['remove'], suboptions['remove'] = CLI_Cdstksub.setup_remove
35
54
  subopt['list'], suboptions['list'] = CLI_Cdstksub.setup_list
36
55
  subopt['pwd'], suboptions['pwd'] = CLI_Cdstksub.setup_pwd
@@ -38,10 +57,10 @@ EOF
38
57
  subopt['rebuild'] = OptionParser.new("#{File.basename($0)} rebuild")
39
58
  subopt['dump'] = OptionParser.new("#{File.basename($0)} dump")
40
59
  subopt['web'], suboptions['web'] = CLI_Cdstksub.setup_web
41
-
42
- opt.order!(arguments)
43
- subcommand = arguments.shift
44
-
60
+ subopt['dir'], suboptions['dir'] = CLI_Cdstksub.setup_dir
61
+ subopt['setdb'], suboptions['setdb'] = CLI_Cdstksub.setup_setdb
62
+ subopt['mcd'], suboptions['mcd'] = CLI_Cdstksub.setup_mcd
63
+
45
64
  if (subopt[subcommand])
46
65
  subopt[subcommand].parse!(arguments) unless arguments.empty?
47
66
  init_default = suboptions['init'][:init_default]
@@ -54,7 +73,7 @@ EOF
54
73
  FileUtils.mkdir_p db_dir if (init_default)
55
74
  obj.init
56
75
  when 'update'
57
- obj.update(arguments)
76
+ obj.update(arguments, suboptions[subcommand])
58
77
  when 'add'
59
78
  obj.add(arguments)
60
79
  when 'remove'
@@ -72,6 +91,12 @@ EOF
72
91
  when 'web'
73
92
  obj.compatible?
74
93
  Milkode::CLI_Cdweb.execute_with_options(stdout, suboptions[subcommand])
94
+ when 'dir'
95
+ obj.dir(arguments, suboptions[subcommand])
96
+ when 'setdb'
97
+ obj.setdb(arguments, suboptions[subcommand])
98
+ when 'mcd'
99
+ obj.mcd(arguments, suboptions[subcommand])
75
100
  end
76
101
  else
77
102
  if subcommand
@@ -82,8 +107,6 @@ EOF
82
107
  end
83
108
  end
84
109
 
85
- private
86
-
87
110
  def self.select_dbdir(subcommand, init_default)
88
111
  if (subcommand == 'init')
89
112
  if (init_default)