dircat 0.1.12 → 0.2.0

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.
Files changed (88) hide show
  1. data/LICENSE.txt +1 -1
  2. data/README.md +31 -6
  3. data/bin/dircat +5 -1
  4. data/bin/scat +9 -0
  5. data/dircat.gemspec +48 -15
  6. data/examples/example.rb +2 -1
  7. data/lib/dircat.rb +29 -34
  8. data/lib/dircat/cat_on_sqlite/cat_on_sqlite.rb +177 -0
  9. data/lib/dircat/cat_on_sqlite/directory_visitor.rb +106 -0
  10. data/lib/dircat/cat_on_sqlite/migration/00_create_dircat_properties.rb +13 -0
  11. data/lib/dircat/cat_on_sqlite/migration/01_create_categories.rb +12 -0
  12. data/lib/dircat/cat_on_sqlite/migration/02_create_images.rb +16 -0
  13. data/lib/dircat/cat_on_sqlite/migration/03_create_items.rb +23 -0
  14. data/lib/dircat/cat_on_sqlite/migration/04_create_taggings.rb +13 -0
  15. data/lib/dircat/cat_on_sqlite/migration/05_create_tags.rb +13 -0
  16. data/lib/dircat/cat_on_sqlite/model/category.rb +16 -0
  17. data/lib/dircat/cat_on_sqlite/model/image.rb +24 -0
  18. data/lib/dircat/cat_on_sqlite/model/item.rb +19 -0
  19. data/lib/dircat/cat_on_sqlite/model/tag.rb +58 -0
  20. data/lib/dircat/cat_on_sqlite/model/tagging.rb +9 -0
  21. data/lib/dircat/cat_on_sqlite/simple_cataloger_error.rb +9 -0
  22. data/lib/dircat/cat_on_sqlite_cli/cli_cat.rb +25 -0
  23. data/lib/dircat/cat_on_sqlite_cli/cli_server.rb +65 -0
  24. data/lib/dircat/cat_on_sqlite_cli/cmd_create.rb +56 -0
  25. data/lib/dircat/cat_on_sqlite_cli/cmd_list.rb +72 -0
  26. data/lib/dircat/cat_on_sqlite_cli/cmd_server.rb +62 -0
  27. data/lib/dircat/cat_on_sqlite_cli/cmd_update.rb +49 -0
  28. data/lib/dircat/{cat.rb → cat_on_yaml/cat_on_yaml.rb} +22 -10
  29. data/lib/dircat/cat_on_yaml/entry.rb +64 -0
  30. data/lib/dircat/{cli → cat_on_yaml_cli}/cli_dircat.rb +0 -0
  31. data/lib/dircat/{cli → cat_on_yaml_cli}/command_build.rb +53 -12
  32. data/lib/dircat/{cli → cat_on_yaml_cli}/command_diff.rb +4 -4
  33. data/lib/dircat/{cli → cat_on_yaml_cli}/command_query.rb +16 -2
  34. data/lib/dircat/config.rb +25 -0
  35. data/lib/dircat/extensions.rb +26 -0
  36. data/lib/dircat/server/helpers.rb +60 -0
  37. data/lib/dircat/server/my_static.rb +40 -0
  38. data/lib/dircat/server/web_server.rb +176 -0
  39. data/lib/dircat/version.rb +2 -1
  40. data/lib/dircat_on_sqlite.rb +31 -0
  41. data/lib/dircat_on_sqlite_cli.rb +37 -0
  42. data/lib/simple_cataloger_dm/cli.rb +32 -0
  43. data/lib/simple_cataloger_dm/core.rb +43 -0
  44. data/lib/simple_cataloger_dm/core/catalog.rb +141 -0
  45. data/lib/simple_cataloger_dm/core/directory_visitor.rb +107 -0
  46. data/lib/simple_cataloger_dm/core/extensions.rb +26 -0
  47. data/lib/simple_cataloger_dm/core/simple_cataloger_error.rb +9 -0
  48. data/lib/simple_cataloger_dm/models/category.rb +21 -0
  49. data/lib/simple_cataloger_dm/models/image.rb +30 -0
  50. data/lib/simple_cataloger_dm/models/item.rb +24 -0
  51. data/lib/simple_cataloger_dm/models/tag.rb +62 -0
  52. data/lib/simple_cataloger_dm/models/tagging.rb +11 -0
  53. data/lib/simple_cataloger_dm/server/helpers.rb +60 -0
  54. data/lib/simple_cataloger_dm/server/my_static.rb +40 -0
  55. data/lib/simple_cataloger_dm/server/web_server.rb +171 -0
  56. data/spec/dircat/cat_on_sqlite/cat_on_sqlite_spec.rb +41 -0
  57. data/spec/dircat/cat_on_sqlite_web/web_server_spec.rb +30 -0
  58. data/spec/dircat/{cat_spec.rb → cat_on_yaml/cat_on_yaml_spec.rb} +20 -14
  59. data/spec/dircat/{cli → cat_on_yaml_cli}/cli_dircat_spec.rb +0 -0
  60. data/spec/dircat/{cli → cat_on_yaml_cli}/command_build_spec.rb +4 -4
  61. data/spec/dircat/{cli → cat_on_yaml_cli}/command_diff_spec.rb +0 -0
  62. data/spec/dircat/{cli → cat_on_yaml_cli}/command_query_spec.rb +1 -1
  63. data/spec/fixtures/certified_output/cat_dir1_20120811.yaml +25 -0
  64. data/spec/fixtures/certified_output/cat_dir2_20120811.yaml +34 -0
  65. data/spec/fixtures/certified_output/{dircat1.yaml → dircat1_version_0.1.yaml} +0 -0
  66. data/spec/fixtures/certified_output/{dircat2.yaml → dircat2_version_0.1.yaml} +0 -0
  67. data/spec/fixtures/dir4/file1.txt +1 -0
  68. data/spec/fixtures/dir4/file2.txt +1 -0
  69. data/spec/fixtures/dir4/subdir/file3.txt +1 -0
  70. data/spec/fixtures/films/A-Z/A/Arancia meccanica [Stanley Kubrick][1971]/folder.jpg +0 -0
  71. data/spec/fixtures/films/A-Z/P/Plan 9 [Edward Wood][1959]/folder.jpg +0 -0
  72. data/spec/fixtures/films/Directors/[Akira Kurosawa]/[1940] Dersu Uzala [5]/folder.jpg +0 -0
  73. data/spec/fixtures/films/Directors/[Akira Kurosawa]/[1965] Barbarossa [Toshiro Mifune][4]/folder.jpg +0 -0
  74. data/spec/fixtures/films/Directors/[Federico Fellini]/[1963] 8 e mezzo [Marcello Mastroianni][Claudia Cardinale][5]/folder.jpg +0 -0
  75. data/spec/fixtures/films/Directors/[Woody Allen]/[1977] Annie Hall [Diane Keaton][5]/folder.jpg +0 -0
  76. data/{.gemtest → spec/fixtures/readme.txt} +0 -0
  77. data/spec/fixtures/tmp/test_ar.sqlite3 +0 -0
  78. data/spec/fixtures/tmp/test_ar.yml +7 -0
  79. data/spec/generate_directories_to_catalog.rb +80 -0
  80. data/spec/generate_mysql_catalog.rb +124 -0
  81. data/spec/spec_helper.rb +29 -0
  82. data/tasks/rspec.rake +0 -2
  83. metadata +390 -112
  84. data/lib/dircat/entry.rb +0 -61
  85. data/lib/dircat/extension_md5.rb +0 -25
  86. data/lib/dircat/extension_numeric.rb +0 -15
  87. data/spec/dircat/md5_spec.rb +0 -8
  88. data/spec/dircat/numeric_spec.rb +0 -13
