bagit 0.1.0 → 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.
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License
2
+
3
+ Copyright (c) 2009 Francesco Lazzarino
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,59 @@
1
+ BagIt (for ruby)
2
+ ================
3
+
4
+ Based on the [BagItspec v0.96](https://confluence.ucop.edu/display/Curation/BagIt).
5
+
6
+ Supported Features:
7
+ -------------------
8
+ * bag compiling
9
+ * manifest & tagmanifest generation
10
+ * generation of tag files bag-info.txt and bagit.txt
11
+ * fetching remote files (fetch.txt)
12
+ * bag validation
13
+
14
+ Installation
15
+ ------------
16
+ % gem install bagit validatable
17
+ The rubyforge gem is deprecated.
18
+
19
+
20
+ Example: making a bag
21
+ ---------------------
22
+ require 'bagit'
23
+
24
+ # make a new bag at base_path
25
+ bag = BagIt::Bag.new base_path
26
+
27
+ # make a new file
28
+ bag.add_file("samplefile") do |io|
29
+ io.puts "Hello Bag!"
30
+ end
31
+
32
+ # generate the manifest and tagmanifest files
33
+ bag.manifest!
34
+
35
+ Example: validating an existing bag
36
+ -----------------------------------
37
+
38
+ bag = BagIt::Bag.new existing_base_path
39
+
40
+ if bag.valid?
41
+ puts "#{existing_base_path} is valid"
42
+ else
43
+ puts "#{existing_base_path} is not valid"
44
+ end
45
+
46
+ TODO
47
+ ----
48
+ * command line tools for common tasks
49
+ * better holy bag (fetch.txt) generation
50
+ * better error reporting.
51
+ * poor mans' checksum
52
+
53
+ ---
54
+
55
+ Copyright © 2009, [Francesco Lazzarino](mailto:flazzarino@gmail.com).
56
+
57
+ Sponsored by [Florida Center for Library Automation](http://www.fcla.edu).
58
+
59
+ See LICENSE.txt for terms.
data/Rakefile CHANGED
@@ -1,14 +1,16 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ Bundler.setup(:default, :development, :test)
4
+
1
5
  require 'rake'
2
- require 'rake/rdoctask'
3
- require 'spec/rake/spectask'
4
-
5
- Spec::Rake::SpecTask.new('spec') do |t|
6
- t.libs << 'lib'
7
- t.libs << 'spec'
8
- t.spec_opts << "--color"
9
- # t.warning = true
10
- # t.rcov = true
11
- # t.rcov_opts += ["-x /Library", "-x spec"]
6
+ require 'rdoc/task'
7
+ require 'rspec/core/rake_task'
8
+
9
+ Bundler::GemHelper.install_tasks
10
+
11
+ RSpec::Core::RakeTask.new do |t|
12
+ t.pattern = 'spec/**/*_spec.rb'
13
+ t.rspec_opts = %w(-fs --color)
12
14
  end
13
15
 
14
16
  task :default => [:spec]
data/bagit.gemspec CHANGED
@@ -1,20 +1,13 @@
1
- require 'semver'
2
-
3
- Gem::Specification.new do |spec|
4
- spec.name = "bagit"
5
- spec.version = SemVer.find.format '%M.%m.%p'
6
- spec.summary = "BagIt package generation and validation"
1
+ BAGIT_SPEC = Gem::Specification.new do |spec|
2
+ spec.name = "bagit"
3
+ spec.version = '0.2.0'
4
+ spec.summary = "BagIt package generation and validation"
7
5
  spec.description = "Ruby Library and Command Line tools for bagit"
8
- spec.email = "flazzarino@gmail.com"
9
- spec.homepage = 'http://github.com/flazz/bagit'
10
- spec.authors = ["Francesco Lazzarino"]
6
+ spec.email = "flazzarino@gmail.com"
7
+ spec.homepage = 'http://github.com/flazz/bagit'
8
+ spec.authors = ["Francesco Lazzarino"]
11
9
 
12
- spec.files = ["Rakefile", "bagit.gemspec", "lib/bagit/bag.rb",
13
- "lib/bagit/fetch.rb", "lib/bagit/file.rb",
14
- "lib/bagit/info.rb", "lib/bagit/manifest.rb",
15
- "lib/bagit/string.rb", "lib/bagit/valid.rb",
16
- "lib/bagit.rb" ]
10
+ spec.add_dependency 'validatable', '~> 1.6'
17
11
 
18
- spec.has_rdoc = true
19
- spec.add_dependency 'semver', '~> 0.1.0'
12
+ spec.files = %w(Rakefile README.md LICENSE.txt bagit.gemspec) + Dir["lib/**/*.rb"]
20
13
  end
data/lib/bagit.rb CHANGED
@@ -7,5 +7,5 @@ require 'bagit/bag'
7
7
 
8
8
  module BagIt
9
9
  # The version of the BagIt specification the code is conforming to.
10
- SPEC_VERSION = '0.96'
10
+ SPEC_VERSION = '0.96'
11
11
  end
data/lib/bagit/bag.rb CHANGED
@@ -9,7 +9,6 @@ module BagIt
9
9
 
10
10
  # Represents the state of a bag on a filesystem
11
11
  class Bag
12
-
13
12
  attr_reader :bag_dir
14
13
 
15
14
  include Validity # Validity functionality
@@ -24,7 +23,7 @@ module BagIt
24
23
  # make the dir structure if it doesn't exist
25
24
  FileUtils::mkdir bag_dir unless File.directory? bag_dir
26
25
  FileUtils::mkdir data_dir unless File.directory? data_dir
27
-
26
+
28
27
  # write some tag info if its not there
29
28
  unless File.exist? bagit_txt_file
30
29
  write_bagit("BagIt-Version" => SPEC_VERSION, "Tag-File-Character-Encoding" => "UTF-8")
@@ -33,7 +32,6 @@ module BagIt
33
32
  unless File.exist? bag_info_txt_file
34
33
  write_bag_info('Bag-Software-Agent' => "BagIt Ruby Gem (http://bagit.rubyforge.org)")
35
34
  end
36
-
37
35
  end
38
36
 
39
37
  # Return the path to the data directory
@@ -62,30 +60,40 @@ module BagIt
62
60
  else
63
61
  FileUtils::cp src_path, path
64
62
  end
65
-
66
63
  end
67
-
64
+
68
65
  # Remove a bag file
69
66
  def remove_file(base_path)
70
67
  path = File.join(data_dir, base_path)
71
68
  raise "Bag file does not exist: #{base_path}" unless File.exist? path
72
69
  FileUtils::rm path
73
70
  end
74
-
71
+
72
+ # Retrieve the IO handle for a file in the bag
73
+ def get(base_path)
74
+ path = File.join(data_dir, base_path)
75
+ return nil unless File.exist?(path)
76
+ File.open(path)
77
+ end
78
+
79
+ # Test if this bag is empty (no files)
80
+ def empty?
81
+ self.bag_files.empty?
82
+ end
83
+
84
+ # Get all bag file paths relative to the data dir
85
+ def paths
86
+ self.bag_files.collect { |f| f.sub(data_dir + '/', '') }
87
+ end
88
+
75
89
  # Remove all empty directory trees from the bag
76
90
  def gc!
77
-
78
91
  Dir.entries(data_dir).each do |f|
79
-
80
92
  unless %w{.. .}.include? f
81
93
  abs_path = File.join data_dir, f
82
94
  File.clean abs_path
83
95
  end
84
-
85
96
  end
86
-
87
97
  end
88
-
89
98
  end
90
-
91
99
  end
data/lib/bagit/valid.rb CHANGED
@@ -1,12 +1,11 @@
1
- require 'rubygems'
2
1
  require 'validatable'
3
2
 
4
3
  module BagIt
5
4
 
6
5
  class Bag
7
6
  include Validatable
8
- validates_true_for :consistency, :logic => lambda { complete? }
9
- validates_true_for :completeness, :logic => lambda { consistent? }
7
+ validates_true_for :consistency, :logic => Proc.new { complete? }
8
+ validates_true_for :completeness, :logic => Proc.new { consistent? }
10
9
  end
11
10
 
12
11
  module Validity
metadata CHANGED
@@ -1,13 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bagit
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 1
9
- - 0
10
- version: 0.1.0
4
+ prerelease:
5
+ version: 0.2.0
11
6
  platform: ruby
12
7
  authors:
13
8
  - Francesco Lazzarino
@@ -15,23 +10,17 @@ autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
12
 
18
- date: 2010-07-28 00:00:00 -04:00
19
- default_executable:
13
+ date: 2011-06-08 00:00:00 Z
20
14
  dependencies:
21
15
  - !ruby/object:Gem::Dependency
22
- name: semver
16
+ name: validatable
23
17
  prerelease: false
24
18
  requirement: &id001 !ruby/object:Gem::Requirement
25
19
  none: false
26
20
  requirements:
27
21
  - - ~>
28
22
  - !ruby/object:Gem::Version
29
- hash: 27
30
- segments:
31
- - 0
32
- - 1
33
- - 0
34
- version: 0.1.0
23
+ version: "1.6"
35
24
  type: :runtime
36
25
  version_requirements: *id001
37
26
  description: Ruby Library and Command Line tools for bagit
@@ -44,6 +33,8 @@ extra_rdoc_files: []
44
33
 
45
34
  files:
46
35
  - Rakefile
36
+ - README.md
37
+ - LICENSE.txt
47
38
  - bagit.gemspec
48
39
  - lib/bagit/bag.rb
49
40
  - lib/bagit/fetch.rb
@@ -53,7 +44,6 @@ files:
53
44
  - lib/bagit/string.rb
54
45
  - lib/bagit/valid.rb
55
46
  - lib/bagit.rb
56
- has_rdoc: true
57
47
  homepage: http://github.com/flazz/bagit
58
48
  licenses: []
59
49
 
@@ -67,23 +57,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
67
57
  requirements:
68
58
  - - ">="
69
59
  - !ruby/object:Gem::Version
70
- hash: 3
71
- segments:
72
- - 0
73
60
  version: "0"
74
61
  required_rubygems_version: !ruby/object:Gem::Requirement
75
62
  none: false
76
63
  requirements:
77
64
  - - ">="
78
65
  - !ruby/object:Gem::Version
79
- hash: 3
80
- segments:
81
- - 0
82
66
  version: "0"
83
67
  requirements: []
84
68
 
85
69
  rubyforge_project:
86
- rubygems_version: 1.3.7
70
+ rubygems_version: 1.8.3
87
71
  signing_key:
88
72
  specification_version: 3
89
73
  summary: BagIt package generation and validation