Skip to content

Commit a50af3d

Browse files
committed
Initial changes
1 parent 5ceff2a commit a50af3d

12 files changed

+268
-38
lines changed

Gemfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
source "https://rubygems.org"
22

33
gem "aws-sdk-s3", "~> 1.136"
4-
gem "bagit", "~> 0.4.6"
4+
gem "bagit", "~> 0.5.0"
55
gem "canister", "~> 0.9.2"
66
gem "faraday", "~> 2.9"
77
gem "faraday-retry", "~> 2.2"
88
gem "mysql2", "~> 0.5.6"
99
gem "prometheus-client", "~> 4.2.2"
10-
gem "rexml", "~> 3.2.7"
10+
gem "rexml", "~> 3.3.2"
1111
gem "semantic_logger", "~> 4.15"
1212
gem "sequel", "~> 5.77"
1313
gem "tty-command", "~> 0.10.1"

Gemfile.lock

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ GEM
2525
aws-sigv4 (~> 1.8)
2626
aws-sigv4 (1.8.0)
2727
aws-eventstream (~> 1, >= 1.0.2)
28-
bagit (0.4.6)
28+
bagit (0.5.0)
2929
docopt (~> 0.5.0)
3030
validatable (~> 1.6)
3131
base64 (0.2.0)
@@ -49,8 +49,8 @@ GEM
4949
tty-color (~> 0.5)
5050
prometheus-client (4.2.2)
5151
rake (13.1.0)
52-
rexml (3.2.7)
53-
strscan (>= 3.0.9)
52+
rexml (3.3.4)
53+
strscan
5454
semantic_logger (4.15.0)
5555
concurrent-ruby (~> 1.0)
5656
sequel (5.77.0)
@@ -69,7 +69,7 @@ PLATFORMS
6969

7070
DEPENDENCIES
7171
aws-sdk-s3 (~> 1.136)
72-
bagit (~> 0.4.6)
72+
bagit (~> 0.5.0)
7373
canister (~> 0.9.2)
7474
dotenv (~> 3.1.0)
7575
faraday (~> 2.9)
@@ -78,7 +78,7 @@ DEPENDENCIES
7878
mysql2 (~> 0.5.6)
7979
prometheus-client (~> 4.2.2)
8080
rake (~> 13.1)
81-
rexml (~> 3.2.7)
81+
rexml (~> 3.3.2)
8282
semantic_logger (~> 4.15)
8383
sequel (~> 5.77)
8484
sftp!

example.env

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ SETTINGS_WORKFLOW_EXPORT_DIR=./export
1818
SETTINGS_WORKFLOW_REMOVE_EXPORT=true
1919
# Determines whether the process skips sending bag(s)
2020
SETTINGS_WORKFLOW_DRY_RUN=false
21+
# Set the detect hidden flag
22+
SETTINGS_DETECT_HIDDEN=false
2123

2224
# Repository
2325
# Name that will be used for the repository at the beginning of bag identifiers

lib/bag_adapter.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@ class BagAdapter
88

99
attr_reader :additional_tag_files
1010

11-
def initialize(target_dir)
12-
@bag = BagIt::Bag.new(target_dir)
11+
def initialize(target_dir, detect_hidden)
12+
@detect_hidden = detect_hidden
13+
@bag = BagIt::Bag.new(target_dir, {}, false, @detect_hidden)
1314
@additional_tag_files = []
1415
end
1516

lib/bag_courier.rb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ def initialize(
3939
working_dir:,
4040
export_dir:,
4141
dry_run:,
42-
remove_export:
42+
remove_export:,
43+
detect_hidden:
4344
)
4445
@bag_id = bag_id
4546
@bag_info = bag_info
@@ -54,6 +55,7 @@ def initialize(
5455
@remove_export = remove_export
5556
@dry_run = dry_run
5657
@validator = validator
58+
@detect_hidden = detect_hidden
5759
end
5860

5961
def track!(status:, note: nil)
@@ -106,7 +108,7 @@ def deliver
106108
begin
107109
track!(status: BagStatus::BAGGING)
108110
bag_path = File.join(@working_dir, @bag_id.to_s)
109-
bag = BagAdapter::BagAdapter.new(bag_path)
111+
bag = BagAdapter::BagAdapter.new(bag_path, @detect_hidden)
110112

111113
track!(status: BagStatus::COPYING)
112114
logger.measure_info("Copied data for bag #{@bag_id} in #{@working_dir}.") do

lib/bag_validator.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@ def validate(path)
77
end
88

99
class InnerBagValidator < BagValidator
10-
def initialize(inner_bag_name)
10+
def initialize(inner_bag_name, detect_hidden)
1111
@inner_bag_name = inner_bag_name
12+
@detect_hidden = detect_hidden
1213
end
1314

1415
def validate(data_path)
@@ -17,7 +18,7 @@ def validate(data_path)
1718
raise BagValidationError, "Inner bag path does not exist: #{path}"
1819
end
1920

20-
@bag = BagIt::Bag.new(path)
21+
@bag = BagIt::Bag.new(path, {}, false, @detect_hidden)
2122
validity = @bag.valid?
2223

2324
if !validity

lib/config.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ def get_subset_by_key_stem(stem)
117117
:num_objects_per_repo,
118118
:restore_dir,
119119
:workflow,
120+
:detect_hidden,
120121
keyword_init: true
121122
)
122123