@@ -22,13 +22,13 @@ describe CommandBuild do
22
22
 
23
23
 
24
24
  it "should build a catalog from a directory" do
25
- expect_filename = File.join(@certified_output_dirname, "dircat1.yaml")
26
- result_filename = File.join(@tmp_output_dirname, "dircat1.yaml")
25
+ expect_filename = File.join(@certified_output_dirname, "cat_dir1_20120811.yaml")
26
+ result_filename = File.join(@tmp_output_dirname, "cat_dir1.yaml")
27
27
 
28
28
  capture_out { CliDirCat.run("build -f -o #{result_filename} #{@dir1_dirname}".split) }
29
29
 
30
- cat_expect = Cat.from_file(expect_filename)
31
- cat_result = Cat.from_file(result_filename)
30
+ cat_expect = CatOnYaml.from_file(expect_filename)
31
+ cat_result = CatOnYaml.from_file(result_filename)
32
32
 
33
33
  (cat_result - cat_result).size.should == 0
34
34
 
@@ -13,7 +13,7 @@ describe CommandQuery do
13
13
  end
14
14
 
15
15
  it "should show catalogs info" do
16
- cat_filename = File.join( @certified_output_dirname, "dircat1.yaml" )
16
+ cat_filename = File.join( @certified_output_dirname, "cat_dir1_20120811.yaml" )
17
17
  out = capture_out { CliDirCat.run "query #{cat_filename}".split }.out
18
18
  out.should match /file: 2/
19
19
  out.should match /Bytes: 4/
