filerary 0.0.5 → 0.0.6

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9c0e71d2319658916f1c7b5280c5a03cfa5d22bc
4
- data.tar.gz: b35f8e013d049adf3051f29c254f8910df6bc2a8
3
+ metadata.gz: c7ddc8adb48ea4b83698e623511cdc5726cc0f05
4
+ data.tar.gz: 1aa65fc9463f42ad20da85150ca4f89355d2584f
5
5
  SHA512:
6
- metadata.gz: 55687ba581394e327e50e79552077f8d3fd50d3e9f08b7ca8d0b3bcd4abc8a42b07f326387e74131841d16bd3f60a7bca50c4147bcd4f5a55540e553f9f4b2db
7
- data.tar.gz: 9b1c92c656ac0be51eb7ab7b216bf4e98a36d15252ec43c6c121589933d5e8c463d752e4561b45ac265efcfdacf674a5ed7f70de551c7360527a1a330b989845
6
+ metadata.gz: 224cd1a37fcfc3f82340767c905b5f9bcc0edb0422e467e38b74a47bbad5ba54397f1c19596adc323497db0fced0e33e9075182d7a2064d3b98896efb30f7698
7
+ data.tar.gz: 5316ec5a05c9bf8e78374e11e89635c2d2cb007e34b27c8f9d744c7314facf9c7f478f871aa90ce21bf2ea9994364a079069b93c8339ca609473d52bb77b92a2
data/.travis.yml CHANGED
@@ -4,6 +4,10 @@ rvm:
4
4
  - 2.0.0
5
5
  - 2.1.0
6
6
  - ruby-head
7
+ matrix:
8
+ allow_failures:
9
+ - rvm: ruby-head
10
+ fast_finish: true
7
11
  before_install:
8
12
  - sudo apt-get update -qq
9
13
  - sudo apt-get install -qq -y libreoffice libreoffice-l10n-ja
data/README.md CHANGED
@@ -44,6 +44,12 @@ $ gem install filerary
44
44
  $ filerary collect FILE...
45
45
  ```
46
46
 
47
+ ### List filenames in the collection
48
+
49
+ ```bash
50
+ $ filerary list
51
+ ```
52
+
47
53
  ### Search for files in the collection (very fast!)
48
54
 
49
55
  ```bash
@@ -55,6 +61,11 @@ $ filerary search WORD
55
61
  ```bash
56
62
  $ filerary cleanup
57
63
  ```
64
+ ### Remove a file in the collection
65
+
66
+ ```bash
67
+ $ filerary remove PATH
68
+ ```
58
69
 
59
70
  ## Authors
60
71
 
data/filerary.gemspec CHANGED
@@ -13,10 +13,6 @@ Gem::Specification.new do |spec|
13
13
  spec.homepage = "https://github.com/myokoym/filerary"
14
14
  spec.license = "LGPLv2.1 or later"
15
15
 
16
- spec.post_install_message = <<-END_OF_MESSAGE
17
- Filerary will use '#{File.join(File.expand_path("~"), ".filerary")}' for data storage. Thanks!
18
- END_OF_MESSAGE
19
-
20
16
  spec.files = `git ls-files -z`.split("\x0")
21
17
  spec.executables = spec.files.grep(%r{^bin/}) {|f| File.basename(f) }
22
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
@@ -9,6 +9,11 @@ module Filerary
9
9
  puts VERSION
10
10
  end
11
11
 
12
+ desc "list", "List filenames in the collection"
13
+ def list
14
+ puts Filerary::Librarian.new.list
15
+ end
16
+
12
17
  desc "collect FILE...", "Collect files (takes time)"
13
18
  def collect(*files)
14
19
  Filerary::Librarian.new.collect(files)
@@ -23,5 +28,10 @@ module Filerary
23
28
  def cleanup
24
29
  Filerary::Librarian.new.cleanup
25
30
  end
31
+
32
+ desc "remove PATH", "Remove a file in the collection"
33
+ def remove(path)
34
+ Filerary::Librarian.new.remove(path)
35
+ end
26
36
  end
27
37
  end