@@ -320,7 +321,8 @@ def self.create_config(data)
320321
export_dir: settings_workflow_data.get_value(key: "EXPORT_DIR"),
321322
dry_run: settings_workflow_data.get_value(key: "DRY_RUN", checks: [BOOLEAN_CHECK]) == "true",
322323
remove_export: settings_workflow_data.get_value(key: "REMOVE_EXPORT", checks: [BOOLEAN_CHECK]) == "true"
323-
)
324+
),
325+
detect_hidden: data.get_value(key: "SETTINGS_DETECT_HIDDEN", checks:[BOOLEAN_CHECK]) == "true"
324326
),
325327
repository: RepositoryConfig.new(
326328
name: data.get_value(key: "REPOSITORY_NAME"),

lib/dispatcher.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ def initialize(
2727
context: nil,
2828
extra_bag_info_data: nil,
2929
status_event_repo: StatusEventRepository::StatusEventInMemoryRepository.new,
30-
bag_repo: BagRepository::BagInMemoryRepository.new
30+
bag_repo: BagRepository::BagInMemoryRepository.new,
31+
detect_hidden:
3132
)
3233
@settings = settings
3334
@repository = repository
@@ -36,6 +37,7 @@ def initialize(
3637
@target_client = target_client
3738
@status_event_repo = status_event_repo
3839
@bag_repo = bag_repo
40+
@detect_hidden = detect_hidden
3941
end
4042

4143
def dispatch(
@@ -79,7 +81,8 @@ def dispatch(
7981
working_dir: @settings.working_dir,
8082
export_dir: @settings.export_dir,
8183
dry_run: @settings.dry_run,
82-
remove_export: @settings.remove_export
84+
remove_export: @settings.remove_export,
85+
detect_hidden: @detect_hidden
8386
)
8487
end
8588
end

run_dark_blue.rb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ def initialize(config)
3737

3838
@arch_configs = config.dark_blue.archivematicas
3939
@object_size_limit = config.settings.object_size_limit
40+
@detect_hidden = config.settings.detect_hidden
4041
end
4142

4243
def create_dispatcher(context:, extra_bag_info_data:)
@@ -50,7 +51,8 @@ def create_dispatcher(context:, extra_bag_info_data:)
5051
status_event_repo: @status_event_repo,
5152
bag_repo: @bag_repo,
5253
context: context,
53-
extra_bag_info_data: extra_bag_info_data
54+
extra_bag_info_data: extra_bag_info_data,
55+
detect_hidden: @detect_hidden
5456
)
5557
end
5658

@@ -81,7 +83,7 @@ def deliver_package(dispatcher:, package_data:, remote_client:)
8183
remote_client: remote_client,
8284
remote_path: package_data.remote_path
8385
),
84-
validator: InnerBagValidator.new(package_data.dir_name)
86+
validator: InnerBagValidator.new(package_data.dir_name, @detect_hidden)
8587
)
8688
logger.measure_info("Delivered package #{package_data.metadata.id}.") do
8789
courier.deliver

test/test_bag_adapter.rb

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ def setup
1414
# Reset test directory
1515
FileUtils.rm_r(@test_dir_path) if File.exist?(@test_dir_path)
1616
Dir.mkdir @test_dir_path
17+
@detect_hidden_yes = true
18+
@detect_hidden_no = false
1719
end
1820

1921
def add_data_file
@@ -25,14 +27,14 @@ def add_data_file
2527

2628
def test_bag_dir
2729
assert_equal(
28-
BagAdapter::BagAdapter.new(@test_dir_path).bag_dir,
30+
BagAdapter::BagAdapter.new(@test_dir_path, @detect_hidden_no).bag_dir,
2931
@test_dir_path
3032
)
3133
end
3234

