berkeley_library-alma 0.0.7 → 0.1.1
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.
- checksums.yaml +4 -4
- data/.github/workflows/build.yml +17 -5
- data/.github/workflows/gem-push.yml +33 -0
- data/.idea/alma.iml +45 -42
- data/.rubocop.yml +295 -2
- data/CHANGES.md +11 -0
- data/Dockerfile +3 -2
- data/README.md +23 -0
- data/berkeley_library-alma.gemspec +7 -7
- data/bin/alma-mms-lookup +1 -1
- data/bin/alma-oclc-lookup +78 -0
- data/lib/berkeley_library/alma/module_info.rb +3 -3
- data/lib/berkeley_library/alma/record_id.rb +2 -1
- data/lib/berkeley_library/alma/sru/xml_reader.rb +1 -1
- data/rakelib/.rubocop.yml +4 -0
- data/spec/.rubocop.yml +93 -0
- data/spec/lib/berkeley_library/alma/barcode_spec.rb +2 -2
- data/spec/lib/berkeley_library/alma/bib_number_spec.rb +2 -2
- data/spec/lib/berkeley_library/alma/config_spec.rb +7 -5
- data/spec/lib/berkeley_library/alma/mms_id_spec.rb +2 -2
- data/spec/lib/berkeley_library/alma/record_id_spec.rb +1 -0
- data/spec/lib/berkeley_library/alma/sru/sru_spec.rb +5 -4
- data/spec/lib/berkeley_library/alma/sru/xml_reader_spec.rb +1 -1
- data/spec/spec_helper.rb +2 -2
- metadata +33 -36
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dbd49987e828ce94bb8031f580643a732423da69771f24e14fc6787a6b5f1185
|
4
|
+
data.tar.gz: 2012e2a762b2f95509d46d6f490fe988833432f51dc0b4540801cb9bc039cfed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 746e3c85182bb532ec1169ddecfa127e824a14676d9728c1d5594158e035e741fa05826ae76d3aacea6f81f87c871caff6b034fdcbcdb7f9f3c2202676b715cc
|
7
|
+
data.tar.gz: 963d161963b99a8e208b785ae06f746d77535cc445a95831154a63af5938f5461e13d032113d1a99aa03c3defacd239baede86dc9d9ddc15149729d9fe419c67
|
data/.github/workflows/build.yml
CHANGED
@@ -1,18 +1,30 @@
|
|
1
1
|
name: Build
|
2
|
-
on: [ push, pull_request ]
|
2
|
+
on: [ push, pull_request, workflow_dispatch ]
|
3
3
|
jobs:
|
4
4
|
test:
|
5
5
|
strategy:
|
6
6
|
fail-fast: false
|
7
7
|
matrix:
|
8
8
|
os: [ ubuntu-latest, macos-latest ]
|
9
|
-
ruby: [ '
|
9
|
+
ruby: [ '3.3', '3.4' ]
|
10
10
|
runs-on: ${{ matrix.os }}
|
11
11
|
|
12
12
|
steps:
|
13
|
-
-
|
14
|
-
|
13
|
+
- name: Check out repository
|
14
|
+
uses: actions/checkout@v2
|
15
|
+
|
16
|
+
- name: Set up Ruby
|
17
|
+
uses: ruby/setup-ruby@v1
|
15
18
|
with:
|
16
19
|
ruby-version: ${{ matrix.ruby }}
|
17
20
|
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
18
|
-
|
21
|
+
|
22
|
+
- name: Run checks
|
23
|
+
run: bundle exec rake
|
24
|
+
|
25
|
+
- name: Upload artifacts
|
26
|
+
if: ${{ always() }}
|
27
|
+
uses: actions/upload-artifact@v4
|
28
|
+
with:
|
29
|
+
name: artifacts-${{ matrix.ruby }}-${{ matrix.os }}
|
30
|
+
path: artifacts/**
|
@@ -0,0 +1,33 @@
|
|
1
|
+
name: Ruby Gem
|
2
|
+
|
3
|
+
on:
|
4
|
+
release:
|
5
|
+
types: [published]
|
6
|
+
|
7
|
+
jobs:
|
8
|
+
build:
|
9
|
+
name: Build + Publish
|
10
|
+
runs-on: ubuntu-latest
|
11
|
+
permissions:
|
12
|
+
contents: read
|
13
|
+
packages: write
|
14
|
+
|
15
|
+
steps:
|
16
|
+
- uses: actions/checkout@v3
|
17
|
+
|
18
|
+
- name: Set up Ruby
|
19
|
+
uses: ruby/setup-ruby@v1
|
20
|
+
with:
|
21
|
+
ruby-version: '3.3'
|
22
|
+
bundler-cache: true
|
23
|
+
|
24
|
+
- name: Publish to RubyGems
|
25
|
+
run: |
|
26
|
+
mkdir -p $HOME/.gem
|
27
|
+
touch $HOME/.gem/credentials
|
28
|
+
chmod 0600 $HOME/.gem/credentials
|
29
|
+
printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
|
30
|
+
gem build *.gemspec
|
31
|
+
gem push *.gem
|
32
|
+
env:
|
33
|
+
GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
|
data/.idea/alma.iml
CHANGED
@@ -12,19 +12,19 @@
|
|
12
12
|
</content>
|
13
13
|
<orderEntry type="jdk" jdkName="RVM: ruby-2.7.5" jdkType="RUBY_SDK" />
|
14
14
|
<orderEntry type="sourceFolder" forTests="false" />
|
15
|
-
<orderEntry type="library" scope="PROVIDED" name="actionpack (v7.0.
|
16
|
-
<orderEntry type="library" scope="PROVIDED" name="actionview (v7.0.
|
17
|
-
<orderEntry type="library" scope="PROVIDED" name="activesupport (v7.0.
|
18
|
-
<orderEntry type="library" scope="PROVIDED" name="addressable (v2.8.
|
15
|
+
<orderEntry type="library" scope="PROVIDED" name="actionpack (v7.0.4, RVM: ruby-2.7.5) [gem]" level="application" />
|
16
|
+
<orderEntry type="library" scope="PROVIDED" name="actionview (v7.0.4, RVM: ruby-2.7.5) [gem]" level="application" />
|
17
|
+
<orderEntry type="library" scope="PROVIDED" name="activesupport (v7.0.4, RVM: ruby-2.7.5) [gem]" level="application" />
|
18
|
+
<orderEntry type="library" scope="PROVIDED" name="addressable (v2.8.1, RVM: ruby-2.7.5) [gem]" level="application" />
|
19
19
|
<orderEntry type="library" scope="PROVIDED" name="amazing_print (v1.4.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
20
20
|
<orderEntry type="library" scope="PROVIDED" name="ast (v2.4.2, RVM: ruby-2.7.5) [gem]" level="application" />
|
21
|
-
<orderEntry type="library" scope="PROVIDED" name="berkeley_library-logging (v0.2.
|
21
|
+
<orderEntry type="library" scope="PROVIDED" name="berkeley_library-logging (v0.2.7, RVM: ruby-2.7.5) [gem]" level="application" />
|
22
22
|
<orderEntry type="library" scope="PROVIDED" name="berkeley_library-marc (v0.3.1, RVM: ruby-2.7.5) [gem]" level="application" />
|
23
|
-
<orderEntry type="library" scope="PROVIDED" name="berkeley_library-util (v0.1.
|
23
|
+
<orderEntry type="library" scope="PROVIDED" name="berkeley_library-util (v0.1.5, RVM: ruby-2.7.5) [gem]" level="application" />
|
24
24
|
<orderEntry type="library" scope="PROVIDED" name="builder (v3.2.4, RVM: ruby-2.7.5) [gem]" level="application" />
|
25
25
|
<orderEntry type="library" scope="PROVIDED" name="bundle-audit (v0.1.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
26
|
-
<orderEntry type="library" scope="PROVIDED" name="bundler (v2.
|
27
|
-
<orderEntry type="library" scope="PROVIDED" name="bundler-audit (v0.9.
|
26
|
+
<orderEntry type="library" scope="PROVIDED" name="bundler (v2.2.31, RVM: ruby-2.7.5) [gem]" level="application" />
|
27
|
+
<orderEntry type="library" scope="PROVIDED" name="bundler-audit (v0.9.1, RVM: ruby-2.7.5) [gem]" level="application" />
|
28
28
|
<orderEntry type="library" scope="PROVIDED" name="ci_reporter (v2.0.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
29
29
|
<orderEntry type="library" scope="PROVIDED" name="ci_reporter_rspec (v1.0.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
30
30
|
<orderEntry type="library" scope="PROVIDED" name="colorize (v0.8.1, RVM: ruby-2.7.5) [gem]" level="application" />
|
@@ -34,45 +34,46 @@
|
|
34
34
|
<orderEntry type="library" scope="PROVIDED" name="diff-lcs (v1.5.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
35
35
|
<orderEntry type="library" scope="PROVIDED" name="docile (v1.4.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
36
36
|
<orderEntry type="library" scope="PROVIDED" name="domain_name (v0.5.20190701, RVM: ruby-2.7.5) [gem]" level="application" />
|
37
|
-
<orderEntry type="library" scope="PROVIDED" name="erubi (v1.
|
37
|
+
<orderEntry type="library" scope="PROVIDED" name="erubi (v1.11.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
38
38
|
<orderEntry type="library" scope="PROVIDED" name="hashdiff (v1.0.1, RVM: ruby-2.7.5) [gem]" level="application" />
|
39
39
|
<orderEntry type="library" scope="PROVIDED" name="http-accept (v1.7.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
40
|
-
<orderEntry type="library" scope="PROVIDED" name="http-cookie (v1.0.
|
41
|
-
<orderEntry type="library" scope="PROVIDED" name="i18n (v1.
|
40
|
+
<orderEntry type="library" scope="PROVIDED" name="http-cookie (v1.0.5, RVM: ruby-2.7.5) [gem]" level="application" />
|
41
|
+
<orderEntry type="library" scope="PROVIDED" name="i18n (v1.12.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
42
|
+
<orderEntry type="library" scope="PROVIDED" name="json (v2.6.2, RVM: ruby-2.7.5) [gem]" level="application" />
|
42
43
|
<orderEntry type="library" scope="PROVIDED" name="lograge (v0.12.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
43
|
-
<orderEntry type="library" scope="PROVIDED" name="loofah (v2.
|
44
|
-
<orderEntry type="library" scope="PROVIDED" name="marc (v1.
|
44
|
+
<orderEntry type="library" scope="PROVIDED" name="loofah (v2.19.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
45
|
+
<orderEntry type="library" scope="PROVIDED" name="marc (v1.2.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
45
46
|
<orderEntry type="library" scope="PROVIDED" name="method_source (v1.0.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
46
47
|
<orderEntry type="library" scope="PROVIDED" name="mime-types (v3.4.1, RVM: ruby-2.7.5) [gem]" level="application" />
|
47
48
|
<orderEntry type="library" scope="PROVIDED" name="mime-types-data (v3.2022.0105, RVM: ruby-2.7.5) [gem]" level="application" />
|
48
|
-
<orderEntry type="library" scope="PROVIDED" name="minitest (v5.
|
49
|
+
<orderEntry type="library" scope="PROVIDED" name="minitest (v5.16.3, RVM: ruby-2.7.5) [gem]" level="application" />
|
49
50
|
<orderEntry type="library" scope="PROVIDED" name="netrc (v0.11.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
50
|
-
<orderEntry type="library" scope="PROVIDED" name="nokogiri (v1.13.
|
51
|
-
<orderEntry type="library" scope="PROVIDED" name="oj (v3.13.
|
51
|
+
<orderEntry type="library" scope="PROVIDED" name="nokogiri (v1.13.9, RVM: ruby-2.7.5) [gem]" level="application" />
|
52
|
+
<orderEntry type="library" scope="PROVIDED" name="oj (v3.13.23, RVM: ruby-2.7.5) [gem]" level="application" />
|
52
53
|
<orderEntry type="library" scope="PROVIDED" name="ougai (v1.9.1, RVM: ruby-2.7.5) [gem]" level="application" />
|
53
|
-
<orderEntry type="library" scope="PROVIDED" name="parallel (v1.
|
54
|
-
<orderEntry type="library" scope="PROVIDED" name="parser (v3.1.
|
54
|
+
<orderEntry type="library" scope="PROVIDED" name="parallel (v1.22.1, RVM: ruby-2.7.5) [gem]" level="application" />
|
55
|
+
<orderEntry type="library" scope="PROVIDED" name="parser (v3.1.2.1, RVM: ruby-2.7.5) [gem]" level="application" />
|
55
56
|
<orderEntry type="library" scope="PROVIDED" name="parslet (v2.0.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
56
|
-
<orderEntry type="library" scope="PROVIDED" name="public_suffix (
|
57
|
+
<orderEntry type="library" scope="PROVIDED" name="public_suffix (v5.0.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
57
58
|
<orderEntry type="library" scope="PROVIDED" name="racc (v1.6.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
58
|
-
<orderEntry type="library" scope="PROVIDED" name="rack (v2.2.
|
59
|
-
<orderEntry type="library" scope="PROVIDED" name="rack-test (
|
59
|
+
<orderEntry type="library" scope="PROVIDED" name="rack (v2.2.4, RVM: ruby-2.7.5) [gem]" level="application" />
|
60
|
+
<orderEntry type="library" scope="PROVIDED" name="rack-test (v2.0.2, RVM: ruby-2.7.5) [gem]" level="application" />
|
60
61
|
<orderEntry type="library" scope="PROVIDED" name="rails-dom-testing (v2.0.3, RVM: ruby-2.7.5) [gem]" level="application" />
|
61
|
-
<orderEntry type="library" scope="PROVIDED" name="rails-html-sanitizer (v1.4.
|
62
|
-
<orderEntry type="library" scope="PROVIDED" name="railties (v7.0.
|
62
|
+
<orderEntry type="library" scope="PROVIDED" name="rails-html-sanitizer (v1.4.3, RVM: ruby-2.7.5) [gem]" level="application" />
|
63
|
+
<orderEntry type="library" scope="PROVIDED" name="railties (v7.0.4, RVM: ruby-2.7.5) [gem]" level="application" />
|
63
64
|
<orderEntry type="library" scope="PROVIDED" name="rainbow (v3.1.1, RVM: ruby-2.7.5) [gem]" level="application" />
|
64
65
|
<orderEntry type="library" scope="PROVIDED" name="rake (v13.0.6, RVM: ruby-2.7.5) [gem]" level="application" />
|
65
|
-
<orderEntry type="library" scope="PROVIDED" name="regexp_parser (v2.
|
66
|
+
<orderEntry type="library" scope="PROVIDED" name="regexp_parser (v2.6.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
66
67
|
<orderEntry type="library" scope="PROVIDED" name="request_store (v1.5.1, RVM: ruby-2.7.5) [gem]" level="application" />
|
67
68
|
<orderEntry type="library" scope="PROVIDED" name="rest-client (v2.1.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
68
69
|
<orderEntry type="library" scope="PROVIDED" name="rexml (v3.2.5, RVM: ruby-2.7.5) [gem]" level="application" />
|
69
|
-
<orderEntry type="library" scope="PROVIDED" name="rspec (v3.
|
70
|
-
<orderEntry type="library" scope="PROVIDED" name="rspec-core (v3.
|
71
|
-
<orderEntry type="library" scope="PROVIDED" name="rspec-expectations (v3.
|
72
|
-
<orderEntry type="library" scope="PROVIDED" name="rspec-mocks (v3.
|
73
|
-
<orderEntry type="library" scope="PROVIDED" name="rspec-support (v3.
|
74
|
-
<orderEntry type="library" scope="PROVIDED" name="rubocop (v1.
|
75
|
-
<orderEntry type="library" scope="PROVIDED" name="rubocop-ast (v1.
|
70
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec (v3.12.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
71
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec-core (v3.12.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
72
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec-expectations (v3.12.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
73
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec-mocks (v3.12.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
74
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec-support (v3.12.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
75
|
+
<orderEntry type="library" scope="PROVIDED" name="rubocop (v1.39.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
76
|
+
<orderEntry type="library" scope="PROVIDED" name="rubocop-ast (v1.23.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
76
77
|
<orderEntry type="library" scope="PROVIDED" name="rubocop-rake (v0.6.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
77
78
|
<orderEntry type="library" scope="PROVIDED" name="rubocop-rspec (v2.4.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
78
79
|
<orderEntry type="library" scope="PROVIDED" name="ruby-marc-spec (v0.1.3, RVM: ruby-2.7.5) [gem]" level="application" />
|
@@ -80,18 +81,18 @@
|
|
80
81
|
<orderEntry type="library" scope="PROVIDED" name="scrub_rb (v1.0.1, RVM: ruby-2.7.5) [gem]" level="application" />
|
81
82
|
<orderEntry type="library" scope="PROVIDED" name="simplecov (v0.21.2, RVM: ruby-2.7.5) [gem]" level="application" />
|
82
83
|
<orderEntry type="library" scope="PROVIDED" name="simplecov-html (v0.12.3, RVM: ruby-2.7.5) [gem]" level="application" />
|
83
|
-
<orderEntry type="library" scope="PROVIDED" name="simplecov-rcov (v0.
|
84
|
-
<orderEntry type="library" scope="PROVIDED" name="simplecov_json_formatter (v0.1.
|
84
|
+
<orderEntry type="library" scope="PROVIDED" name="simplecov-rcov (v0.3.1, RVM: ruby-2.7.5) [gem]" level="application" />
|
85
|
+
<orderEntry type="library" scope="PROVIDED" name="simplecov_json_formatter (v0.1.4, RVM: ruby-2.7.5) [gem]" level="application" />
|
85
86
|
<orderEntry type="library" scope="PROVIDED" name="thor (v1.2.1, RVM: ruby-2.7.5) [gem]" level="application" />
|
86
|
-
<orderEntry type="library" scope="PROVIDED" name="typesafe_enum (v0.3.
|
87
|
-
<orderEntry type="library" scope="PROVIDED" name="tzinfo (v2.0.
|
87
|
+
<orderEntry type="library" scope="PROVIDED" name="typesafe_enum (v0.3.1, RVM: ruby-2.7.5) [gem]" level="application" />
|
88
|
+
<orderEntry type="library" scope="PROVIDED" name="tzinfo (v2.0.5, RVM: ruby-2.7.5) [gem]" level="application" />
|
88
89
|
<orderEntry type="library" scope="PROVIDED" name="unf (v0.1.4, RVM: ruby-2.7.5) [gem]" level="application" />
|
89
|
-
<orderEntry type="library" scope="PROVIDED" name="unf_ext (v0.0.8.
|
90
|
-
<orderEntry type="library" scope="PROVIDED" name="unicode-display_width (v2.
|
91
|
-
<orderEntry type="library" scope="PROVIDED" name="webmock (v3.
|
90
|
+
<orderEntry type="library" scope="PROVIDED" name="unf_ext (v0.0.8.2, RVM: ruby-2.7.5) [gem]" level="application" />
|
91
|
+
<orderEntry type="library" scope="PROVIDED" name="unicode-display_width (v2.3.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
92
|
+
<orderEntry type="library" scope="PROVIDED" name="webmock (v3.18.1, RVM: ruby-2.7.5) [gem]" level="application" />
|
92
93
|
<orderEntry type="library" scope="PROVIDED" name="webrick (v1.7.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
93
|
-
<orderEntry type="library" scope="PROVIDED" name="yard (v0.9.
|
94
|
-
<orderEntry type="library" scope="PROVIDED" name="zeitwerk (v2.
|
94
|
+
<orderEntry type="library" scope="PROVIDED" name="yard (v0.9.28, RVM: ruby-2.7.5) [gem]" level="application" />
|
95
|
+
<orderEntry type="library" scope="PROVIDED" name="zeitwerk (v2.6.6, RVM: ruby-2.7.5) [gem]" level="application" />
|
95
96
|
</component>
|
96
97
|
<component name="RModuleSettingsStorage">
|
97
98
|
<LOAD_PATH number="2" string0="$MODULE_DIR$/lib" string1="$MODULE_DIR$/spec" />
|
@@ -108,12 +109,14 @@
|
|
108
109
|
</RakeTaskImpl>
|
109
110
|
<RakeTaskImpl description="Run all specs in spec directory, with coverage" fullCommand="coverage" id="coverage" />
|
110
111
|
<RakeTaskImpl description="Run tests, check test coverage, check code style, check for vulnerabilities, build gem" fullCommand="default" id="default" />
|
111
|
-
<RakeTaskImpl description="Build berkeley_library-alma.gemspec as berkeley_library-alma-0.0.
|
112
|
+
<RakeTaskImpl description="Build berkeley_library-alma.gemspec as berkeley_library-alma-0.0.7.1.gem" fullCommand="gem" id="gem" />
|
112
113
|
<RakeTaskImpl description="Run RuboCop with auto-correct, and output results to console" fullCommand="ra" id="ra" />
|
113
114
|
<RakeTaskImpl description="Run rubocop with HTML output" fullCommand="rubocop" id="rubocop" />
|
114
115
|
<RakeTaskImpl id="rubocop">
|
115
116
|
<subtasks>
|
116
|
-
<RakeTaskImpl description="
|
117
|
+
<RakeTaskImpl description="Autocorrect RuboCop offenses (only when it's safe)" fullCommand="rubocop:autocorrect" id="autocorrect" />
|
118
|
+
<RakeTaskImpl description="Autocorrect RuboCop offenses (safe and unsafe)" fullCommand="rubocop:autocorrect_all" id="autocorrect_all" />
|
119
|
+
<RakeTaskImpl description="" fullCommand="rubocop:auto_correct" id="auto_correct" />
|
117
120
|
</subtasks>
|
118
121
|
</RakeTaskImpl>
|
119
122
|
<RakeTaskImpl description="Run RSpec code examples" fullCommand="spec" id="spec" />
|
data/.rubocop.yml
CHANGED
@@ -328,7 +328,300 @@ Style/SwapValues: # (new in 1.1)
|
|
328
328
|
############################################################
|
329
329
|
# Added in RuboCop 1.10
|
330
330
|
|
331
|
-
Gemspec/DateAssignment: # (new in 1.10)
|
332
|
-
Enabled: true
|
333
331
|
Style/HashConversion: # (new in 1.10)
|
334
332
|
Enabled: true
|
333
|
+
|
334
|
+
############################################################
|
335
|
+
# Added in RuboCop 1.12
|
336
|
+
|
337
|
+
Style/StringChars: # (new in 1.12)
|
338
|
+
Enabled: true
|
339
|
+
|
340
|
+
############################################################
|
341
|
+
# Added in RuboCop 1.16
|
342
|
+
|
343
|
+
Lint/EmptyInPattern: # (new in 1.16)
|
344
|
+
Enabled: true
|
345
|
+
Style/InPatternThen: # (new in 1.16)
|
346
|
+
Enabled: true
|
347
|
+
Style/MultilineInPatternThen: # (new in 1.16)
|
348
|
+
Enabled: true
|
349
|
+
Style/QuotedSymbols: # (new in 1.16)
|
350
|
+
Enabled: true
|
351
|
+
|
352
|
+
############################################################
|
353
|
+
# Added in RuboCop 1.18
|
354
|
+
|
355
|
+
Layout/LineEndStringConcatenationIndentation: # (new in 1.18)
|
356
|
+
Enabled: true
|
357
|
+
|
358
|
+
############################################################
|
359
|
+
# Added in RuboCop 1.19
|
360
|
+
|
361
|
+
Lint/AmbiguousRange: # (new in 1.19)
|
362
|
+
Enabled: true
|
363
|
+
Style/RedundantSelfAssignmentBranch: # (new in 1.19)
|
364
|
+
Enabled: true
|
365
|
+
|
366
|
+
############################################################
|
367
|
+
# Added in RuboCop 1.21
|
368
|
+
|
369
|
+
Lint/AmbiguousOperatorPrecedence: # (new in 1.21)
|
370
|
+
Enabled: true
|
371
|
+
Lint/IncompatibleIoSelectWithFiberScheduler: # (new in 1.21)
|
372
|
+
Enabled: true
|
373
|
+
|
374
|
+
############################################################
|
375
|
+
# Added in RuboCop 1.22
|
376
|
+
|
377
|
+
Lint/RequireRelativeSelfPath: # (new in 1.22)
|
378
|
+
Enabled: true
|
379
|
+
Security/IoMethods: # (new in 1.22)
|
380
|
+
Enabled: true
|
381
|
+
Style/NumberedParameters: # (new in 1.22)
|
382
|
+
Enabled: true
|
383
|
+
Style/NumberedParametersLimit: # (new in 1.22)
|
384
|
+
Enabled: true
|
385
|
+
Style/SelectByRegexp: # (new in 1.22)
|
386
|
+
Enabled: true
|
387
|
+
|
388
|
+
############################################################
|
389
|
+
# Added in RuboCop 1.23
|
390
|
+
|
391
|
+
Gemspec/RequireMFA: # (new in 1.23)
|
392
|
+
Enabled: true
|
393
|
+
Lint/UselessRuby2Keywords: # (new in 1.23)
|
394
|
+
Enabled: true
|
395
|
+
Style/OpenStructUse: # (new in 1.23)
|
396
|
+
Enabled: true
|
397
|
+
|
398
|
+
############################################################
|
399
|
+
# Added in RuboCop 1.24
|
400
|
+
|
401
|
+
Naming/BlockForwarding: # (new in 1.24)
|
402
|
+
Enabled: true
|
403
|
+
Style/FileRead: # (new in 1.24)
|
404
|
+
Enabled: true
|
405
|
+
Style/FileWrite: # (new in 1.24)
|
406
|
+
Enabled: true
|
407
|
+
Style/MapToHash: # (new in 1.24)
|
408
|
+
Enabled: true
|
409
|
+
|
410
|
+
############################################################
|
411
|
+
# Added in RuboCop 1.26
|
412
|
+
|
413
|
+
Style/NestedFileDirname: # (new in 1.26)
|
414
|
+
Enabled: true
|
415
|
+
|
416
|
+
############################################################
|
417
|
+
# Added in RuboCop 1.27
|
418
|
+
|
419
|
+
Lint/RefinementImportMethods: # (new in 1.27)
|
420
|
+
Enabled: true
|
421
|
+
Style/RedundantInitialize: # (new in 1.27)
|
422
|
+
Enabled: true
|
423
|
+
|
424
|
+
############################################################
|
425
|
+
# Added in RuboCop 1.28
|
426
|
+
|
427
|
+
Security/CompoundHash: # (new in 1.28)
|
428
|
+
Enabled: true
|
429
|
+
Style/FetchEnvVar: # (new in 1.28)
|
430
|
+
Enabled: true
|
431
|
+
Style/ObjectThen: # (new in 1.28)
|
432
|
+
Enabled: true
|
433
|
+
|
434
|
+
############################################################
|
435
|
+
# Added in RuboCop 1.29
|
436
|
+
|
437
|
+
Style/EnvHome: # (new in 1.29)
|
438
|
+
Enabled: true
|
439
|
+
|
440
|
+
############################################################
|
441
|
+
# Added in RuboCop 1.30
|
442
|
+
|
443
|
+
Gemspec/DeprecatedAttributeAssignment: # (new in 1.30)
|
444
|
+
Enabled: true
|
445
|
+
Style/MapCompactWithConditionalBlock: # (new in 1.30)
|
446
|
+
Enabled: true
|
447
|
+
|
448
|
+
############################################################
|
449
|
+
# Added in RuboCop 1.31
|
450
|
+
|
451
|
+
Layout/LineContinuationLeadingSpace: # (new in 1.31)
|
452
|
+
Enabled: true
|
453
|
+
Layout/LineContinuationSpacing: # (new in 1.31)
|
454
|
+
Enabled: true
|
455
|
+
Lint/ConstantOverwrittenInRescue: # (new in 1.31)
|
456
|
+
Enabled: true
|
457
|
+
Lint/NonAtomicFileOperation: # (new in 1.31)
|
458
|
+
Enabled: true
|
459
|
+
|
460
|
+
############################################################
|
461
|
+
# Added in RuboCop 1.32
|
462
|
+
|
463
|
+
Lint/RequireRangeParentheses: # (new in 1.32)
|
464
|
+
Enabled: true
|
465
|
+
Style/EmptyHeredoc: # (new in 1.32)
|
466
|
+
Enabled: true
|
467
|
+
|
468
|
+
############################################################
|
469
|
+
# Added in RuboCop 1.35
|
470
|
+
|
471
|
+
Style/MagicCommentFormat: # (new in 1.35)
|
472
|
+
Enabled: true
|
473
|
+
|
474
|
+
############################################################
|
475
|
+
# Added in RuboCop 1.37
|
476
|
+
|
477
|
+
Lint/DuplicateMagicComment: # (new in 1.37)
|
478
|
+
Enabled: true
|
479
|
+
Style/OperatorMethodCall: # (new in 1.37)
|
480
|
+
Enabled: true
|
481
|
+
Style/RedundantStringEscape: # (new in 1.37)
|
482
|
+
Enabled: true
|
483
|
+
|
484
|
+
############################################################
|
485
|
+
# Added in RuboCop 1.38
|
486
|
+
|
487
|
+
Style/RedundantEach: # (new in 1.38)
|
488
|
+
Enabled: true
|
489
|
+
|
490
|
+
Gemspec/AddRuntimeDependency: # new in 1.65
|
491
|
+
Enabled: true
|
492
|
+
Gemspec/AttributeAssignment: # new in 1.77
|
493
|
+
Enabled: true
|
494
|
+
Gemspec/DevelopmentDependencies: # new in 1.44
|
495
|
+
Enabled: false
|
496
|
+
Lint/ArrayLiteralInRegexp: # new i n 1.71
|
497
|
+
Enabled: true
|
498
|
+
Lint/ConstantReassignment: # new in 1.70
|
499
|
+
Enabled: true
|
500
|
+
Lint/CopDirectiveSyntax: # new in 1.72
|
501
|
+
Enabled: true
|
502
|
+
Lint/DuplicateMatchPattern: # new in 1.50
|
503
|
+
Enabled: true
|
504
|
+
Lint/DuplicateSetElement: # new in 1.67
|
505
|
+
Enabled: true
|
506
|
+
Lint/HashNewWithKeywordArgumentsAsDefault: # new in 1.69
|
507
|
+
Enabled: true
|
508
|
+
Lint/ItWithoutArgumentsInBlock: # new in 1.59
|
509
|
+
Enabled: true
|
510
|
+
Lint/LiteralAssignmentInCondition: # new in 1.58
|
511
|
+
Enabled: true
|
512
|
+
Lint/MixedCaseRange: # new in 1.53
|
513
|
+
Enabled: true
|
514
|
+
Lint/NumericOperationWithConstantResult: # new in 1.69
|
515
|
+
Enabled: true
|
516
|
+
Lint/RedundantRegexpQuantifiers: # new in 1.53
|
517
|
+
Enabled: true
|
518
|
+
Lint/RedundantTypeConversion: # new in 1.72
|
519
|
+
Enabled: true
|
520
|
+
Lint/SharedMutableDefault: # new in 1.70
|
521
|
+
Enabled: true
|
522
|
+
Lint/SuppressedExceptionInNumberConversion: # new in 1.72
|
523
|
+
Enabled: true
|
524
|
+
Lint/UnescapedBracketInRegexp: # new in 1.68
|
525
|
+
Enabled: true
|
526
|
+
Lint/UselessConstantScoping: # new in 1.72
|
527
|
+
Enabled: true
|
528
|
+
Lint/UselessDefaultValueArgument: # new in 1.76
|
529
|
+
Enabled: true
|
530
|
+
Lint/UselessDefined: # new in 1.69
|
531
|
+
Enabled: true
|
532
|
+
Lint/UselessNumericOperation: # new in 1.66
|
533
|
+
Enabled: true
|
534
|
+
Lint/UselessOr: # new in 1.76
|
535
|
+
Enabled: true
|
536
|
+
Lint/UselessRescue: # new in 1.43
|
537
|
+
Enabled: true
|
538
|
+
Metrics/CollectionLiteralLength: # new in 1.47
|
539
|
+
Enabled: true
|
540
|
+
Naming/PredicateMethod: # new in 1.76
|
541
|
+
Enabled: true
|
542
|
+
Style/AmbiguousEndlessMethodDefinition: # new in 1.68
|
543
|
+
Enabled: true
|
544
|
+
Style/ArrayIntersect: # new in 1.40
|
545
|
+
Enabled: true
|
546
|
+
Style/BitwisePredicate: # new in 1.68
|
547
|
+
Enabled: true
|
548
|
+
Style/CollectionQuerying: # new in 1.77
|
549
|
+
Enabled: true
|
550
|
+
Style/CombinableDefined: # new in 1.68
|
551
|
+
Enabled: true
|
552
|
+
Style/ComparableBetween: # new in 1.74
|
553
|
+
Enabled: true
|
554
|
+
Style/ComparableClamp: # new in 1.44
|
555
|
+
Enabled: true
|
556
|
+
Style/ConcatArrayLiterals: # new in 1.41
|
557
|
+
Enabled: true
|
558
|
+
Style/DataInheritance: # new in 1.49
|
559
|
+
Enabled: true
|
560
|
+
Style/DigChain: # new in 1.69
|
561
|
+
Enabled: true
|
562
|
+
Style/DirEmpty: # new in 1.48
|
563
|
+
Enabled: true
|
564
|
+
Style/EmptyStringInsideInterpolation: # new in 1.76
|
565
|
+
Enabled: true
|
566
|
+
Style/ExactRegexpMatch: # new in 1.51
|
567
|
+
Enabled: true
|
568
|
+
Style/FileEmpty: # new in 1.48
|
569
|
+
Enabled: true
|
570
|
+
Style/FileNull: # new in 1.69
|
571
|
+
Enabled: true
|
572
|
+
Style/FileTouch: # new in 1.69
|
573
|
+
Enabled: true
|
574
|
+
Style/HashFetchChain: # new in 1.75
|
575
|
+
Enabled: true
|
576
|
+
Style/HashSlice: # new in 1.71
|
577
|
+
Enabled: true
|
578
|
+
Style/ItAssignment: # new in 1.70
|
579
|
+
Enabled: true
|
580
|
+
Style/ItBlockParameter: # new in 1.75
|
581
|
+
Enabled: true
|
582
|
+
Style/KeywordArgumentsMerging: # new in 1.68
|
583
|
+
Enabled: true
|
584
|
+
Style/MapIntoArray: # new in 1.63
|
585
|
+
Enabled: true
|
586
|
+
Style/MapToSet: # new in 1.42
|
587
|
+
Enabled: true
|
588
|
+
Style/MinMaxComparison: # new in 1.42
|
589
|
+
Enabled: true
|
590
|
+
Style/RedundantArrayConstructor: # new in 1.52
|
591
|
+
Enabled: true
|
592
|
+
Style/RedundantArrayFlatten: # new in 1.76
|
593
|
+
Enabled: true
|
594
|
+
Style/RedundantConstantBase: # new in 1.40
|
595
|
+
Enabled: true
|
596
|
+
Style/RedundantCurrentDirectoryInPath: # new in 1.53
|
597
|
+
Enabled: true
|
598
|
+
Style/RedundantDoubleSplatHashBraces: # new in 1.41
|
599
|
+
Enabled: true
|
600
|
+
Style/RedundantFilterChain: # new in 1.52
|
601
|
+
Enabled: true
|
602
|
+
Style/RedundantFormat: # new in 1.72
|
603
|
+
Enabled: true
|
604
|
+
Style/RedundantHeredocDelimiterQuotes: # new in 1.45
|
605
|
+
Enabled: true
|
606
|
+
Style/RedundantInterpolationUnfreeze: # new in 1.66
|
607
|
+
Enabled: true
|
608
|
+
Style/RedundantLineContinuation: # new in 1.49
|
609
|
+
Enabled: true
|
610
|
+
Style/RedundantRegexpArgument: # new in 1.53
|
611
|
+
Enabled: true
|
612
|
+
Style/RedundantRegexpConstructor: # new in 1.52
|
613
|
+
Enabled: true
|
614
|
+
Style/ReturnNilInPredicateMethodDefinition: # new in 1.53
|
615
|
+
Enabled: true
|
616
|
+
Style/SafeNavigationChainLength: # new in 1.68
|
617
|
+
Enabled: true
|
618
|
+
Style/SendWithLiteralMethodName: # new in 1.64
|
619
|
+
Enabled: true
|
620
|
+
Style/SingleLineDoEndBlock: # new in 1.57
|
621
|
+
Enabled: true
|
622
|
+
Style/SuperArguments: # new in 1.64
|
623
|
+
Enabled: true
|
624
|
+
Style/SuperWithArgsParentheses: # new in 1.58
|
625
|
+
Enabled: true
|
626
|
+
Style/YAMLFileRead: # new in 1.53
|
627
|
+
Enabled: true
|
data/CHANGES.md
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
# 0.1.1 (23 July 2025)
|
2
|
+
|
3
|
+
- Update to support Ruby 3.3+.
|
4
|
+
- Update Rubocop & style changes.
|
5
|
+
- Add `alma-oclc-lookup` script.
|
6
|
+
|
7
|
+
# 0.0.7.1 (24 May 2022)
|
8
|
+
|
9
|
+
- Set minimum Nokogiri version to address
|
10
|
+
[CVE-2022-29181](https://nvd.nist.gov/vuln/detail/CVE-2022-29181)
|
11
|
+
|
1
12
|
# 0.0.7 (6 May 2022)
|
2
13
|
|
3
14
|
- `SRU#get_marc_records` now accepts a `max_records` parameter corresponding to the SRU
|
data/Dockerfile
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# =============================================================================
|
2
2
|
# Target: base
|
3
3
|
|
4
|
-
FROM ruby:
|
4
|
+
FROM ruby:3.3-alpine AS base
|
5
5
|
|
6
6
|
RUN apk --no-cache --update upgrade && \
|
7
7
|
apk --no-cache add \
|
@@ -12,6 +12,7 @@ RUN apk --no-cache --update upgrade && \
|
|
12
12
|
openssl \
|
13
13
|
tzdata \
|
14
14
|
xz-libs \
|
15
|
+
yaml-dev \
|
15
16
|
&& rm -rf /var/cache/apk/*
|
16
17
|
|
17
18
|
WORKDIR /opt/app
|
@@ -51,4 +52,4 @@ COPY --from=development /usr/local/bundle /usr/local/bundle
|
|
51
52
|
RUN bundle config set deployment 'true'
|
52
53
|
RUN bundle install --local --path=/usr/local/bundle
|
53
54
|
|
54
|
-
CMD [
|
55
|
+
CMD ["bundle", "exec", "rake"]
|
data/README.md
CHANGED
@@ -263,3 +263,26 @@ b1234
|
|
263
263
|
9912348245906531 9912348245906531
|
264
264
|
b110824349 b110824349 991038544199706532
|
265
265
|
```
|
266
|
+
|
267
|
+
|
268
|
+
### `alma-oclc-lookup`: 035$a OCLC number lookup
|
269
|
+
|
270
|
+
The `alma-oclc-lookup` script takes one ore more record IDs (either Millennium bib
|
271
|
+
numbers or Alma MMS IDs) and attempts to read the corresponding MARC records via
|
272
|
+
[SRU](https://developers.exlibrisgroup.com/alma/integrations/sru/) and extract
|
273
|
+
the OCLC number(s) from the 035$a field.
|
274
|
+
|
275
|
+
#### Output format
|
276
|
+
|
277
|
+
The output is tab-separated, in the form
|
278
|
+
|
279
|
+
```none
|
280
|
+
<record ID> <OCLC number(s)…>
|
281
|
+
```
|
282
|
+
|
283
|
+
E.g.
|
284
|
+
|
285
|
+
```none
|
286
|
+
$ echo '991051353589706532' | bin/alma-oclc-lookup ✹ ✚main ‹ruby-2.7.5›
|
287
|
+
991051353589706532 1097551039
|
288
|
+
```
|
@@ -8,8 +8,8 @@ require 'berkeley_library/alma/module_info'
|
|
8
8
|
|
9
9
|
Gem::Specification.new do |spec|
|
10
10
|
spec.name = BerkeleyLibrary::Alma::ModuleInfo::NAME
|
11
|
-
spec.author = BerkeleyLibrary::Alma::ModuleInfo::
|
12
|
-
spec.email = BerkeleyLibrary::Alma::ModuleInfo::
|
11
|
+
spec.author = BerkeleyLibrary::Alma::ModuleInfo::AUTHORS
|
12
|
+
spec.email = BerkeleyLibrary::Alma::ModuleInfo::AUTHOR_EMAILS
|
13
13
|
spec.summary = BerkeleyLibrary::Alma::ModuleInfo::SUMMARY
|
14
14
|
spec.description = BerkeleyLibrary::Alma::ModuleInfo::DESCRIPTION
|
15
15
|
spec.license = BerkeleyLibrary::Alma::ModuleInfo::LICENSE
|
@@ -17,7 +17,6 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.homepage = BerkeleyLibrary::Alma::ModuleInfo::HOMEPAGE
|
18
18
|
|
19
19
|
spec.files = `git ls-files -z`.split("\x0")
|
20
|
-
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
21
20
|
spec.require_paths = ['lib']
|
22
21
|
|
23
22
|
spec.required_ruby_version = ruby_version
|
@@ -25,18 +24,19 @@ Gem::Specification.new do |spec|
|
|
25
24
|
spec.add_dependency 'berkeley_library-logging', '~> 0.2'
|
26
25
|
spec.add_dependency 'berkeley_library-marc', '~> 0.3.1'
|
27
26
|
spec.add_dependency 'berkeley_library-util', '~> 0.1', '>= 0.1.2'
|
28
|
-
spec.add_dependency 'nokogiri', '~> 1.
|
27
|
+
spec.add_dependency 'nokogiri', '~> 1.13', '>= 1.13.6'
|
29
28
|
|
30
29
|
spec.add_development_dependency 'bundle-audit', '~> 0.1'
|
31
30
|
spec.add_development_dependency 'ci_reporter_rspec', '~> 1.0'
|
32
31
|
spec.add_development_dependency 'colorize', '~> 0.8'
|
33
32
|
spec.add_development_dependency 'rake', '~> 13.0'
|
34
33
|
spec.add_development_dependency 'rspec', '~> 3.10'
|
35
|
-
spec.add_development_dependency 'rubocop', '
|
36
|
-
spec.add_development_dependency 'rubocop-rake', '
|
37
|
-
spec.add_development_dependency 'rubocop-rspec', '
|
34
|
+
spec.add_development_dependency 'rubocop', '~> 1.78.0'
|
35
|
+
spec.add_development_dependency 'rubocop-rake', '~> 0.7.0'
|
36
|
+
spec.add_development_dependency 'rubocop-rspec', '~> 3.6.0'
|
38
37
|
spec.add_development_dependency 'simplecov', '~> 0.21'
|
39
38
|
spec.add_development_dependency 'simplecov-rcov', '~> 0.2'
|
40
39
|
spec.add_development_dependency 'webmock', '~> 3.12'
|
41
40
|
spec.add_development_dependency 'yard', '~> 0.9.27'
|
41
|
+
spec.metadata['rubygems_mfa_required'] = 'true'
|
42
42
|
end
|
data/bin/alma-mms-lookup
CHANGED
@@ -14,7 +14,7 @@ $stderr.sync = true
|
|
14
14
|
require 'bundler/setup'
|
15
15
|
|
16
16
|
# Require lib directory
|
17
|
-
unless $LOAD_PATH.include?(
|
17
|
+
unless $LOAD_PATH.include?(lib_path = File.expand_path('../lib', __dir__))
|
18
18
|
puts "Adding #{lib_path} to $LOAD_PATH"
|
19
19
|
$LOAD_PATH.unshift(lib_path)
|
20
20
|
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# ------------------------------------------------------------
|
4
|
+
# Global setup
|
5
|
+
|
6
|
+
# Don't buffer stdout or stderr
|
7
|
+
$stdout.sync = true
|
8
|
+
$stderr.sync = true
|
9
|
+
|
10
|
+
# ------------------------------------------------------------
|
11
|
+
# Dependencies
|
12
|
+
|
13
|
+
# Require gems
|
14
|
+
require 'bundler/setup'
|
15
|
+
|
16
|
+
# Require lib directory
|
17
|
+
unless $LOAD_PATH.include?(lib_path = File.expand_path('../lib', __dir__))
|
18
|
+
puts "Adding #{lib_path} to $LOAD_PATH"
|
19
|
+
$LOAD_PATH.unshift(lib_path)
|
20
|
+
end
|
21
|
+
|
22
|
+
require 'berkeley_library/alma'
|
23
|
+
require 'marc/spec'
|
24
|
+
|
25
|
+
# ------------------------------------------------------------
|
26
|
+
# Configuration
|
27
|
+
|
28
|
+
# Configure Alma URLs etc.
|
29
|
+
BerkeleyLibrary::Alma::Config.default!
|
30
|
+
|
31
|
+
# Configure logging
|
32
|
+
logger = BerkeleyLibrary::Logging::Loggers.new_readable_logger($stderr)
|
33
|
+
logger.level = Logger::Severity::WARN
|
34
|
+
BerkeleyLibrary::Logging.logger = logger
|
35
|
+
|
36
|
+
# ------------------------------------------------------------
|
37
|
+
# Constants
|
38
|
+
|
39
|
+
OCLC_NUM_RE = /(?<=\(OCoLC\))(?<num>\d+)/.freeze
|
40
|
+
|
41
|
+
# ------------------------------------------------------------
|
42
|
+
# Utility methods
|
43
|
+
|
44
|
+
# Read raw IDs from STDIN
|
45
|
+
def raw_ids
|
46
|
+
@raw_ids ||= Enumerator.new do |y|
|
47
|
+
$stdin.each_line(chomp: true) do |ln|
|
48
|
+
y << ln.strip
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def ids_035a_for(record_id)
|
54
|
+
return unless record_id
|
55
|
+
return unless (marc_record = record_id.get_marc_record)
|
56
|
+
|
57
|
+
MARC::Spec.find('035$a', marc_record)
|
58
|
+
end
|
59
|
+
|
60
|
+
def oclc_nums_for(record_id)
|
61
|
+
return [] unless (ids_035a = ids_035a_for(record_id))
|
62
|
+
|
63
|
+
ids_035a.filter_map do |sf_035a|
|
64
|
+
next unless (val = sf_035a.value)
|
65
|
+
next unless (md = OCLC_NUM_RE.match(val))
|
66
|
+
|
67
|
+
md[:num]
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
# ------------------------------------------------------------
|
72
|
+
# Main program
|
73
|
+
|
74
|
+
raw_ids.each do |raw_id|
|
75
|
+
record_id = BerkeleyLibrary::Alma::RecordId.parse(raw_id)
|
76
|
+
oclc_nums = oclc_nums_for(record_id)
|
77
|
+
puts [raw_id, *oclc_nums].join("\t")
|
78
|
+
end
|
@@ -2,12 +2,12 @@ module BerkeleyLibrary
|
|
2
2
|
module Alma
|
3
3
|
class ModuleInfo
|
4
4
|
NAME = 'berkeley_library-alma'.freeze
|
5
|
-
|
6
|
-
|
5
|
+
AUTHORS = ['David Moles', 'maría a. matienzo'].freeze
|
6
|
+
AUTHOR_EMAILS = ['dmoles@berkeley.edu', 'matienzo@berkeley.edu'].freeze
|
7
7
|
SUMMARY = 'Alma/Primo utilities for the UC Berkeley Library'.freeze
|
8
8
|
DESCRIPTION = 'A gem providing Alma/Primo-related utility code for the UC Berkeley Library'.freeze
|
9
9
|
LICENSE = 'MIT'.freeze
|
10
|
-
VERSION = '0.
|
10
|
+
VERSION = '0.1.1'.freeze
|
11
11
|
HOMEPAGE = 'https://github.com/BerkeleyLibrary/alma'.freeze
|
12
12
|
end
|
13
13
|
end
|
@@ -110,7 +110,7 @@ module BerkeleyLibrary
|
|
110
110
|
# @see Nokogiri::XML::Sax::Document#characters
|
111
111
|
# rubocop:disable Metrics/MethodLength
|
112
112
|
def characters(string)
|
113
|
-
return super unless
|
113
|
+
return super unless @current_element_ns == NS_SRW
|
114
114
|
return unless (name = @current_element_name)
|
115
115
|
|
116
116
|
case name
|
data/spec/.rubocop.yml
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
inherit_from: ../.rubocop.yml
|
2
2
|
|
3
|
+
plugins:
|
4
|
+
- rubocop-rspec
|
5
|
+
|
3
6
|
AllCops:
|
4
7
|
# Exclude generated files
|
5
8
|
Exclude:
|
@@ -35,3 +38,93 @@ Metrics/MethodLength:
|
|
35
38
|
# Sometimes we're testing the operator
|
36
39
|
Lint/BinaryOperatorWithIdenticalOperands:
|
37
40
|
Enabled: false
|
41
|
+
|
42
|
+
############################################################
|
43
|
+
# rubocop-rspec
|
44
|
+
|
45
|
+
# believe me, it wasn't by choice
|
46
|
+
RSpec/AnyInstance:
|
47
|
+
Enabled: false
|
48
|
+
|
49
|
+
# we meant to do that
|
50
|
+
RSpec/BeforeAfterAll:
|
51
|
+
Enabled: false
|
52
|
+
|
53
|
+
# more words != more readable
|
54
|
+
RSpec/ContextWording:
|
55
|
+
Enabled: false
|
56
|
+
|
57
|
+
# explicit >>> implicit
|
58
|
+
RSpec/DescribedClass:
|
59
|
+
Enabled: false
|
60
|
+
|
61
|
+
# more punctuation != more readable
|
62
|
+
RSpec/DescribeSymbol:
|
63
|
+
Enabled: false
|
64
|
+
|
65
|
+
# setup cost / time >>> failure granularity
|
66
|
+
RSpec/ExampleLength:
|
67
|
+
Max: 15
|
68
|
+
CountAsOne:
|
69
|
+
- array
|
70
|
+
- hash
|
71
|
+
- heredoc
|
72
|
+
|
73
|
+
# we meant to do that
|
74
|
+
RSpec/ExpectInHook:
|
75
|
+
Enabled: false
|
76
|
+
|
77
|
+
RSpec/IndexedLet:
|
78
|
+
Enabled: false
|
79
|
+
|
80
|
+
# your naming scheme is not in possession of all the facts
|
81
|
+
RSpec/SpecFilePathFormat:
|
82
|
+
Enabled: false
|
83
|
+
|
84
|
+
RSpec/SpecFilePathSuffix:
|
85
|
+
Enabled: true
|
86
|
+
|
87
|
+
# explicit >>> implicit
|
88
|
+
RSpec/InstanceVariable:
|
89
|
+
Enabled: false
|
90
|
+
|
91
|
+
# maybe when 'all' has a corresponding 'none' matcher
|
92
|
+
RSpec/IteratedExpectation:
|
93
|
+
Enabled: false
|
94
|
+
|
95
|
+
# we meant to do that
|
96
|
+
RSpec/MessageSpies:
|
97
|
+
Enabled: false
|
98
|
+
|
99
|
+
# too late now
|
100
|
+
RSpec/MultipleMemoizedHelpers:
|
101
|
+
Enabled: false
|
102
|
+
|
103
|
+
# setup cost / time >>> failure granularity
|
104
|
+
RSpec/MultipleExpectations:
|
105
|
+
Enabled: false
|
106
|
+
|
107
|
+
# cure is worse than the disease
|
108
|
+
RSpec/NestedGroups:
|
109
|
+
Enabled: false
|
110
|
+
|
111
|
+
# more quotation marks != more readable
|
112
|
+
RSpec/SharedExamples:
|
113
|
+
Enabled: false
|
114
|
+
|
115
|
+
# we meant to do that
|
116
|
+
RSpec/StubbedMock:
|
117
|
+
Enabled: false
|
118
|
+
|
119
|
+
# we meant to do that
|
120
|
+
RSpec/VerifiedDoubles:
|
121
|
+
Enabled: false
|
122
|
+
|
123
|
+
############################################################
|
124
|
+
# rubocop-rspec
|
125
|
+
|
126
|
+
# enable newer rubocop-rspec cops
|
127
|
+
|
128
|
+
RSpec/IdenticalEqualityAssertion: # new in 2.4
|
129
|
+
Enabled: true
|
130
|
+
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
module BerkeleyLibrary
|
4
4
|
module Alma
|
5
5
|
describe BarCode do
|
6
|
-
before
|
6
|
+
before do
|
7
7
|
BerkeleyLibrary::Alma.configure do
|
8
8
|
Config.alma_sru_host = 'berkeley.alma.exlibrisgroup.com'
|
9
9
|
Config.alma_institution_code = '01UCS_BER'
|
@@ -12,7 +12,7 @@ module BerkeleyLibrary
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
-
after
|
15
|
+
after do
|
16
16
|
BerkeleyLibrary::Alma::Config.send(:clear!)
|
17
17
|
end
|
18
18
|
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
module BerkeleyLibrary
|
4
4
|
module Alma
|
5
5
|
describe BibNumber do
|
6
|
-
before
|
6
|
+
before do
|
7
7
|
BerkeleyLibrary::Alma.configure do
|
8
8
|
Config.alma_sru_host = 'berkeley.alma.exlibrisgroup.com'
|
9
9
|
Config.alma_institution_code = '01UCS_BER'
|
@@ -12,7 +12,7 @@ module BerkeleyLibrary
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
-
after
|
15
|
+
after do
|
16
16
|
BerkeleyLibrary::Alma::Config.send(:clear!)
|
17
17
|
end
|
18
18
|
|
@@ -6,7 +6,7 @@ module BerkeleyLibrary
|
|
6
6
|
module Alma
|
7
7
|
describe Config do
|
8
8
|
|
9
|
-
after
|
9
|
+
after do
|
10
10
|
Config.send(:clear!)
|
11
11
|
end
|
12
12
|
|
@@ -52,8 +52,10 @@ module BerkeleyLibrary
|
|
52
52
|
describe 'with Rails config' do
|
53
53
|
attr_reader :rails_config
|
54
54
|
|
55
|
-
before
|
56
|
-
@rails_config =
|
55
|
+
before do
|
56
|
+
@rails_config = Class.new do
|
57
|
+
attr_accessor :alma_sru_host, :alma_institution_code
|
58
|
+
end.new
|
57
59
|
|
58
60
|
application = double(Object)
|
59
61
|
allow(application).to receive(:config).and_return(rails_config)
|
@@ -64,8 +66,8 @@ module BerkeleyLibrary
|
|
64
66
|
Object.const_set(:Rails, rails)
|
65
67
|
end
|
66
68
|
|
67
|
-
after
|
68
|
-
Object.send(:remove_const, :Rails)
|
69
|
+
after do
|
70
|
+
Object.send(:remove_const, :Rails) # rubocop:disable RSpec/RemoveConst
|
69
71
|
end
|
70
72
|
|
71
73
|
describe :alma_sru_base_uri do
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
module BerkeleyLibrary
|
4
4
|
module Alma
|
5
5
|
describe MMSID do
|
6
|
-
before
|
6
|
+
before do
|
7
7
|
BerkeleyLibrary::Alma.configure do
|
8
8
|
Config.alma_sru_host = 'berkeley.alma.exlibrisgroup.com'
|
9
9
|
Config.alma_institution_code = '01UCS_BER'
|
@@ -12,7 +12,7 @@ module BerkeleyLibrary
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
-
after
|
15
|
+
after do
|
16
16
|
BerkeleyLibrary::Alma::Config.send(:clear!)
|
17
17
|
end
|
18
18
|
|
@@ -4,6 +4,7 @@ module BerkeleyLibrary
|
|
4
4
|
module Alma
|
5
5
|
describe SRU do
|
6
6
|
before { Config.default! }
|
7
|
+
|
7
8
|
after { Config.send(:clear!) }
|
8
9
|
|
9
10
|
describe :get_marc_records do
|
@@ -20,7 +21,7 @@ module BerkeleyLibrary
|
|
20
21
|
reader = SRU.get_marc_records(*mms_ids)
|
21
22
|
marc_records = reader.to_a
|
22
23
|
expect(marc_records.size).to eq(mms_ids.size)
|
23
|
-
expect(marc_records.map(&:record_id)).to
|
24
|
+
expect(marc_records.map(&:record_id)).to match_array(mms_ids)
|
24
25
|
end
|
25
26
|
end
|
26
27
|
|
@@ -59,7 +60,7 @@ module BerkeleyLibrary
|
|
59
60
|
reader = SRU.get_marc_records(*mms_ids)
|
60
61
|
marc_records = reader.to_a
|
61
62
|
expect(marc_records.size).to eq(mms_ids.size)
|
62
|
-
expect(marc_records.map(&:record_id)).to
|
63
|
+
expect(marc_records.map(&:record_id)).to match_array(mms_ids)
|
63
64
|
end
|
64
65
|
|
65
66
|
it 'does not freeze records by default' do
|
@@ -67,7 +68,7 @@ module BerkeleyLibrary
|
|
67
68
|
|
68
69
|
reader = SRU.get_marc_records(*mms_ids)
|
69
70
|
reader.to_a.each do |record|
|
70
|
-
expect(record.frozen?).to
|
71
|
+
expect(record.frozen?).to be(false)
|
71
72
|
end
|
72
73
|
end
|
73
74
|
|
@@ -76,7 +77,7 @@ module BerkeleyLibrary
|
|
76
77
|
|
77
78
|
reader = SRU.get_marc_records(*mms_ids, freeze: true)
|
78
79
|
reader.to_a.each do |record|
|
79
|
-
expect(record.frozen?).to
|
80
|
+
expect(record.frozen?).to be(true)
|
80
81
|
end
|
81
82
|
end
|
82
83
|
|
data/spec/spec_helper.rb
CHANGED
@@ -15,8 +15,8 @@ RSpec.configure do |config|
|
|
15
15
|
config.color = true
|
16
16
|
config.tty = true
|
17
17
|
config.formatter = :documentation
|
18
|
-
config.before
|
19
|
-
config.after
|
18
|
+
config.before { WebMock.disable_net_connect!(allow_localhost: true) }
|
19
|
+
config.after { WebMock.allow_net_connect! }
|
20
20
|
config.mock_with :rspec do |mocks|
|
21
21
|
mocks.verify_partial_doubles = true
|
22
22
|
end
|
metadata
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: berkeley_library-alma
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Moles
|
8
|
+
- maría a. matienzo
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2025-07-23 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: berkeley_library-logging
|
@@ -64,14 +65,20 @@ dependencies:
|
|
64
65
|
requirements:
|
65
66
|
- - "~>"
|
66
67
|
- !ruby/object:Gem::Version
|
67
|
-
version: '1.
|
68
|
+
version: '1.13'
|
69
|
+
- - ">="
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: 1.13.6
|
68
72
|
type: :runtime
|
69
73
|
prerelease: false
|
70
74
|
version_requirements: !ruby/object:Gem::Requirement
|
71
75
|
requirements:
|
72
76
|
- - "~>"
|
73
77
|
- !ruby/object:Gem::Version
|
74
|
-
version: '1.
|
78
|
+
version: '1.13'
|
79
|
+
- - ">="
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: 1.13.6
|
75
82
|
- !ruby/object:Gem::Dependency
|
76
83
|
name: bundle-audit
|
77
84
|
requirement: !ruby/object:Gem::Requirement
|
@@ -146,44 +153,44 @@ dependencies:
|
|
146
153
|
name: rubocop
|
147
154
|
requirement: !ruby/object:Gem::Requirement
|
148
155
|
requirements:
|
149
|
-
- -
|
156
|
+
- - "~>"
|
150
157
|
- !ruby/object:Gem::Version
|
151
|
-
version:
|
158
|
+
version: 1.78.0
|
152
159
|
type: :development
|
153
160
|
prerelease: false
|
154
161
|
version_requirements: !ruby/object:Gem::Requirement
|
155
162
|
requirements:
|
156
|
-
- -
|
163
|
+
- - "~>"
|
157
164
|
- !ruby/object:Gem::Version
|
158
|
-
version:
|
165
|
+
version: 1.78.0
|
159
166
|
- !ruby/object:Gem::Dependency
|
160
167
|
name: rubocop-rake
|
161
168
|
requirement: !ruby/object:Gem::Requirement
|
162
169
|
requirements:
|
163
|
-
- -
|
170
|
+
- - "~>"
|
164
171
|
- !ruby/object:Gem::Version
|
165
|
-
version: 0.
|
172
|
+
version: 0.7.0
|
166
173
|
type: :development
|
167
174
|
prerelease: false
|
168
175
|
version_requirements: !ruby/object:Gem::Requirement
|
169
176
|
requirements:
|
170
|
-
- -
|
177
|
+
- - "~>"
|
171
178
|
- !ruby/object:Gem::Version
|
172
|
-
version: 0.
|
179
|
+
version: 0.7.0
|
173
180
|
- !ruby/object:Gem::Dependency
|
174
181
|
name: rubocop-rspec
|
175
182
|
requirement: !ruby/object:Gem::Requirement
|
176
183
|
requirements:
|
177
|
-
- -
|
184
|
+
- - "~>"
|
178
185
|
- !ruby/object:Gem::Version
|
179
|
-
version:
|
186
|
+
version: 3.6.0
|
180
187
|
type: :development
|
181
188
|
prerelease: false
|
182
189
|
version_requirements: !ruby/object:Gem::Requirement
|
183
190
|
requirements:
|
184
|
-
- -
|
191
|
+
- - "~>"
|
185
192
|
- !ruby/object:Gem::Version
|
186
|
-
version:
|
193
|
+
version: 3.6.0
|
187
194
|
- !ruby/object:Gem::Dependency
|
188
195
|
name: simplecov
|
189
196
|
requirement: !ruby/object:Gem::Requirement
|
@@ -241,12 +248,15 @@ dependencies:
|
|
241
248
|
- !ruby/object:Gem::Version
|
242
249
|
version: 0.9.27
|
243
250
|
description: A gem providing Alma/Primo-related utility code for the UC Berkeley Library
|
244
|
-
email:
|
251
|
+
email:
|
252
|
+
- dmoles@berkeley.edu
|
253
|
+
- matienzo@berkeley.edu
|
245
254
|
executables: []
|
246
255
|
extensions: []
|
247
256
|
extra_rdoc_files: []
|
248
257
|
files:
|
249
258
|
- ".github/workflows/build.yml"
|
259
|
+
- ".github/workflows/gem-push.yml"
|
250
260
|
- ".gitignore"
|
251
261
|
- ".idea/.gitignore"
|
252
262
|
- ".idea/alma.iml"
|
@@ -267,6 +277,7 @@ files:
|
|
267
277
|
- Rakefile
|
268
278
|
- berkeley_library-alma.gemspec
|
269
279
|
- bin/alma-mms-lookup
|
280
|
+
- bin/alma-oclc-lookup
|
270
281
|
- docker-compose.yml
|
271
282
|
- lib/berkeley_library/alma.rb
|
272
283
|
- lib/berkeley_library/alma/barcode.rb
|
@@ -279,6 +290,7 @@ files:
|
|
279
290
|
- lib/berkeley_library/alma/sru.rb
|
280
291
|
- lib/berkeley_library/alma/sru/sru.rb
|
281
292
|
- lib/berkeley_library/alma/sru/xml_reader.rb
|
293
|
+
- rakelib/.rubocop.yml
|
282
294
|
- rakelib/bundle.rake
|
283
295
|
- rakelib/coverage.rake
|
284
296
|
- rakelib/gem.rake
|
@@ -303,7 +315,8 @@ files:
|
|
303
315
|
homepage: https://github.com/BerkeleyLibrary/alma
|
304
316
|
licenses:
|
305
317
|
- MIT
|
306
|
-
metadata:
|
318
|
+
metadata:
|
319
|
+
rubygems_mfa_required: 'true'
|
307
320
|
post_install_message:
|
308
321
|
rdoc_options: []
|
309
322
|
require_paths:
|
@@ -319,24 +332,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
319
332
|
- !ruby/object:Gem::Version
|
320
333
|
version: '0'
|
321
334
|
requirements: []
|
322
|
-
rubygems_version: 3.
|
335
|
+
rubygems_version: 3.5.22
|
323
336
|
signing_key:
|
324
337
|
specification_version: 4
|
325
338
|
summary: Alma/Primo utilities for the UC Berkeley Library
|
326
|
-
test_files:
|
327
|
-
- spec/.rubocop.yml
|
328
|
-
- spec/data/991054360089706532-sru.xml
|
329
|
-
- spec/data/C084093187-sru.xml
|
330
|
-
- spec/data/availability-sru-page-1.xml
|
331
|
-
- spec/data/availability-sru-page-2.xml
|
332
|
-
- spec/data/availability-sru.xml
|
333
|
-
- spec/data/b110824349-sru.xml
|
334
|
-
- spec/data/bibs_with_check_digits.txt
|
335
|
-
- spec/lib/berkeley_library/alma/barcode_spec.rb
|
336
|
-
- spec/lib/berkeley_library/alma/bib_number_spec.rb
|
337
|
-
- spec/lib/berkeley_library/alma/config_spec.rb
|
338
|
-
- spec/lib/berkeley_library/alma/mms_id_spec.rb
|
339
|
-
- spec/lib/berkeley_library/alma/record_id_spec.rb
|
340
|
-
- spec/lib/berkeley_library/alma/sru/sru_spec.rb
|
341
|
-
- spec/lib/berkeley_library/alma/sru/xml_reader_spec.rb
|
342
|
-
- spec/spec_helper.rb
|
339
|
+
test_files: []
|