milkode 0.2.4 → 0.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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)