3335
def test_data_dir
3436
assert_equal(
35-
BagAdapter::BagAdapter.new(@test_dir_path).data_dir,
37+
BagAdapter::BagAdapter.new(@test_dir_path, @detect_hidden_no).data_dir,
3638
@data_dir_path
3739
)
3840
end
@@ -46,7 +48,7 @@ def test_add_bag_info
4648
TEXT
4749

4850
Date.stub :today, Date.new(2023, 12, 22) do
49-
bag = BagAdapter::BagAdapter.new(@test_dir_path)
51+
bag = BagAdapter::BagAdapter.new(@test_dir_path, @detect_hidden_no)
5052
add_data_file
5153
bag.add_bag_info(@test_bag_info_data)
5254
end
@@ -56,7 +58,7 @@ def test_add_bag_info
5658
end
5759

5860
def test_add_tag_file
59-
bag = BagAdapter::BagAdapter.new(@test_dir_path)
61+
bag = BagAdapter::BagAdapter.new(@test_dir_path, @detect_hidden_no)
6062
bag.add_tag_file!(tag_file_text: @test_tag_file_text, file_name: @test_tag_file_name)
6163

6264
expected_file_path = File.join(@test_dir_path, @test_tag_file_name)
@@ -68,7 +70,7 @@ def test_add_tag_file
6870
end
6971

7072
def test_add_manifests
71-
bag = BagAdapter::BagAdapter.new(@test_dir_path)
73+
bag = BagAdapter::BagAdapter.new(@test_dir_path, @detect_hidden_no)
7274
add_data_file
7375
bag.add_tag_file!(tag_file_text: @test_tag_file_text, file_name: @test_tag_file_name)
7476
bag.add_manifests

test/test_bag_courier.rb

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ def setup
120120
)
121121
end
122122

123-
def create_courier(dry_run:, target_client:, validator: @validator, remove_export: false)
123+
def create_courier(dry_run:, target_client:, validator: @validator, remove_export: false, detect_hidden:)
124124
BagCourier::BagCourier.new(
125125
bag_id: @bag_id,
126126
bag_info: @bag_info,
@@ -132,12 +132,13 @@ def create_courier(dry_run:, target_client:, validator: @validator, remove_expor
132132
dry_run: dry_run,
133133
status_event_repo: @status_event_repo,
134134
target_client: target_client,
135-
validator: validator
135+
validator: validator,
136+
detect_hidden: detect_hidden
136137
)
137138
end
138139

139140
def test_deliver_with_dry_run_false
140-
courier = create_courier(dry_run: false, target_client: @mock_target_client)
141+
courier = create_courier(dry_run: false, target_client: @mock_target_client, detect_hidden: false)
141142
expected_tar_file_path = File.join(@export_path, @bag_id.to_s + ".tar")
142143
@mock_target_client.expect(:remote_text, "AWS S3 remote location in bucket fake")
143144
@mock_target_client.expect(:send_file, nil, local_file_path: expected_tar_file_path)
@@ -163,7 +164,7 @@ def test_deliver_with_dry_run_false
163164
end
164165

165166
def test_deliver_with_dry_run
166-
courier = create_courier(dry_run: true, target_client: @mock_target_client)
167+
courier = create_courier(dry_run: true, target_client: @mock_target_client, detect_hidden: false)
167168
courier.deliver
168169
@mock_target_client.verify
169170

@@ -179,7 +180,7 @@ def test_deliver_with_dry_run
179180
end
180181

181182
def test_deliver_when_deposit_raises_error
182-
courier = create_courier(dry_run: false, target_client: @aptrust_target_client)
183+
courier = create_courier(dry_run: false, target_client: @aptrust_target_client, detect_hidden: false)
183184
raise_error = proc { raise RemoteClient::RemoteClientError, "specific details" }
184185
@aptrust_target_client.stub :send_file, raise_error do
185186
courier.deliver
@@ -193,7 +194,7 @@ def test_deliver_when_deposit_raises_error
193194
end
194195

195196
def test_deliver_with_remove_export
196-
courier = create_courier(dry_run: false, target_client: @mock_target_client, remove_export: true)
197+
courier = create_courier(dry_run: false, target_client: @mock_target_client, remove_export: true, detect_hidden: false)
197198
expected_tar_file_path = File.join(@export_path, @bag_id.to_s + ".tar")
198199
@mock_target_client.expect(:remote_text, "AWS S3 remote location in bucket fake")
199200
@mock_target_client.expect(:send_file, nil, local_file_path: expected_tar_file_path)

0 commit comments

Comments
 (0)