@@ -0,0 +1,25 @@
1
+ --- !ruby/object:DirCat::DirCatSer
2
+ table:
3
+ :dircat_version: 0.1.13
4
+ :dirname: /home/gf/GioPrj/dircat/spec/fixtures/dir1
5
+ :ctime: !ruby/object:DateTime 2012-08-11 16:40:01.124490762 +02:00
6
+ :entries:
7
+ - !ruby/object:DirCat::EntrySer
8
+ table:
9
+ :md5: !binary |-
10
+ NjBiNzI1ZjEwYzljODVjNzBkOTc4ODBkZmU4MTkxYjM=
11
+ :name: file1.txt
12
+ :path: /home/gf/GioPrj/dircat/spec/fixtures/dir1
13
+ :size: 2
14
+ :mtime: 2010-04-19 23:00:12.000000000 +02:00
15
+ modifiable: true
16
+ - !ruby/object:DirCat::EntrySer
17
+ table:
18
+ :md5: !binary |-
19
+ NDEyNGJjMGE5MzM1YzI3ZjA4NmYyNGJhMjA3YTQ5MTI=
20
+ :name: file3.txt
21
+ :path: /home/gf/GioPrj/dircat/spec/fixtures/dir1/subdir
22
+ :size: 2
23
+ :mtime: 2010-04-19 23:00:12.000000000 +02:00
24
+ modifiable: true
25
+ modifiable: true
@@ -0,0 +1,34 @@
1
+ --- !ruby/object:DirCat::DirCatSer
2
+ table:
3
+ :dircat_version: 0.1.13
4
+ :dirname: /home/gf/GioPrj/dircat/spec/fixtures/dir2
5
+ :ctime: !ruby/object:DateTime 2012-08-11 16:40:07.497587890 +02:00
6
+ :entries:
7
+ - !ruby/object:DirCat::EntrySer
8
+ table:
9
+ :md5: !binary |-
10
+ NjBiNzI1ZjEwYzljODVjNzBkOTc4ODBkZmU4MTkxYjM=
11
+ :name: file1.txt
12
+ :path: /home/gf/GioPrj/dircat/spec/fixtures/dir2
13
+ :size: 2
14
+ :mtime: 2010-04-19 23:00:12.000000000 +02:00
15
+ modifiable: true
16
+ - !ruby/object:DirCat::EntrySer
17
+ table:
18
+ :md5: !binary |-
19
+ M2I1ZDVjMzcxMjk1NTA0MjIxMjMxNjE3M2NjZjM3YmU=
20
+ :name: file2.txt
21
+ :path: /home/gf/GioPrj/dircat/spec/fixtures/dir2
22
+ :size: 2
23
+ :mtime: 2010-04-19 23:00:12.000000000 +02:00
24
+ modifiable: true
25
+ - !ruby/object:DirCat::EntrySer
26
+ table:
27
+ :md5: !binary |-
28
+ NDEyNGJjMGE5MzM1YzI3ZjA4NmYyNGJhMjA3YTQ5MTI=
29
+ :name: file3.txt
30
+ :path: /home/gf/GioPrj/dircat/spec/fixtures/dir2/subdir
31
+ :size: 2
32
+ :mtime: 2010-04-19 23:00:12.000000000 +02:00
33
+ modifiable: true
34
+ modifiable: true
@@ -0,0 +1 @@
1
+ a
@@ -0,0 +1 @@
1
+ subdir/file2.txt
@@ -0,0 +1 @@
1
+ aa
File without changes
Binary file
@@ -0,0 +1,7 @@
1
+ ---
2
+ :roots: []
3
+ :ignore:
4
+ - sub
5
+ - subtitles
6
+ - images
7
+ :version: 0.2.0
@@ -0,0 +1,80 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require 'fileutils'
4
+ require 'rubygems'
5
+ require 'RMagick'
6
+
7
+ #
8
+ # Generate a example directory structure to catalog
9
+ #
10
+ class Generator
11
+
12
+ def initialize(verbose = true)
13
+ @verbose = verbose
14
+ @catalog_dir = File.expand_path File.join(File.dirname(__FILE__), %w{.. spec fixtures films})
15
+ end
16
+
17
+ def generate_folder_jpg(film, folder_filename)
18
+ canvas = Magick::Image.new(240, 300,
19
+ Magick::HatchFill.new('white', 'lightcyan2'))
20
+ gc = Magick::Draw.new
21
+
22
+ # Draw curve
23
+ # gc.stroke('blue')
24
+ # gc.stroke_width(3)
25
+ # gc.fill_opacity(0)
26
+ # gc.bezier(45, 150, 45, 20, 195, 280, 195, 150)
27
+
28
+ # Draw endpoints
29
+ # gc.stroke('gray50')
30
+ # gc.stroke_width(1)
31
+ # gc.circle(45, 150, 49, 150)
32
+ # gc.circle(195, 150, 199, 150)
33
+
34
+ # Draw control points
35
+ # gc.fill_opacity(1)
36
+ # gc.fill('gray50')
37
+ # gc.circle(45, 17, 49, 17)
38
+ # gc.circle(195, 280, 199, 280)
39
+
40
+ # Connect the points
41
+ # gc.line(45, 150, 45, 17)
42
+ # gc.line(195, 280, 195, 150)
43
+
44
+ # Annotate
45
+ # gc.stroke('transparent').fill('black')
46
+ # gc.text(27, 175, "'45,150'")
47
+ # gc.text(175, 138, "'195,150'")
48
+ # gc.text(55, 22, "'45,20'")
49
+ # gc.text(143, 285, "'195,280'")
50
+ gc.pointsize(20)
51
+ gc.text_align(Magick::CenterAlign)
52
+ gc.text(100, 50, film)
53
+ gc.draw(canvas)
54
+
55
+ canvas.write(folder_filename)
56
+ puts "write '#{folder_filename}'" if @verbose
57
+ end
58
+
59
+ def generate(dirname)
60
+ dirname = File.join(@catalog_dir, dirname)
61
+ FileUtils.mkdir_p(dirname) unless File.exists?(dirname)
62
+ folder_filename = File.join(dirname, "folder.jpg")
63
+ generate_folder_jpg(File.basename(dirname), folder_filename)
64
+ end
65
+
66
+ def run
67
+ generate("A-Z/A/Arancia meccanica [Stanley Kubrick][1971]")
68
+ generate("A-Z/P/Plan 9 [Edward Wood][1959]")
69
+
70
+ generate("Directors/[Akira Kurosawa]/[1940] Dersu Uzala [5]")
71
+ generate("Directors/[Akira Kurosawa]/[1965] Barbarossa [Toshiro Mifune][4]")
72
+ generate("Directors/[Federico Fellini]/[1963] 8 e mezzo [Marcello Mastroianni][Claudia Cardinale][5]")
73
+ generate("Directors/[Woody Allen]/[1977] Annie Hall [Diane Keaton][5]")
74
+ end
75
+
76
+ end
77
+
78
+ if __FILE__ == $0
79
+ Generator.new.run
80
+ end
@@ -0,0 +1,124 @@
1
+ class TestCatalogHelper
2
+
3
+ def self.create_test_catalog(verbose = false)
4
+
5
+ filename = File.join(TMP_DIR, "test_ar")
6
+ if File.exist?(filename)
7
+ puts "catalog already exists"
8
+ return
9
+ end
10
+
11
+ CatOnSqlite.new(filename).create
12
+
13
+ #
14
+ # category
15
+ #
16
+ actor = Category.create(:name => "Actor")
17
+ director = Category.create(:name => "Director")
18
+
19
+ #
20
+ # tags
21
+ #
22
+ t1 = Tag.create(:name => "Mia Farrow", :category => actor)
23
+ keaton = Tag.create(:name => "Diane Keaton", :category => actor)
24
+
25
+ allen = Tag.create(:name => "Woody Allen", :category => director)
26
+ d1 = Tag.create(:name => "Fellini", :category => director)
27
+ d2 = Tag.create(:name => "Kurosawa", :category => director)
28
+
29
+ #
30
+ # films
31
+ #
32
+ play_again_sam = Item.new(:name => "Play It Again, Sam", :size => 10, :added_at => Time.new, :path => "path", :path_from_catalog_root => "path_from_catalog_root")
33
+ play_again_sam.tags << keaton
34
+ play_again_sam.tags << allen
35
+ play_again_sam.save
36
+
37
+ i = Image.new(:path => "path", :path_from_catalog_root => "path from root")
38
+ i.item = play_again_sam
39
+ i.save
40
+
41
+ annie_hall = Item.new(:name => "Annie Hall", :size => 10, :added_at => Time.new, :path => "path", :path_from_catalog_root => "path_from_catalog_root")
42
+ annie_hall.tags << allen
43
+ annie_hall.tags << keaton
44
+ annie_hall.save
45
+ i = Image.new(:path => "path", :path_from_catalog_root => "path from root")
46
+ i.item = annie_hall
47
+ i.save
48
+
49
+ #
50
+ # images
51
+ #
52
+
53
+ if verbose
54
+ puts "category"
55
+ Category.all.each do |c|
56
+ puts "\t #{c.name}"
57
+ end
58
+
59
+ puts "tag"
60
+ Tag.all.each do |t|
61
+ puts "\t #{t.name} #{t.category.name}"
62
+ end
63
+
64
+ puts "items"
65
+ Item.all.each do |i|
66
+ puts "\t #{i.name}"
67
+ end
68
+ end
69
+
70
+ end
71
+
72
+ def self.read_test_catalog
73
+ filename = File.join(TMP_DIR, "test_ar")
74
+ CatOnSqlite.new(filename).open
75
+
76
+ puts "category"
77
+ Category.all.each do |c|
78
+ puts "\t #{c.name}"
79
+ end
80
+
81
+ Category.find_by_name("Actor").items.each do |i|
82
+ pp i
83
+ end
84
+
85
+ #
86
+ # Tags
87
+ #
88
+ puts "\ntag"
89
+ Tag.all.each do |t|
90
+ puts "\t #{t.name} #{t.category.name}"
91
+ end
92
+
93
+ puts "\nTag -> Item"
94
+ Tag.find_by_name("Woody Allen").items.each do |i|
95
+ puts "\t #{i}"
96
+ end
97
+
98
+ puts "extract"
99
+ dir_name = "Broadway Danny Rose [Woody Allen][Mia Farrow][1984]"
100
+ puts Tag.extract_tags(dir_name)
101
+ puts Tag.extract_name(dir_name)
102
+ Tag.match_category("1984")
103
+ Tag.match_category("1985")
104
+
105
+ #
106
+ # Items
107
+ #
108
+ puts "\nitems"
109
+ Item.all.each do |i|
110
+ puts "\t #{i.name}"
111
+ i.images.each do |im|
112
+ puts "\t\t #{im.path}"
113
+ end
114
+ end
115
+
116
+ #
117
+ # Images
118
+ #
119
+ puts Image.first.to_json
120
+
121
+ end
122
+
123
+ end
124
+
data/spec/spec_helper.rb CHANGED
@@ -1,13 +1,41 @@
1
1
  # -*- coding: utf-8 -*-