@@ -33,6 +33,16 @@ module Filerary
33
33
  @files = GrnMini::Hash.new("Files")
34
34
  end
35
35
 
36
+ def size
37
+ @files.size
38
+ end
39
+
40
+ def list
41
+ @files.collect do |record|
42
+ record._key
43
+ end
44
+ end
45
+
36
46
  def collect(paths)
37
47
  paths = [paths] if paths.is_a?(String)
38
48
 
@@ -43,8 +53,11 @@ module Filerary
43
53
  next if /\/\.git\// =~ path
44
54
  next if @files[path] && @files[path].updated_at > File.mtime(path)
45
55
 
56
+ content = read_content(path)
57
+ next unless content
58
+
46
59
  @files[path] = {
47
- :content => read_content(path),
60
+ :content => content,
48
61
  :updated_at => Time.now,
49
62
  }
50
63
  end
@@ -67,6 +80,10 @@ module Filerary
67
80
  end
68
81
  end
69
82
 
83
+ def remove(path)
84
+ @files.delete(path)
85
+ end
86
+
70
87
  private
71
88
  def default_base_dir
72
89
  File.join(File.expand_path("~"), ".filerary")
@@ -84,7 +101,7 @@ module Filerary
84
101
  text = text_data.body
85
102
  end
86
103
 
87
- return path unless text
104
+ return unless text
88
105
 
89
106
  # TODO: I want to specify encoding in ChupaText side.
90
107
  text.force_encoding(Encoding.default_external)
@@ -1,3 +1,3 @@
1
1
  module Filerary
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
@@ -26,8 +26,25 @@ class FileraryTest < Test::Unit::TestCase
26
26
  assert_equal(default_db_dir, librarian.db_dir)
27
27
  end
28
28
 
29
- class CollectTest < self
30
- class ArgumentTest < self
29
+ sub_test_case("list") do
30
+ def test_empty
31
+ assert_equal([], @librarian.list)
32
+ end
33
+
34
+ def test_one_file
35
+ @librarian.collect(__FILE__)
36
+ assert_equal([__FILE__], @librarian.list)
37
+ end
38
+
39
+ def test_multiple_files
40
+ files = Dir.glob("#{@test_dir}/*.rb").take(2)
41
+ @librarian.collect(files)
42
+ assert_equal(files, @librarian.list)
43
+ end
44
+ end
45
+
46
+ sub_test_case("collect") do
47
+ sub_test_case("argument") do
31
48
  def test_string
32
49
  assert_equal([__FILE__], @librarian.collect(__FILE__))
33
50
  end
@@ -37,30 +54,42 @@ class FileraryTest < Test::Unit::TestCase
37
54
  end
38
55
  end
39
56
 
40
- class FilePathTest < self
57
+ sub_test_case("file path") do
41
58
  def test_multibyte
42
59
  Dir.mktmpdir do |tmpdir|
43
60
  path = File.join(tmpdir, "マルチバイト.txt")
44
61
  FileUtils.touch(path)
45
- assert_equal([path], @librarian.collect(path))
62
+ @librarian.collect(path)
63
+ assert_equal(1, @librarian.size)
46
64
  end
47
65
  end
48
66
  end
49
67
 
50
- class FileTypeTest < self
68
+ sub_test_case("file type") do
51
69
  def test_pdf
52
70
  path = File.join(@test_fixtures_dir, "test-pdf.pdf")
53
- assert_equal([path], @librarian.collect(path))
71
+ @librarian.collect(path)
72
+ assert_equal(1, @librarian.size)
54
73
  end
55
74
 
56
75
  def test_xls
57
76
  path = File.join(@test_fixtures_dir, "test-excel.xls")
58
- assert_equal([path], @librarian.collect(path))
77
+ @librarian.collect(path)
78
+ assert_equal(1, @librarian.size)
79
+ end
80
+ end
81
+
82
+ sub_test_case("file content") do
83
+ def test_empty
84
+ path = "empty"
85
+ stub(@librarian).read_content(path) { nil }
86
+ @librarian.collect(path)
87
+ assert_equal(0, @librarian.size)
59
88
  end
