milkode 0.9.6 → 0.9.7

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.
@@ -0,0 +1,14 @@
1
+ language: ruby
2
+
3
+ notifications:
4
+ email:
5
+ recipients:
6
+ - kou@clear-code.com
7
+ - ongaeshi0621@gmail.com
8
+
9
+ rvm:
10
+ - 1.8.7
11
+ - 1.9.3
12
+
13
+ before_install:
14
+ - curl https://raw.github.com/groonga/groonga/master/data/travis/setup.sh | sh
data/Gemfile CHANGED
@@ -5,7 +5,7 @@ source "http://rubygems.org"
5
5
  # gem "activesupport", ">= 2.3.5"
6
6
  # gemspec
7
7
  gem 'termcolor','>= 1.2.0', '< 1.2.2'
8
- gem 'rroonga','>= 1.1.0', '< 2.1.0'
8
+ gem 'rroonga','>= 1.1.0'
9
9
  gem 'rack','>=1.3.4'
10
10
  gem 'sinatra', '>=1.2.6'
11
11
  gem 'launchy', '>=0.3.7'
@@ -1,3 +1,20 @@
1
+ === 0.9.7 2012/01/29
2
+
3
+ * Support rroonga 2.1.x
4
+
5
+ * Support TravisCI
6
+ * https://travis-ci.org/ongaeshi/milkode
7
+ * Util#truncate_nsec を追加
8
+
9
+ * milk
10
+ * 'milk files -r' を追加
11
+ * 非データベースディレクトリでも'milk files'出来るように
12
+ * 'milk list -d' (ディレクトリのみ表示) を追加
13
+
14
+ * gmilk
15
+ * 一部の単語が正しくマッチするように修正 ('a-list'等)
16
+ * Windows環境でも日本語検索を可能に
17
+
1
18
  === 0.9.6 2012/12/28
2
19
 
3
20
  * milk web
@@ -1,3 +1,20 @@
1
+ === 0.9.7 2012/01/29
2
+
3
+ * Support rroonga 2.1.x
4
+
5
+ * Support TravisCI
6
+ * https://travis-ci.org/ongaeshi/milkode
7
+ * Add Util#truncate_nsec
8
+
9
+ * milk
10
+ * Add 'milk files -r'
11
+ * Can run 'milk files' in non-database directory
12
+ * Add 'milk list -d' (Display directory)
13
+
14
+ * gmilk
15
+ * Fixed some words to match properly ('a-list' etc.)
16
+ * Can search non-ASCII characters in Windows environment
17
+
1
18
  === 0.9.6 2012/12/28
2
19
 
3
20
  * milk web
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.9.6
1
+ 0.9.7
data/bin/gmilk CHANGED
@@ -6,5 +6,5 @@
6
6
  require 'rubygems'
7
7
  require 'milkode/grep/cli_grep'
8
8
 
9
- Version = "0.9.6"
9
+ Version = "0.9.7"
10
10
  Milkode::CLI_Grep.execute(STDOUT, ARGV)
data/bin/milk CHANGED
@@ -6,5 +6,5 @@
6
6
  require 'rubygems'
7
7
  require 'milkode/cli'
8
8
 
9
- Version = "0.9.6"
9
+ Version = "0.9.7"
10
10
  Milkode::CLI.start(ARGV)
@@ -407,6 +407,8 @@ module Milkode
407
407
  h = File.exist?(p.directory) ? '' : '? '
408
408
  if (options[:verbose])
409
409
  "#{(h + p.name).ljust(max+2)} #{p.directory}"
410
+ elsif (options[:directory])
411
+ "#{p.directory}"
410
412
  else
411
413
  "#{h}#{p.name}"
412
414
  end
@@ -414,7 +416,7 @@ module Milkode
414
416
 
415
417
  @out.puts str
416
418
 
417
- if Util.pipe? $stdout
419
+ if !options[:directory] && Util.pipe?($stdout)
418
420
  if args.empty?
419
421
  milkode_info
420
422
  else
@@ -875,8 +877,12 @@ EOF
875
877
  else
876
878
  dir = File.expand_path('.')
877
879
  r = @yaml.package_root(dir)
878
- @out.puts "Not registered '#{dir}'." if r.nil?
879
- [r]
880
+ if r.nil?
881
+ @out.puts "Not registered '#{dir}'."
882
+ []
883
+ else
884
+ [r]
885
+ end
880
886
  end