2
+
3
+ #
4
+ # std lib
5
+ #
2
6
  require "stringio"
3
7
  require 'ostruct'
4
8
  require 'tmpdir'
5
9
 
10
+ #
11
+ # rubygems
12
+ #
13
+ require 'sinatra'
14
+ require 'rack/test'
15
+
16
+ set :environment, :test
17
+ set :run, false
18
+ set :raise_errors, true
19
+ set :logging, false
20
+
21
+ require 'rspec'
22
+
23
+ #
24
+ #
25
+ #
6
26
  $:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
27
+
7
28
  require 'dircat'
29
+ require 'dircat_on_sqlite'
30
+ require 'dircat_on_sqlite_cli'
8
31
  include DirCat
32
+ include SimpleCataloger
9
33
 
10
34
  TEST_DIR = File.expand_path(File.join(File.dirname(__FILE__), "fixtures"))
35
+ TMP_DIR = File.join(TEST_DIR, "tmp")
36
+
37
+ require 'generate_directories_to_catalog'
38
+ require 'generate_mysql_catalog'
11
39
 
12
40
  def capture_out
13
41
  old_stdout, old_stderr = $stdout, $stderr
@@ -20,3 +48,4 @@ def capture_out
20
48
  end
21
49
  OpenStruct.new(:out => out.string, :err => err.string)
