filerary 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
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