881
887
  end
882
888
 
@@ -935,15 +941,21 @@ EOF
935
941
  end
936
942
  end
937
943
 
938
- def files(args)
944
+ def files(args, options)
939
945
  packages = find_packages(args)
940
946
  return if (packages.empty?)
941
947
 
942
948
  db_open
949
+
950
+ basedir = File.expand_path('.') if options[:relative]
943
951
 
944
952
  packages.each do |package|
945
953
  package_records(package.name).each do |record|
946
- @out.puts record.restpath
954
+ if options[:relative]
955
+ @out.puts Util::relative_path(record.path, basedir)
956
+ else
957
+ @out.puts record.restpath
958
+ end
947
959
  end
948
960
  end
949
961
  end
@@ -22,7 +22,7 @@ set :haml, :format => :html5
22
22
 
23
23
  get '/' do
24
24
  @setting = WebSetting.new
25
- @version = "0.9.6"
25
+ @version = "0.9.7"
26
26
  @package_num = Database.instance.yaml_package_num
27
27
  @file_num = Database.instance.totalRecords
28
28
  @package_list = PackageList.new(Database.instance.grndb)
@@ -71,6 +71,7 @@ EOF
71
71
 
72
72
  desc "list [package1 package2 ...]", "List package"
73
73
  option :verbose, :type => :boolean, :aliases => '-v', :desc => 'Be verbose.'
74
+ option :directory, :type => :boolean, :aliases => '-d', :desc => 'Display direcory.'
74
75
  option :check, :type => :boolean, :aliases => '-c', :desc => "Check integrity 'yaml and database'"
75
76
  def list(*args)
76
77
  cdstk.list(args, options)
@@ -193,8 +194,9 @@ EOF
193
194
  end
194
195
 
195
196
  desc "files", "Display package files"
197
+ option :relative, :type => :boolean, :aliases => '-r', :desc => "Display relative path."
196
198
  def files(*args)
197
- cdstk.files(args)
199
+ cdstk.files(args, options)
198
200
  end
199
201
 
200
202
  # --------------------------------------------------------------------------
@@ -5,6 +5,7 @@ require 'milkode/common/archive-zip'
5
5
  require 'fileutils'
6
6
  require 'pathname'
7
7
  require 'kconv'
8
+ require 'groonga'
8
9
 
9
10
  module Milkode
10
11
  module Util
@@ -205,7 +206,26 @@ module Milkode
205
206
  str
206
207
  end
207
208
  end
208
-
209
+
210
+ # Timeからnsecを切り捨てる
211
+ # rroongaのTimeカラムはマイクロ秒までしか格納出来ない
212
+ def truncate_nsec(t)
213
+ Time.at(t.to_i, t.usec)
214
+ end
215
+
216
+ # gem_version_more?('rroonga', '2.1.0') #=> rroonga >= '2.1.0'
217
+ def gem_version_more?(name, version)
218
+ Gem.loaded_specs[name].version >= Gem::Version.new(version)
219
+ end
220
+
221
+ # 互換性保持のため
222
+ def groonga_table_sort(table, keys, options = {})
223
+ if gem_version_more?('rroonga', '2.1.0')
224
+ table.sort(keys, options).map{|r| r.value}
225
+ else
226
+ table.sort(keys, options)
227
+ end
228
+ end
209
229
  end
210
230
  end
211
231
 
@@ -6,7 +6,7 @@
6
6
  # @date 2012/05/29
7
7
 
8
8
  require 'kconv'
9
- require 'milkode/common/util.rb'
9
+ require 'milkode/common/util'
10
10
 
11
11
  module Milkode
12
12
  class DocumentTable
@@ -84,14 +84,14 @@ module Milkode
84
84
  # @retval nil タイムスタンプ比較により更新無し
85
85
  #
86
86
  def add(package_dir, restpath, package_name = nil)