22
50
  end
51
+
data/tasks/rspec.rake CHANGED
@@ -10,5 +10,3 @@ begin
10
10
  rescue LoadError
11
11
  puts "rspec (or a dependency) not available. Install it with: sudo gem install jeweler"
12
12
  end
13
-
14
-
metadata CHANGED
@@ -1,173 +1,451 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: dircat
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
4
5
  prerelease:
5
- version: 0.1.12
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Tokiro
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-02-25 00:00:00 +01:00
14
- default_executable:
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
17
- name: treevisitor
18
- prerelease: false
19
- requirement: &id001 !ruby/object:Gem::Requirement
20
- none: false
21
- requirements:
22
- - - "="
23
- - !ruby/object:Gem::Version
24
- version: 0.2.2
12
+ date: 2012-09-19 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: tree.rb
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
25
22
  type: :runtime
26
- version_requirements: *id001
27
- - !ruby/object:Gem::Dependency
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
28
31
  name: optparse-command
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
29
39
  prerelease: false
30
- requirement: &id002 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
31
41
  none: false
32
- requirements:
33
- - - "="
34
- - !ruby/object:Gem::Version
35
- version: 0.1.6
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: sinatra-group-items
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: ansi
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: activerecord
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: sqlite3
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: sinatra
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: haml
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :runtime
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ - !ruby/object:Gem::Dependency
143
+ name: sass
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ type: :runtime
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ - !ruby/object:Gem::Dependency
159
+ name: json
160
+ requirement: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ! '>='
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
36
166
  type: :runtime
37
- version_requirements: *id002
38
- - !ruby/object:Gem::Dependency
39
- name: rake
40
167
  prerelease: false
41
- requirement: &id003 !ruby/object:Gem::Requirement
168
+ version_requirements: !ruby/object:Gem::Requirement
42
169
  none: false
43
- requirements:
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- version: "0"
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ - !ruby/object:Gem::Dependency
175
+ name: rake
176
+ requirement: !ruby/object:Gem::Requirement
177
+ none: false
178
+ requirements:
179
+ - - ! '>='
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
47
182
  type: :development
48
- version_requirements: *id003
49
- - !ruby/object:Gem::Dependency
50
- name: yard
51
183
  prerelease: false
52
- requirement: &id004 !ruby/object:Gem::Requirement
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
186
+ requirements:
187
+ - - ! '>='
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
190
+ - !ruby/object:Gem::Dependency
191
+ name: yard
192
+ requirement: !ruby/object:Gem::Requirement
53
193
  none: false
54
- requirements:
55
- - - ">="
56
- - !ruby/object:Gem::Version
57
- version: "0"
194
+ requirements:
195
+ - - ! '>='
196
+ - !ruby/object:Gem::Version
197
+ version: '0'
58
198
  type: :development
59
- version_requirements: *id004
60
- - !ruby/object:Gem::Dependency
61
- name: bundler
62
199
  prerelease: false
63
- requirement: &id005 !ruby/object:Gem::Requirement
200
+ version_requirements: !ruby/object:Gem::Requirement
201
+ none: false
202
+ requirements:
203
+ - - ! '>='
204
+ - !ruby/object:Gem::Version
205
+ version: '0'
206
+ - !ruby/object:Gem::Dependency
207
+ name: bundler
208
+ requirement: !ruby/object:Gem::Requirement
64
209
  none: false
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: "0"
210
+ requirements:
211
+ - - ! '>='
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
69
214
  type: :development
70
- version_requirements: *id005
71
- - !ruby/object:Gem::Dependency
215
+ prerelease: false
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ none: false
218
+ requirements:
219
+ - - ! '>='
220
+ - !ruby/object:Gem::Version
221
+ version: '0'
222
+ - !ruby/object:Gem::Dependency
72
223
  name: rspec
224
+ requirement: !ruby/object:Gem::Requirement
225
+ none: false
226
+ requirements:
227
+ - - ! '>='
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ type: :development
73
231
  prerelease: false