60
89
  end
61
90
  end
62
91
 
63
- class SearchTest < self
92
+ sub_test_case("search") do
64
93
  def test_found
65
94
  @librarian.collect(__FILE__)
66
95
  assert_equal([__FILE__], @librarian.search("Librarian"))
@@ -96,30 +125,68 @@ class FileraryTest < Test::Unit::TestCase
96
125
  end
97
126
  end
98
127
 
99
- class CleanupTest < self
100
- def setup
101
- super
102
- @temp_file = File.join(@test_tmp_dir, "cleanup.txt")
103
- FileUtils.cp(__FILE__, @temp_file)
104
- @librarian.collect(@temp_file)
105
- end
128
+ sub_test_case("cleanup") do
129
+ sub_test_case("ascii file name") do
130
+ def setup
131
+ super
132
+ @temp_file = File.join(@test_tmp_dir, "cleanup.txt")
133
+ FileUtils.cp(__FILE__, @temp_file)
134
+ @librarian.collect(@temp_file)
135
+ end
136
+
137
+ def teardown
138
+ super
139
+ FileUtils.rm_f(@temp_file)
140
+ end
141
+
142
+ def test_removed
143
+ FileUtils.rm(@temp_file)
144
+ assert_equal([@temp_file], @librarian.search("Librarian"))
145
+ @librarian.cleanup
146
+ assert_equal([], @librarian.search("Librarian"))
147
+ end
106
148
 
107
- def teardown
108
- super
109
- FileUtils.rm_f(@temp_file)
149
+ def test_not_removed
150
+ assert_equal([@temp_file], @librarian.search("Librarian"))
151
+ @librarian.cleanup
152
+ assert_equal([@temp_file], @librarian.search("Librarian"))
153
+ end
110
154
  end
111
155
 
112
- def test_removed
113
- FileUtils.rm(@temp_file)
114
- assert_equal([@temp_file], @librarian.search("Librarian"))
115
- @librarian.cleanup
116
- assert_equal([], @librarian.search("Librarian"))
156
+ sub_test_case("multibyte file name") do
157
+ def setup
158
+ super
159
+ @temp_file = File.join(@test_tmp_dir, "マルチバイト.txt")
160
+ FileUtils.cp(__FILE__, @temp_file)
161
+ @librarian.collect(@temp_file)
162
+ end
163
+
164
+ def teardown
165
+ super
166
+ FileUtils.rm_f(@temp_file)
167
+ end
168
+
169
+ def test_removed
170
+ FileUtils.rm(@temp_file)
171
+ assert_equal([@temp_file], @librarian.search("Librarian"))
172
+ @librarian.cleanup
173
+ assert_equal([], @librarian.search("Librarian"))
174
+ end
175
+
176
+ def test_not_removed
177
+ assert_equal([@temp_file], @librarian.search("Librarian"))
178
+ @librarian.cleanup
179
+ assert_equal([@temp_file], @librarian.search("Librarian"))
180
+ end
117
181
  end
182
+ end
118
183
 
119
- def test_not_removed
120
- assert_equal([@temp_file], @librarian.search("Librarian"))
121
- @librarian.cleanup
122
- assert_equal([@temp_file], @librarian.search("Librarian"))
184
+ sub_test_case("remove") do
185
+ def test_one_file
186
+ @librarian.collect(__FILE__)
187
+ assert_equal(1, @librarian.size)
188
+ @librarian.remove(__FILE__)
189
+ assert_equal(0, @librarian.size)
123
190
  end
124
191
  end
125
192
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: filerary
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masafumi Yokoyama
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-19 00:00:00.000000000 Z
11
+ date: 2014-02-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: grn_mini
@@ -180,8 +180,7 @@ homepage: https://github.com/myokoym/filerary
180
180
  licenses:
181
181
  - LGPLv2.1 or later
182
182
  metadata: {}
183
- post_install_message: |
184
- Filerary will use '/home/myokoym/.filerary' for data storage. Thanks!
183
+ post_install_message:
185
184
  rdoc_options: []
186
185
  require_paths:
187
186
  - lib