87
- filename = File.join(package_dir, restpath) # フルパスの作成
88
- filename = File.expand_path(filename) # 絶対パスに変換
89
- path = Util::filename_to_utf8(filename) # データベースに格納する時のファイル名はutf8
90
- package = package_name || File.basename(package_dir)
91
- package = Util::filename_to_utf8(package)
92
- restpath = Util::filename_to_utf8(restpath)
93
- suffix = File.extname(path).sub('.', "")
94
- timestamp = File.mtime(filename) # OSへの問い合わせは変換前のファイル名で
87
+ filename = File.join(package_dir, restpath) # フルパスの作成
88
+ filename = File.expand_path(filename) # 絶対パスに変換
89
+ path = Util::filename_to_utf8(filename) # データベースに格納する時のファイル名はutf8
90
+ package = package_name || File.basename(package_dir)
91
+ package = Util::filename_to_utf8(package)
92
+ restpath = Util::filename_to_utf8(restpath)
93
+ suffix = File.extname(path).sub('.', "")
94
+ timestamp = Util::truncate_nsec(File.mtime(filename)) # OSへの問い合わせは変換前のファイル名で
95
95
 
96
96
  record = @table[path]
97
97
 
@@ -287,10 +287,11 @@ module Milkode
287
287
  # :limit => limit)
288
288
 
289
289
  # ファイル名でソート
290
- records = result.sort([{:key => "package", :order => "ascending"},
291
- {:key => "restpath", :order => "ascending"}],
292
- :offset => offset,
293
- :limit => limit)
290
+ records = Util.groonga_table_sort(result,
291
+ [{:key => "package", :order => "ascending"},
292
+ {:key => "restpath", :order => "ascending"}],
293
+ :offset => offset,
294
+ :limit => limit)
294
295
 
295
296
  # 検索結果のレコード(limitの影響を受ける), 総マッチ数(limitの影響を受けない)
296
297
  return records, result.size
@@ -5,6 +5,8 @@
5
5
  # @author ongaeshi
6
6
  # @date 2012/05/29
7
7
 
8
+ require 'milkode/common/util'
9
+
8
10
  module Milkode
9
11
  class PackageTable
10
12
  include Enumerable
@@ -32,10 +34,10 @@ module Milkode
32
34
 
33
35
  def add(name, directory, options)
34
36
  @table.add(name,
35
- :name => name,
37
+ :name => name,
36
38
  :directory => directory,
37
- :addtime => Time.now,
38
- :favtime => options[:fav] ? Time.now : Time.at(0))
39
+ :addtime => Time.now,
40
+ :favtime => options[:fav] ? Time.now : Time.at(0))
39
41
  end
40
42
 
41
43
  def remove(name)
@@ -59,7 +61,7 @@ module Milkode
59
61
  end
60
62
 
61
63
  def sort(kind, order = "descending")
62
- @table.sort([{:key => kind, :order => order}])
64
+ Util.groonga_table_sort(@table, [{:key => kind, :order => order}])
63
65
  end
64
66
 
65
67
  def dump
@@ -55,7 +55,8 @@ module FindGrep
55
55
  [],
56
56
  [],
57
57
  [],
58
- Platform.get_shell_kcode,
58
+ # Platform.get_shell_kcode,
59
+ Kconv::UTF8,
59
60
  false,
60
61
  nil,
61
62
  false,
@@ -6,10 +6,16 @@ require 'milkode/common/dbdir'
6
6
  require 'milkode/cdstk/cdstk'
7
7
  require 'milkode/cdstk/yaml_file_wrapper'
8
8
  require 'milkode/cdstk/package'
9
+ require 'kconv'
9
10
 
10
11
  module Milkode
11
12
  class CLI_Grep
12
13
  def self.execute(stdout, arguments=[])
14
+ # 引数の文字コードをUTF-8に変換
15
+ if (Util::platform_win?)
16
+ arguments = arguments.map{|arg| Kconv.kconv(arg, Kconv::UTF8)}
17
+ end
18
+
13
19
  option = FindGrep::FindGrep::DEFAULT_OPTION.dup
14
20
 
15
21
  # default option
@@ -221,11 +227,17 @@ EOF
221
227
 
222
228
  def prev
223
229
  @arguments.map! do |v|
224
- v.gsub("-l", ":l").
225
- gsub("-k", ":k").
226
- gsub("-g", ":g")
230
+ case v
231
+ when "-l"
232
+ ":l"
233
+ when "-k"
234
+ ":k"
235
+ when "-g"
236
+ ":g"
237
+ else
238
+ v
239
+ end
227
240
  end
228
-
229
241
  end
230
242
 
231
243
  def after
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{milkode}
8
- s.version = "0.9.6"
8
+ s.version = "0.9.7"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["ongaeshi"]
12
- s.date = %q{2012-12-28}
12
+ s.date = %q{2013-01-30}
13
13
  s.description = %q{Line based local source code search engine & grep-command & web-app.}