74
- requirement: &id006 !ruby/object:Gem::Requirement
232
+ version_requirements: !ruby/object:Gem::Requirement
75
233
  none: false
76
- requirements:
77
- - - ">="
78
- - !ruby/object:Gem::Version
79
- version: "0"
234
+ requirements:
235
+ - - ! '>='
236
+ - !ruby/object:Gem::Version
237
+ version: '0'
238
+ - !ruby/object:Gem::Dependency
239
+ name: webrat
240
+ requirement: !ruby/object:Gem::Requirement
241
+ none: false
242
+ requirements:
243
+ - - ! '>='
244
+ - !ruby/object:Gem::Version
245
+ version: '0'
80
246
  type: :development
81
- version_requirements: *id006
82
- description: "\n command line utilities to manage catalogs of directory\n "
247
+ prerelease: false
248
+ version_requirements: !ruby/object:Gem::Requirement
249
+ none: false
250
+ requirements:
251
+ - - ! '>='
252
+ - !ruby/object:Gem::Version
253
+ version: '0'
254
+ - !ruby/object:Gem::Dependency
255
+ name: sinatra
256
+ requirement: !ruby/object:Gem::Requirement
257
+ none: false
258
+ requirements:
259
+ - - ! '>='
260
+ - !ruby/object:Gem::Version
261
+ version: '0'
262
+ type: :development
263
+ prerelease: false
264
+ version_requirements: !ruby/object:Gem::Requirement
265
+ none: false
266
+ requirements:
267
+ - - ! '>='
268
+ - !ruby/object:Gem::Version
269
+ version: '0'
270
+ - !ruby/object:Gem::Dependency
271
+ name: rmagick
272
+ requirement: !ruby/object:Gem::Requirement
273
+ none: false
274
+ requirements:
275
+ - - ! '>='
276
+ - !ruby/object:Gem::Version
277
+ version: '0'
278
+ type: :development
279
+ prerelease: false
280
+ version_requirements: !ruby/object:Gem::Requirement
281
+ none: false
282
+ requirements:
283
+ - - ! '>='
284
+ - !ruby/object:Gem::Version
285
+ version: '0'
286
+ description: ! " command line utilities to manage catalogs of directory\n\n damn
287
+ simple catalog based on tagging file name.\n The tag are between bracket.\n For
288
+ example the filename 'photo [sea][2010][summer]', associate\n with the name photo
289
+ the tag sea,2010,summer.\n"
83
290
  email: tokiro.oyama@gmail.com
84
- executables:
291
+ executables:
85
292
  - dircat
293
+ - scat
86
294
  extensions: []
87
-
88
- extra_rdoc_files:
295
+ extra_rdoc_files:
89
296
  - LICENSE.txt
90
297
  - README.md
91
- files:
298
+ files:
92
299
  - LICENSE.txt
93
300
  - README.md
94
301
  - Rakefile
95
302
  - dircat.gemspec
96
- - .gemtest
97
303
  - bin/dircat
98
- - lib/dircat/cat.rb
99
- - lib/dircat/cli/cli_dircat.rb
100
- - lib/dircat/cli/command_build.rb
101
- - lib/dircat/cli/command_diff.rb
102
- - lib/dircat/cli/command_query.rb
103
- - lib/dircat/entry.rb
104
- - lib/dircat/extension_md5.rb
105
- - lib/dircat/extension_numeric.rb
304
+ - bin/scat
305
+ - lib/dircat/config.rb
306
+ - lib/dircat/cat_on_yaml_cli/command_diff.rb
307
+ - lib/dircat/cat_on_yaml_cli/cli_dircat.rb
308
+ - lib/dircat/cat_on_yaml_cli/command_build.rb
309
+ - lib/dircat/cat_on_yaml_cli/command_query.rb
310
+ - lib/dircat/cat_on_yaml/entry.rb
311
+ - lib/dircat/cat_on_yaml/cat_on_yaml.rb
312
+ - lib/dircat/server/my_static.rb
313
+ - lib/dircat/server/helpers.rb
314
+ - lib/dircat/server/web_server.rb
315
+ - lib/dircat/cat_on_sqlite/simple_cataloger_error.rb
316
+ - lib/dircat/cat_on_sqlite/model/image.rb
317
+ - lib/dircat/cat_on_sqlite/model/tag.rb
318
+ - lib/dircat/cat_on_sqlite/model/tagging.rb
319
+ - lib/dircat/cat_on_sqlite/model/category.rb
320
+ - lib/dircat/cat_on_sqlite/model/item.rb
321
+ - lib/dircat/cat_on_sqlite/migration/02_create_images.rb
322
+ - lib/dircat/cat_on_sqlite/migration/03_create_items.rb
323
+ - lib/dircat/cat_on_sqlite/migration/05_create_tags.rb
324
+ - lib/dircat/cat_on_sqlite/migration/00_create_dircat_properties.rb
325
+ - lib/dircat/cat_on_sqlite/migration/04_create_taggings.rb
326
+ - lib/dircat/cat_on_sqlite/migration/01_create_categories.rb
327
+ - lib/dircat/cat_on_sqlite/cat_on_sqlite.rb
328
+ - lib/dircat/cat_on_sqlite/directory_visitor.rb
329
+ - lib/dircat/cat_on_sqlite_cli/cmd_server.rb
330
+ - lib/dircat/cat_on_sqlite_cli/cli_cat.rb
331
+ - lib/dircat/cat_on_sqlite_cli/cmd_list.rb
332
+ - lib/dircat/cat_on_sqlite_cli/cmd_update.rb
333
+ - lib/dircat/cat_on_sqlite_cli/cmd_create.rb
334
+ - lib/dircat/cat_on_sqlite_cli/cli_server.rb
335
+ - lib/dircat/extensions.rb
106
336
  - lib/dircat/version.rb
