bagit 0.4.3 → 0.4.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,6 @@
1
- # coding: utf-8
2
- require 'spec_helper'
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
3
4
 
4
5
  describe BagIt::Bag do
5
6
  describe "BagIt Manifests" do
@@ -7,13 +8,14 @@ describe BagIt::Bag do
7
8
  @sandbox = Sandbox.new
8
9
 
9
10
  # make the bag
10
- @bag_path = File.join @sandbox.to_s, 'the_bag'
11
+ @bag_path = File.join @sandbox.to_s, "the_bag"
11
12
  @bag = described_class.new @bag_path
12
13
 
13
14
  # add some files
14
- File.open('/dev/urandom') do |rio|
15
+ File.open("/dev/urandom") do |rio|
15
16
  10.times do |n|
16
- @bag.add_file("file-#{n}-💩
17
+ @bag.add_file("file-#{n}-💩
18
+ ") { |io| io.write rio.read(16) }
17
19
  @bag.add_tag_file("tag-#{n}") { |io| io.write rio.read(16) }
18
20
  end
19
21
  end
@@ -25,13 +27,16 @@ describe BagIt::Bag do
25
27
 
26
28
  shared_examples_for "a manifest file" do
27
29
  before do
28
- pattern = File.join @bag_path, '*manifest-*.txt'
30
+ pattern = File.join @bag_path, "*manifest-*.txt"
29
31
  @manifest_files = Dir.glob pattern
30
32
  end
31
33
 
32
34
  it "has a valid algorithm in the name (at least md5 or sha1)" do
33
- algorithms = @manifest_files.map { |mf| mf =~ /manifest-(.*).txt$/; Regexp.last_match(1) }
34
- algorithms.each { |a| expect(a).to be_in('md5', 'sha1') }
35
+ algorithms = @manifest_files.map { |mf|
36
+ mf =~ /manifest-(.*).txt$/
37
+ Regexp.last_match(1)
38
+ }
39
+ algorithms.each { |a| expect(a).to be_in("md5", "sha1") }
35
40
  end
36
41
 
37
42
  it "is not an empty file" do
@@ -47,7 +52,7 @@ describe BagIt::Bag do
47
52
  end
48
53
 
49
54
  it "validates after adding a file and remanifesting" do
50
- @bag.add_file('newfile.txt') { |io| io.puts("new file to remanifest") }
55
+ @bag.add_file("newfile.txt") { |io| io.puts("new file to remanifest") }
51
56
  @bag.manifest!
52
57
  expect(@bag).to be_valid
53
58
  end
@@ -1,25 +1,27 @@
1
- require 'rubygems'
2
- require 'bundler'
3
- require 'coveralls'
1
+ # frozen_string_literal: true
2
+
3
+ require "rubygems"
4
+ require "bundler"
5
+ require "coveralls"
4
6
 
5
7
  Bundler.require(:default, :test)
6
8
 
7
9
  Coveralls.wear!
8
10
 
9
- require File.expand_path('./util/bagit_matchers', File.dirname(__FILE__))
11
+ require File.expand_path("./util/bagit_matchers", File.dirname(__FILE__))
10
12
 
11
13
  RSpec.configure do |config|
12
14
  config.include(BagitMatchers)
13
15
  end
14
16
 
15
- $LOAD_PATH.unshift File.expand_path('../lib', File.dirname(__FILE__))
16
- require 'bagit'
17
+ $LOAD_PATH.unshift File.expand_path("../lib", File.dirname(__FILE__))
18
+ require "bagit"
17
19
 
18
- require 'tempfile'
20
+ require "tempfile"
19
21
 
20
22
  class Sandbox
21
23
  def initialize
22
- tf = Tempfile.open 'sandbox'
24
+ tf = Tempfile.open "sandbox"
23
25
  @path = tf.path
24
26
  tf.close!
25
27
  FileUtils.mkdir @path
@@ -1,5 +1,6 @@
1
- # coding: utf-8
2
- require 'spec_helper'
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
3
4
 
4
5
  describe BagIt::Bag do
5
6
  describe "Tag Info Files" do
@@ -7,11 +8,11 @@ describe BagIt::Bag do
7
8
  @sandbox = Sandbox.new
8
9
 
9
10
  # make the bag
10
- @bag_path = File.join @sandbox.to_s, 'the_bag'
11
+ @bag_path = File.join @sandbox.to_s, "the_bag"
11
12
  @bag = described_class.new @bag_path
12
13
 
13
14
  # add some files
14
- File.open('/dev/urandom') do |rio|
15
+ File.open("/dev/urandom") do |rio|
15
16
  10.times do |n|
16
17
  @bag.add_file("file-#{n}-💩
17
18
  end
@@ -24,12 +25,12 @@ describe BagIt::Bag do
24
25
 
25
26
  describe "bagit.txt" do
26
27
  before do
27
- path = File.join @bag_path, 'bagit.txt'
28
+ path = File.join @bag_path, "bagit.txt"
28
29
  @lines = File.open(path, &:readlines)
29
30
  end
30
31
 
31
32
  it "creates a file bagit.txt on bag initialization" do
32
- expect(File.join(@bag_path, 'bagit.txt')).to exist_on_fs
33
+ expect(File.join(@bag_path, "bagit.txt")).to exist_on_fs
33
34
  end
34
35
 
35
36
  it "has exactly two lines" do
@@ -49,7 +50,7 @@ describe BagIt::Bag do
49
50
 
50
51
  describe "bag-info.txt" do
51
52
  before do
52
- path = File.join @bag_path, 'bag-info.txt'
53
+ path = File.join @bag_path, "bag-info.txt"
53
54
  @lines = File.open(path, &:readlines)
54
55
  end
55
56
 
@@ -62,20 +63,20 @@ describe BagIt::Bag do
62
63
  end
63
64
 
64
65
  it "is case insensitive with respect to LABELs" do
65
- expect { @bag.write_bag_info 'foo' => 'lowercase', 'Foo' => 'capital' }.to raise_error(/Multiple labels/)
66
+ expect { @bag.write_bag_info "foo" => "lowercase", "Foo" => "capital" }.to raise_error(/Multiple labels/)
66
67
  end
67
68
 
68
69
  it "folds long VALUEs" do
69
- longline = <<LOREM
70
- Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
71
- eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enimad
72
- minim veniam, quis nostrud exercitation ullamco laboris nisi ut
73
- aliquip ex ea commodo consequat. Duis aute irure dolor in
74
- reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
75
- pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
76
- culpa qui officia deserunt mollit anim id est laborum.
77
- LOREM
78
- @bag.write_bag_info 'Lorem' => longline
70
+ longline = <<~LOREM
71
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
72
+ eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enimad
73
+ minim veniam, quis nostrud exercitation ullamco laboris nisi ut
74
+ aliquip ex ea commodo consequat. Duis aute irure dolor in
75
+ reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
76
+ pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
77
+ culpa qui officia deserunt mollit anim id est laborum.
78
+ LOREM
79
+ @bag.write_bag_info "Lorem" => longline
79
80
  expect(@bag.bag_info.keys.length).to eq(4) # this isn't a great test. Changed it from 1 to 4 because unrelated changes caused failure.
80
81
  end
81
82
 
@@ -92,10 +93,10 @@ LOREM
92
93
  expect(@bag.bag_info.keys).to include("Payload-Oxum")
93
94
  end
94
95
  it "does not override any previous values" do
95
- path = File.join @bag_path, 'bag-info.txt'
96
- @bag.write_bag_info 'Bag-Software-Agent' => 'Some Other Agent'
97
- @bag.write_bag_info 'Source-Organization' => 'Awesome Inc.'
98
- @bag.write_bag_info 'Bagging-Date' => '1901-01-01'
96
+ path = File.join @bag_path, "bag-info.txt"
97
+ @bag.write_bag_info "Bag-Software-Agent" => "Some Other Agent"
98
+ @bag.write_bag_info "Source-Organization" => "Awesome Inc."
99
+ @bag.write_bag_info "Bagging-Date" => "1901-01-01"
99
100
  @bag.write_bag_info
100
101
  contents = File.open(path).read
101
102
  expect(contents).to include "Some Other Agent"
@@ -103,19 +104,19 @@ LOREM
103
104
  expect(contents).to include "1901-01-01"
104
105
  end
105
106
  it "overrides previous tags when they collide with new ones" do
106
- path = File.join @bag_path, 'bag-info.txt'
107
- @bag.write_bag_info 'Source-Organization' => 'Awesome Inc.'
108
- @bag.write_bag_info 'Source-Organization' => 'Awesome LLC.'
107
+ path = File.join @bag_path, "bag-info.txt"
108
+ @bag.write_bag_info "Source-Organization" => "Awesome Inc."
109
+ @bag.write_bag_info "Source-Organization" => "Awesome LLC."
109
110
  contents = File.open(path).read
110
111
  expect(contents).to include "Awesome LLC."
111
112
  expect(contents).not_to include "Awesome Inc."
112
113
  end
113
114
  it "contains values passed to bag" do
114
- hash = { "Bag-Software-Agent" => "rspec",
115
- "Bagging-Date" => "2012-11-21",
116
- "Contact-Name" => "Willis Corto",
117
- "Some-Tag" => "Some Value" }
118
- bag_with_info = described_class.new(@bag_path + '2', hash)
115
+ hash = {"Bag-Software-Agent" => "rspec",
116
+ "Bagging-Date" => "2012-11-21",
117
+ "Contact-Name" => "Willis Corto",
118
+ "Some-Tag" => "Some Value"}
119
+ bag_with_info = described_class.new(@bag_path + "2", hash)
119
120
  hash.each do |key, value|
120
121
  expect(bag_with_info.bag_info[key]).to eq(value)
121
122
  end
@@ -1,5 +1,6 @@
1
- # coding: utf-8
2
- require 'spec_helper'
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
3
4
 
4
5
  describe BagIt::Bag do
5
6
  describe "Tag Specs" do
@@ -7,11 +8,11 @@ describe BagIt::Bag do
7
8
  @sandbox = Sandbox.new
8
9
 
9
10
  # make the bag
10
- @bag_path = File.join @sandbox.to_s, 'the_bag'
11
+ @bag_path = File.join @sandbox.to_s, "the_bag"
11
12
  @bag = described_class.new(@bag_path)
12
13
 
13
14
  # add some files
14
- File.open('/dev/urandom') do |rio|
15
+ File.open("/dev/urandom") do |rio|
15
16
  10.times do |n|
16
17
  @bag.add_file("file-#{n}-💩
17
18
  @bag.add_tag_file("tag-#{n}") { |io| io.write rio.read(16) }
@@ -24,11 +25,11 @@ describe BagIt::Bag do
24
25
  end
25
26
  describe "#add_tag_file" do
26
27
  it "allows addition of tag files via io" do
27
- @bag.add_tag_file("foo") { |io| io.puts 'all alone' }
28
+ @bag.add_tag_file("foo") { |io| io.puts "all alone" }
28
29
  expect(File.join(@bag_path, "foo")).to exist_on_fs
29
30
  end
30
31
  it "allows addition of bag files within directories using io" do
31
- @bag.add_tag_file("fedora/foo") { |io| io.puts 'all alone' }
32
+ @bag.add_tag_file("fedora/foo") { |io| io.puts "all alone" }
32
33
  expect(File.join(@bag_path, "fedora", "foo")).to exist_on_fs
33
34
  end
34
35
  it "allows addition of deep tag files" do
@@ -36,12 +37,12 @@ describe BagIt::Bag do
36
37
  expect(File.join(@bag_path, "fedora", "foo", "newfoo", "deep")).to exist_on_fs
37
38
  end
38
39
  it "does not allow overwriting of tag files" do
39
- expect { @bag.add_tag_file("tag-0") { |io| io.puts 'overwrite!' } }.to raise_error(RuntimeError)
40
+ expect { @bag.add_tag_file("tag-0") { |io| io.puts "overwrite!" } }.to raise_error(RuntimeError)
40
41
  end
41
42
  it "allows addition of tag files via copy" do
42
- src_path = File.join @sandbox.to_s, 'somefile'
43
- File.open(src_path, 'w') { |io| io.puts "something" }
44
- @bag.add_tag_file("foo", src_path) { |io| io.puts 'all alone' }
43
+ src_path = File.join @sandbox.to_s, "somefile"
44
+ File.open(src_path, "w") { |io| io.puts "something" }
45
+ @bag.add_tag_file("foo", src_path) { |io| io.puts "all alone" }
45
46
  expect(File.join(@bag_path, "foo")).to exist_on_fs
46
47
  end
47
48
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BagitMatchers
2
4
  class BeIn
3
5
  def initialize(*expected_collection)
@@ -1,5 +1,6 @@
1
- # coding: utf-8
2
- require 'spec_helper'
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
3
4
 
4
5
  describe BagIt::Bag do
5
6
  describe "a valid bag" do
@@ -7,11 +8,11 @@ describe BagIt::Bag do
7
8
  @sandbox = Sandbox.new
8
9
 
9
10
  # make the bag
10
- @bag_path = File.join @sandbox.to_s, 'the_bag'
11
+ @bag_path = File.join @sandbox.to_s, "the_bag"
11
12
  @bag = described_class.new @bag_path
12
13
 
13
14
  # add some files
14
- File.open('/dev/urandom') do |rio|
15
+ File.open("/dev/urandom") do |rio|
15
16
  10.times do |n|
16
17
  @bag.add_file("file-#{n}-💩
17
18
  ") { |io| io.write rio.read(16) }
@@ -32,38 +33,38 @@ describe BagIt::Bag do
32
33
 
33
34
  it "is invalid if there is a file that's in the bag, but not in the manifest" do
34
35
  # add a file into the bag through the back door
35
- File.open(File.join(@bag.data_dir, 'not-manifested'), 'w') do |io|
36
- io.puts 'nothing to see here, move along'
36
+ File.open(File.join(@bag.data_dir, "not-manifested"), "w") do |io|
37
+ io.puts "nothing to see here, move along"
37
38
  end
38
39
 
39
- @bag.validate_only('true_for/completeness')
40
+ @bag.validate_only("true_for/completeness")
40
41
  expect(@bag.errors.on(:completeness)).not_to be_empty
41
42
  expect(@bag).not_to be_valid
42
43
  end
43
44
 
44
45
  it "is invalid if there are files that are in the manifest but not in the bag" do
45
46
  # add a file and then remove it through the back door
46
- @bag.add_file("file-k") { |io| io.puts 'time to go' }
47
+ @bag.add_file("file-k") { |io| io.puts "time to go" }
47
48
  @bag.manifest!
48
49
 
49
- FileUtils.rm File.join(@bag.bag_dir, 'data', 'file-k')
50
+ FileUtils.rm File.join(@bag.bag_dir, "data", "file-k")
50
51
 
51
- @bag.validate_only('true_for/completeness')
52
+ @bag.validate_only("true_for/completeness")
52
53
  expect(@bag.errors.on(:completeness)).not_to be_empty
53
54
  expect(@bag).not_to be_valid
54
55
  end
55
56
 
56
57
  it "is invalid if there is a fixity problem" do
57
58
  # tweak a file through the back door
58
- File.open(@bag.bag_files[0], 'a') { |io| io.puts 'oops!' }
59
+ File.open(@bag.bag_files[0], "a") { |io| io.puts "oops!" }
59
60
 
60
- @bag.validate_only('true_for/consistency')
61
+ @bag.validate_only("true_for/consistency")
61
62
  expect(@bag.errors.on(:consistency)).not_to be_empty
62
63
  expect(@bag).not_to be_valid
63
64
  end
64
65
 
65
66
  it "calculates sha1 correctly for a big file" do
66
- @bag.add_file 'big-data-file' do |fh|
67
+ @bag.add_file "big-data-file" do |fh|
67
68
  count = 0
68
69
  while count < 1024 * 512
69
70
  fh.write "1" * 1024
@@ -71,14 +72,14 @@ describe BagIt::Bag do
71
72
  end
72
73
  end
73
74
  @bag.manifest!
74
- sha1_manifest = File.join @bag_path, 'manifest-sha1.txt'
75
+ sha1_manifest = File.join @bag_path, "manifest-sha1.txt"
75
76
  checksums = {}
76
77
  File.open(sha1_manifest).each_line do |line|
77
- fixity, path = line.split(' ')
78
+ fixity, path = line.split(" ")
78
79
  checksums[path] = fixity
79
80
  end
80
- expected = checksums['data/big-data-file']
81
- expect(expected).to eq('12be64c30968bb90136ee695dc58f4b2276968c6')
81
+ expected = checksums["data/big-data-file"]
82
+ expect(expected).to eq("12be64c30968bb90136ee695dc58f4b2276968c6")
82
83
  end
83
84
 
84
85
  it "validates by oxum when needed" do
@@ -87,7 +88,7 @@ describe BagIt::Bag do
87
88
 
88
89
  it "raises a sensible error when the manifest algorithm is unknown" do
89
90
  # add a manifest with an unsupported algorithm
90
- File.open(File.join(@bag.bag_dir, 'manifest-sha999.txt'), 'w') do |io|
91
+ File.open(File.join(@bag.bag_dir, "manifest-sha999.txt"), "w") do |io|
91
92
  io.puts "digest-does-not-matter data/file-0\n"
92
93
  end
93
94
  expect { @bag.valid? }.to raise_error ArgumentError
@@ -95,13 +96,13 @@ describe BagIt::Bag do
95
96
 
96
97
  it "validates false by oxum when file count is incorrect" do
97
98
  # tweak oxum through backdoor
98
- File.open(@bag.bag_info_txt_file, 'a') { |f| f.write "Payload-Oxum: " + @bag.bag_info["Payload-Oxum"].split('.')[0] + '.0' }
99
+ File.open(@bag.bag_info_txt_file, "a") { |f| f.write "Payload-Oxum: " + @bag.bag_info["Payload-Oxum"].split(".")[0] + ".0" }
99
100
  expect(@bag.valid_oxum?).to eq(false)
100
101
  end
101
102
 
102
103
  it "validates false by oxum when octetstream size is incorrect" do
103
104
  # tweak oxum through backdoor
104
- File.open(@bag.bag_info_txt_file, 'a') { |f| f.write "Payload-Oxum: 1." + @bag.bag_info["Payload-Oxum"].split('.')[1] }
105
+ File.open(@bag.bag_info_txt_file, "a") { |f| f.write "Payload-Oxum: 1." + @bag.bag_info["Payload-Oxum"].split(".")[1] }
105
106
  expect(@bag.valid_oxum?).to eq(false)
106
107
  end
107
108
 
@@ -127,10 +128,10 @@ describe BagIt::Bag do
127
128
  describe "tag manifest validation" do
128
129
  it "is invalid if listed tag file does not exist" do
129
130
  # add a file and then remove it through the back door
130
- @bag.add_tag_file("tag-k") { |io| io.puts 'time to go' }
131
+ @bag.add_tag_file("tag-k") { |io| io.puts "time to go" }
131
132
  @bag.tagmanifest!
132
133
 
133
- FileUtils.rm File.join(@bag.bag_dir, 'tag-k')
134
+ FileUtils.rm File.join(@bag.bag_dir, "tag-k")
134
135
 
135
136
  # @bag.should_not be_valid
136
137
  expect(@bag).not_to be_valid
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bagit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Johnson, Francesco Lazzarino, Jamie Little
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-12-09 00:00:00.000000000 Z
11
+ date: 2020-06-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: validatable
@@ -39,7 +39,7 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.5.0
41
41
  - !ruby/object:Gem::Dependency
42
- name: bixby
42
+ name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
@@ -53,7 +53,7 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: bundler
56
+ name: coveralls
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
@@ -67,7 +67,7 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: coveralls
70
+ name: pry
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
@@ -81,7 +81,7 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: pry
84
+ name: pry-byebug
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
@@ -95,47 +95,47 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: pry-byebug
98
+ name: rake
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - ">="
102
102
  - !ruby/object:Gem::Version
103
- version: '0'
103
+ version: 12.3.3
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
- version: '0'
110
+ version: 12.3.3
111
111
  - !ruby/object:Gem::Dependency
112
- name: rake
112
+ name: rspec
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '10.4'
117
+ version: '3'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '10.4'
124
+ version: '3'
125
125
  - !ruby/object:Gem::Dependency
126
- name: rspec
126
+ name: standard
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - "~>"
129
+ - - ">="
130
130
  - !ruby/object:Gem::Version
131
- version: '3'
131
+ version: '0'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - "~>"
136
+ - - ">="
137
137
  - !ruby/object:Gem::Version
138
- version: '3'
138
+ version: '0'
139
139
  description: Ruby Library and Command Line tools for bagit
140
140
  email: jamie@jamielittle.org
141
141
  executables:
@@ -144,7 +144,6 @@ extensions: []
144
144
  extra_rdoc_files: []
145
145
  files:
146
146
  - ".gitignore"
147
- - ".rubocop.yml"
148
147
  - ".travis.yml"
149
148
  - Gemfile
150
149
  - LICENSE.txt
@@ -189,8 +188,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
189
188
  - !ruby/object:Gem::Version
190
189
  version: '0'
191
190
  requirements: []
192
- rubyforge_project:
193
- rubygems_version: 2.6.14
191
+ rubygems_version: 3.0.8
194
192
  signing_key:
195
193
  specification_version: 4
196
194
  summary: BagIt package generation and validation