14
14
  s.email = %q{ongaeshi0621@gmail.com}
15
15
  s.executables = ["gmilk", "milk"]
@@ -19,6 +19,7 @@ Gem::Specification.new do |s|
19
19
  ]
20
20
  s.files = [
21
21
  ".document",
22
+ ".travis.yml",
22
23
  "Gemfile",
23
24
  "HISTORY.ja.rdoc",
24
25
  "HISTORY.rdoc",
@@ -194,7 +195,7 @@ Gem::Specification.new do |s|
194
195
 
195
196
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
196
197
  s.add_runtime_dependency(%q<termcolor>, [">= 1.2.0", "< 1.2.2"])
197
- s.add_runtime_dependency(%q<rroonga>, [">= 1.1.0", "< 2.1.0"])
198
+ s.add_runtime_dependency(%q<rroonga>, [">= 1.1.0"])
198
199
  s.add_runtime_dependency(%q<rack>, [">= 1.3.4"])
199
200
  s.add_runtime_dependency(%q<sinatra>, [">= 1.2.6"])
200
201
  s.add_runtime_dependency(%q<launchy>, [">= 0.3.7"])
@@ -209,7 +210,7 @@ Gem::Specification.new do |s|
209
210
  s.add_development_dependency(%q<rack-test>, [">= 0"])
210
211
  else
211
212
  s.add_dependency(%q<termcolor>, [">= 1.2.0", "< 1.2.2"])
212
- s.add_dependency(%q<rroonga>, [">= 1.1.0", "< 2.1.0"])
213
+ s.add_dependency(%q<rroonga>, [">= 1.1.0"])
213
214
  s.add_dependency(%q<rack>, [">= 1.3.4"])
214
215
  s.add_dependency(%q<sinatra>, [">= 1.2.6"])
215
216
  s.add_dependency(%q<launchy>, [">= 0.3.7"])
@@ -225,7 +226,7 @@ Gem::Specification.new do |s|
225
226
  end
226
227
  else
227
228
  s.add_dependency(%q<termcolor>, [">= 1.2.0", "< 1.2.2"])
228
- s.add_dependency(%q<rroonga>, [">= 1.1.0", "< 2.1.0"])
229
+ s.add_dependency(%q<rroonga>, [">= 1.1.0"])
229
230
  s.add_dependency(%q<rack>, [">= 1.3.4"])
230
231
  s.add_dependency(%q<sinatra>, [">= 1.2.6"])
231
232
  s.add_dependency(%q<launchy>, [">= 0.3.7"])
@@ -76,6 +76,11 @@ class TestCLI < Test::Unit::TestCase
76
76
  end
77
77
  end
78
78
 
79
+ def test_files
80
+ command("files")
81
+ command("files -r")
82
+ end
83
+
79
84
  private
80
85
 
81
86
  def command(arg)
@@ -165,7 +165,7 @@ module Milkode
165
165
 
166
166
  def t_touch
167
167
  r = @packages.add("r1", "", {})
168
- t = Time.now
168
+ t = Util::truncate_nsec(Time.now)
169
169
 
170
170
  assert_not_equal t, r.updatetime
171
171
  assert_not_equal t, r.viewtime
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: milkode
3
3
  version: !ruby/object:Gem::Version
4
- hash: 55
4
+ hash: 53
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 9
9
- - 6
10
- version: 0.9.6
9
+ - 7
10
+ version: 0.9.7
11
11
  platform: ruby
12
12
  authors:
13
13
  - ongaeshi
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-12-28 00:00:00 +09:00
18
+ date: 2013-01-30 00:00:00 +09:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -57,14 +57,6 @@ dependencies:
57
57
  - 1
58
58
  - 0
59
59
  version: 1.1.0
60
- - - <
61
- - !ruby/object:Gem::Version
62
- hash: 11
63
- segments:
64
- - 2
65
- - 1
66
- - 0
67
- version: 2.1.0
68
60
  requirement: *id002
69
61
  - !ruby/object:Gem::Dependency
70
62
  type: :runtime
@@ -264,6 +256,7 @@ extra_rdoc_files:
264
256
  - README.rdoc
265
257
  files:
266
258
  - .document
259
+ - .travis.yml
267
260
  - Gemfile
268
261
  - HISTORY.ja.rdoc
269
262
  - HISTORY.rdoc