337
+ - lib/dircat_on_sqlite_cli.rb
338
+ - lib/simple_cataloger_dm/core/simple_cataloger_error.rb
339
+ - lib/simple_cataloger_dm/core/catalog.rb
340
+ - lib/simple_cataloger_dm/core/extensions.rb
341
+ - lib/simple_cataloger_dm/core/directory_visitor.rb
342
+ - lib/simple_cataloger_dm/core.rb
343
+ - lib/simple_cataloger_dm/cli.rb
344
+ - lib/simple_cataloger_dm/models/image.rb
345
+ - lib/simple_cataloger_dm/models/tag.rb
346
+ - lib/simple_cataloger_dm/models/tagging.rb
347
+ - lib/simple_cataloger_dm/models/category.rb
348
+ - lib/simple_cataloger_dm/models/item.rb
349
+ - lib/simple_cataloger_dm/server/my_static.rb
350
+ - lib/simple_cataloger_dm/server/helpers.rb
351
+ - lib/simple_cataloger_dm/server/web_server.rb
107
352
  - lib/dircat.rb
353
+ - lib/dircat_on_sqlite.rb
108
354
  - examples/example.rb
109
355
  - tasks/rspec.rake
110
356
  - tasks/yard.rake
111
- - spec/dircat/cat_spec.rb
112
- - spec/dircat/cli/cli_dircat_spec.rb
113
- - spec/dircat/cli/command_build_spec.rb
114
- - spec/dircat/cli/command_diff_spec.rb
115
- - spec/dircat/cli/command_query_spec.rb
116
- - spec/dircat/md5_spec.rb
117
- - spec/dircat/numeric_spec.rb
357
+ - spec/generate_directories_to_catalog.rb
118
358
  - spec/spec_helper.rb
119
- - spec/fixtures/certified_output/dircat1.yaml
120
- - spec/fixtures/certified_output/dircat2.yaml
121
- - spec/fixtures/dir1/file1.txt
359
+ - spec/generate_mysql_catalog.rb
360
+ - spec/dircat/cat_on_yaml_cli/command_diff_spec.rb
361
+ - spec/dircat/cat_on_yaml_cli/cli_dircat_spec.rb
362
+ - spec/dircat/cat_on_yaml_cli/command_build_spec.rb
363
+ - spec/dircat/cat_on_yaml_cli/command_query_spec.rb
364
+ - spec/dircat/cat_on_yaml/cat_on_yaml_spec.rb
365
+ - spec/dircat/cat_on_sqlite/cat_on_sqlite_spec.rb
366
+ - spec/dircat/cat_on_sqlite_web/web_server_spec.rb
367
+ - spec/fixtures/tmp/test_ar.sqlite3
368
+ - spec/fixtures/tmp/test_ar.yml
122
369
  - spec/fixtures/dir1/subdir/file3.txt
370
+ - spec/fixtures/dir1/file1.txt
371
+ - spec/fixtures/dir2/subdir/file3.txt
123
372
  - spec/fixtures/dir2/file1.txt
124
373
  - spec/fixtures/dir2/file2.txt
125
- - spec/fixtures/dir2/subdir/file3.txt
126
- - spec/fixtures/dir3/file1.txt
127
374
  - spec/fixtures/dir3/subdir/file1.txt
128
- has_rdoc: true
375
+ - spec/fixtures/dir3/file1.txt
376
+ - spec/fixtures/dir4/subdir/file3.txt
377
+ - spec/fixtures/dir4/file1.txt
378
+ - spec/fixtures/dir4/file2.txt
379
+ - spec/fixtures/films/A-Z/A/Arancia meccanica [Stanley Kubrick][1971]/folder.jpg
380
+ - spec/fixtures/films/A-Z/P/Plan 9 [Edward Wood][1959]/folder.jpg
381
+ - spec/fixtures/films/Directors/[Federico Fellini]/[1963] 8 e mezzo [Marcello Mastroianni][Claudia
382
+ Cardinale][5]/folder.jpg
383
+ - spec/fixtures/films/Directors/[Akira Kurosawa]/[1940] Dersu Uzala [5]/folder.jpg
384
+ - spec/fixtures/films/Directors/[Akira Kurosawa]/[1965] Barbarossa [Toshiro Mifune][4]/folder.jpg
385
+ - spec/fixtures/films/Directors/[Woody Allen]/[1977] Annie Hall [Diane Keaton][5]/folder.jpg
386
+ - spec/fixtures/certified_output/cat_dir2_20120811.yaml
387
+ - spec/fixtures/certified_output/dircat1_version_0.1.yaml
388
+ - spec/fixtures/certified_output/dircat2_version_0.1.yaml
389
+ - spec/fixtures/certified_output/cat_dir1_20120811.yaml
390
+ - spec/fixtures/readme.txt
129
391
  homepage: http://github.com/tokiro/dircat
130
392
  licenses: []
131
-
132
393
  post_install_message:
133
394
  rdoc_options: []
134
-
135
- require_paths:
395
+ require_paths:
136
396
  - lib
137
- required_ruby_version: !ruby/object:Gem::Requirement
397
+ required_ruby_version: !ruby/object:Gem::Requirement
138
398
  none: false
139
- requirements:
140
- - - ">="
141
- - !ruby/object:Gem::Version
142
- version: "0"
143
- required_rubygems_version: !ruby/object:Gem::Requirement
399
+ requirements:
400
+ - - ! '>='
401
+ - !ruby/object:Gem::Version
402
+ version: '0'
403
+ required_rubygems_version: !ruby/object:Gem::Requirement
144
404
  none: false
145
- requirements:
146
- - - ">="
147
- - !ruby/object:Gem::Version
148
- version: "0"
405
+ requirements:
406
+ - - ! '>='
407
+ - !ruby/object:Gem::Version
408
+ version: '0'
149
409
  requirements: []
150
-
151
410
  rubyforge_project:
152
- rubygems_version: 1.5.2
411
+ rubygems_version: 1.8.24
153
412
  signing_key:
154
413
  specification_version: 3
155
- summary: command line utilities to manage catalogs of directory
156
- test_files:
157
- - spec/dircat/cat_spec.rb
158
- - spec/dircat/cli/cli_dircat_spec.rb
159
- - spec/dircat/cli/command_build_spec.rb
160
- - spec/dircat/cli/command_diff_spec.rb
161
- - spec/dircat/cli/command_query_spec.rb
162
- - spec/dircat/md5_spec.rb
163
- - spec/dircat/numeric_spec.rb
414
+ summary: command line utilities to manage catalogs of directory and damn simple cataloger
415
+ using directory convention
416
+ test_files:
417
+ - spec/generate_directories_to_catalog.rb
164
418
  - spec/spec_helper.rb
165
- - spec/fixtures/certified_output/dircat1.yaml
166
- - spec/fixtures/certified_output/dircat2.yaml
167
- - spec/fixtures/dir1/file1.txt
419
+ - spec/generate_mysql_catalog.rb
420
+ - spec/dircat/cat_on_yaml_cli/command_diff_spec.rb
421
+ - spec/dircat/cat_on_yaml_cli/cli_dircat_spec.rb
422
+ - spec/dircat/cat_on_yaml_cli/command_build_spec.rb
423
+ - spec/dircat/cat_on_yaml_cli/command_query_spec.rb
424
+ - spec/dircat/cat_on_yaml/cat_on_yaml_spec.rb
425
+ - spec/dircat/cat_on_sqlite/cat_on_sqlite_spec.rb
426
+ - spec/dircat/cat_on_sqlite_web/web_server_spec.rb
427
+ - spec/fixtures/tmp/test_ar.sqlite3
428
+ - spec/fixtures/tmp/test_ar.yml
168
429
  - spec/fixtures/dir1/subdir/file3.txt
430
+ - spec/fixtures/dir1/file1.txt
431
+ - spec/fixtures/dir2/subdir/file3.txt
169
432
  - spec/fixtures/dir2/file1.txt
170
433
  - spec/fixtures/dir2/file2.txt
171
- - spec/fixtures/dir2/subdir/file3.txt
172
- - spec/fixtures/dir3/file1.txt
173
434
  - spec/fixtures/dir3/subdir/file1.txt
435
+ - spec/fixtures/dir3/file1.txt
436
+ - spec/fixtures/dir4/subdir/file3.txt
437
+ - spec/fixtures/dir4/file1.txt
438
+ - spec/fixtures/dir4/file2.txt
439
+ - spec/fixtures/films/A-Z/A/Arancia meccanica [Stanley Kubrick][1971]/folder.jpg
440
+ - spec/fixtures/films/A-Z/P/Plan 9 [Edward Wood][1959]/folder.jpg
441
+ - spec/fixtures/films/Directors/[Federico Fellini]/[1963] 8 e mezzo [Marcello Mastroianni][Claudia
442
+ Cardinale][5]/folder.jpg
443
+ - spec/fixtures/films/Directors/[Akira Kurosawa]/[1940] Dersu Uzala [5]/folder.jpg
444
+ - spec/fixtures/films/Directors/[Akira Kurosawa]/[1965] Barbarossa [Toshiro Mifune][4]/folder.jpg
445
+ - spec/fixtures/films/Directors/[Woody Allen]/[1977] Annie Hall [Diane Keaton][5]/folder.jpg
446
+ - spec/fixtures/certified_output/cat_dir2_20120811.yaml
447
+ - spec/fixtures/certified_output/dircat1_version_0.1.yaml
448
+ - spec/fixtures/certified_output/dircat2_version_0.1.yaml
449
+ - spec/fixtures/certified_output/cat_dir1_20120811.yaml
450
+ - spec/fixtures/readme.txt
451
+ has_rdoc: