zache 0.13.1 → 0.13.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b87b15cc2d21dd690255c612d9e3ea5d28f1b4788cfa19c239f3bcc6b29144e1
4
- data.tar.gz: ea6a615b74dbec67e97d1c8d5db0b467380030d01635964e25c031e13e490fcc
3
+ metadata.gz: 239afad7743bd2f58375201b79c3368ef98ba75621eeacdabf20dd2d5b3f1879
4
+ data.tar.gz: 348062c765fccb666346e22a068dbfd5dcc1d87952b7fdf635eb840e9bd89f46
5
5
  SHA512:
6
- metadata.gz: 6e9c8cb157905d795cb96650b8f5d71cb79b5b0575e03863df23df485c9e708f4e09d552ee0330b4f78fa373c14ef232b16b574d3afb0a310ad02d2f51732f34
7
- data.tar.gz: 97d726f208f8ac511b8ecfac2b9602bae716bec22d0b3e56e9bc77c36ccf97efaaee73ccb4d9057f071f26ea52da9afafb6eafd88f9c2e6c46f2d1c561da3e9c
6
+ metadata.gz: b65995f073b8cf06cfea5b0a778df5d0f47d8a09f42075034a07d4f4b84afa350d01f654ca3d00940d928f2a14f1e92c45c26995f66ef605599ea898f22f2b95
7
+ data.tar.gz: da7d27e255d7920171ed0433c1f81a7a7ce29671f43cdb082f818ac55cf9a57831d5786f6ecef7b93d97562ea8c6deb88ead9a6c7c35a9ad519d03780ba8018b
data/.0pdd.yml CHANGED
@@ -1,3 +1,25 @@
1
+ # (The MIT License)
2
+ #
3
+ # Copyright (c) 2018-2024 Yegor Bugayenko
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 all
13
+ # 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 THE
21
+ # SOFTWARE.
22
+ ---
1
23
  errors:
2
24
  - yegor256@gmail.com
3
25
  # alerts:
@@ -0,0 +1,43 @@
1
+ # (The MIT License)
2
+ #
3
+ # Copyright (c) 2018-2024 Yegor Bugayenko
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 all
13
+ # 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 THE
21
+ # SOFTWARE.
22
+ ---
23
+ name: actionlint
24
+ 'on':
25
+ push:
26
+ branches:
27
+ - master
28
+ pull_request:
29
+ branches:
30
+ - master
31
+ jobs:
32
+ actionlint:
33
+ runs-on: ubuntu-22.04
34
+ steps:
35
+ - uses: actions/checkout@v4
36
+ - name: Download actionlint
37
+ id: get_actionlint
38
+ # yamllint disable-line rule:line-length
39
+ run: bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash)
40
+ shell: bash
41
+ - name: Check workflow files
42
+ run: ${{ steps.get_actionlint.outputs.executable }} -color
43
+ shell: bash
@@ -1,3 +1,24 @@
1
+ # (The MIT License)
2
+ #
3
+ # Copyright (c) 2018-2024 Yegor Bugayenko
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 all
13
+ # 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 THE
21
+ # SOFTWARE.
1
22
  ---
2
23
  name: codecov
3
24
  on:
@@ -6,15 +27,14 @@ on:
6
27
  - master
7
28
  jobs:
8
29
  codecov:
9
- runs-on: ubuntu-20.04
30
+ runs-on: ubuntu-22.04
10
31
  steps:
11
- - uses: actions/checkout@v3
32
+ - uses: actions/checkout@v4
12
33
  - uses: actions/setup-ruby@v1
13
34
  with:
14
35
  ruby-version: 3.0
15
- - run: bundle update
36
+ - run: bundle install
16
37
  - run: bundle exec rake
17
- - uses: codecov/codecov-action@v3
38
+ - uses: codecov/codecov-action@v4.0.0-beta.3
18
39
  with:
19
- file: coverage/.resultset.json
20
- fail_ci_if_error: true
40
+ token: ${{ secrets.CODECOV_TOKEN }}
@@ -0,0 +1,32 @@
1
+ # (The MIT License)
2
+ #
3
+ # Copyright (c) 2018-2024 Yegor Bugayenko
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 all
13
+ # 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 THE
21
+ # SOFTWARE.
22
+ ---
23
+ name: copyrights
24
+ 'on':
25
+ push:
26
+ pull_request:
27
+ jobs:
28
+ copyrights:
29
+ runs-on: ubuntu-22.04
30
+ steps:
31
+ - uses: actions/checkout@v4
32
+ - uses: yegor256/copyrights-action@0.0.5
@@ -0,0 +1,59 @@
1
+ # (The MIT License)
2
+ #
3
+ # Copyright (c) 2018-2024 Yegor Bugayenko
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 all
13
+ # 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 THE
21
+ # SOFTWARE.
22
+ ---
23
+ name: license
24
+ 'on':
25
+ push:
26
+ branches:
27
+ - master
28
+ pull_request:
29
+ branches:
30
+ - master
31
+ jobs:
32
+ license:
33
+ runs-on: ubuntu-22.04
34
+ steps:
35
+ - uses: actions/checkout@v4
36
+ - shell: bash
37
+ run: |
38
+ header="Copyright (c) 2018-$(date +%Y) Yegor Bugayenko"
39
+ failed="false"
40
+ while IFS= read -r file; do
41
+ if ! grep -q "${header}" "${file}"; then
42
+ failed="true"
43
+ echo "⚠️ Copyright header is not found in: ${file}"
44
+ else
45
+ echo "File looks good: ${file}"
46
+ fi
47
+ done < <(find . -type f \( \
48
+ -name "Dockerfile" -o \
49
+ -name "LICENSE.txt" -o \
50
+ -name "Makefile" -o \
51
+ -name "Rakefile" -o \
52
+ -name "*.sh" -o \
53
+ -name "*.rb" -o \
54
+ -name "*.fe" -o \
55
+ -name "*.yml" \
56
+ \) -print)
57
+ if [ "${failed}" = "true" ]; then
58
+ exit 1
59
+ fi
@@ -0,0 +1,40 @@
1
+ # (The MIT License)
2
+ #
3
+ # Copyright (c) 2018-2024 Yegor Bugayenko
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 all
13
+ # 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 THE
21
+ # SOFTWARE.
22
+ ---
23
+ name: markdown-lint
24
+ 'on':
25
+ push:
26
+ branches:
27
+ - master
28
+ pull_request:
29
+ branches:
30
+ - master
31
+ paths-ignore: ['paper/**', 'sandbox/**']
32
+ concurrency:
33
+ group: markdown-lint-${{ github.ref }}
34
+ cancel-in-progress: true
35
+ jobs:
36
+ markdown-lint:
37
+ runs-on: ubuntu-22.04
38
+ steps:
39
+ - uses: actions/checkout@v4
40
+ - uses: articulate/actions-markdownlint@v1
@@ -1,6 +1,27 @@
1
+ # (The MIT License)
2
+ #
3
+ # Copyright (c) 2018-2024 Yegor Bugayenko
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 all
13
+ # 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 THE
21
+ # SOFTWARE.
1
22
  ---
2
23
  name: pdd
3
- "on":
24
+ on:
4
25
  push:
5
26
  branches:
6
27
  - master
@@ -9,7 +30,7 @@ name: pdd
9
30
  - master
10
31
  jobs:
11
32
  pdd:
12
- runs-on: ubuntu-20.04
33
+ runs-on: ubuntu-22.04
13
34
  steps:
14
- - uses: actions/checkout@v3
15
- - uses: g4s8/pdd-action@master
35
+ - uses: actions/checkout@v4
36
+ - uses: volodya-lombrozo/pdd-action@master
@@ -1,3 +1,24 @@
1
+ # (The MIT License)
2
+ #
3
+ # Copyright (c) 2018-2024 Yegor Bugayenko
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 all
13
+ # 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 THE
21
+ # SOFTWARE.
1
22
  ---
2
23
  name: rake
3
24
  on:
@@ -13,12 +34,13 @@ jobs:
13
34
  strategy:
14
35
  matrix:
15
36
  os: [ubuntu-20.04, macos-12]
16
- ruby: [3.0, 2.7]
37
+ ruby: [3.0, 3.2]
17
38
  runs-on: ${{ matrix.os }}
18
39
  steps:
19
- - uses: actions/checkout@v3
40
+ - uses: actions/checkout@v4
20
41
  - uses: ruby/setup-ruby@v1
21
42
  with:
22
43
  ruby-version: ${{ matrix.ruby }}
23
- - run: bundle update
44
+ bundler-cache: true
45
+ - run: bundle install
24
46
  - run: bundle exec rake
@@ -1,3 +1,24 @@
1
+ # (The MIT License)
2
+ #
3
+ # Copyright (c) 2018-2024 Yegor Bugayenko
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 all
13
+ # 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 THE
21
+ # SOFTWARE.
1
22
  ---
2
23
  name: xcop
3
24
  "on":
@@ -9,9 +30,9 @@ name: xcop
9
30
  - master
10
31
  jobs:
11
32
  xcop:
12
- runs-on: ubuntu-20.04
33
+ runs-on: ubuntu-22.04
13
34
  steps:
14
- - uses: actions/checkout@v3
35
+ - uses: actions/checkout@v4
15
36
  - uses: g4s8/xcop-action@master
16
37
  with:
17
38
  files: '**/*.xml'
@@ -0,0 +1,36 @@
1
+ # (The MIT License)
2
+ #
3
+ # Copyright (c) 2018-2024 Yegor Bugayenko
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 all
13
+ # 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 THE
21
+ # SOFTWARE.
22
+ ---
23
+ name: yamllint
24
+ 'on':
25
+ push:
26
+ branches:
27
+ - master
28
+ pull_request:
29
+ branches:
30
+ - master
31
+ jobs:
32
+ yamllint:
33
+ runs-on: ubuntu-22.04
34
+ steps:
35
+ - uses: actions/checkout@v4
36
+ - uses: ibiqlik/action-yamllint@v3
data/.gitignore CHANGED
@@ -1,4 +1,3 @@
1
- Gemfile.lock
2
1
  *.gem
3
2
  .bundle/
4
3
  .DS_Store
data/.rubocop.yml CHANGED
@@ -1,3 +1,25 @@
1
+ # (The MIT License)
2
+ #
3
+ # Copyright (c) 2018-2024 Yegor Bugayenko
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 all
13
+ # 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 THE
21
+ # SOFTWARE.
22
+ ---
1
23
  AllCops:
2
24
  DisplayCopNames: true
3
25
  TargetRubyVersion: 2.5
@@ -7,6 +29,7 @@ AllCops:
7
29
  Metrics/ClassLength:
8
30
  Exclude:
9
31
  - 'test/*.rb'
32
+ - 'vendor/**/**'
10
33
  Layout/EmptyLineAfterGuardClause:
11
34
  Enabled: false
12
35
  Layout/MultilineMethodCallIndentation:
data/.rultor.yml CHANGED
@@ -1,5 +1,27 @@
1
+ # (The MIT License)
2
+ #
3
+ # Copyright (c) 2018-2024 Yegor Bugayenko
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 all
13
+ # 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 THE
21
+ # SOFTWARE.
22
+ ---
1
23
  docker:
2
- image: yegor256/rultor-image:1.19.0
24
+ image: yegor256/rultor-image:1.23.1
3
25
  assets:
4
26
  rubygems.yml: yegor256/home#assets/rubygems.yml
5
27
  install: |
data/Gemfile CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2018-2023 Yegor Bugayenko
3
+ # Copyright (c) 2018-2024 Yegor Bugayenko
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the 'Software'), to deal
@@ -23,11 +23,11 @@
23
23
  source 'https://rubygems.org'
24
24
  gemspec
25
25
 
26
- gem 'concurrent-ruby', '1.2.2', require: false
27
- gem 'minitest', '5.19.0', require: false
28
- gem 'rake', '13.0.6', require: false
29
- gem 'rdoc', '6.5.0', require: false
30
- gem 'rubocop', '1.55.1', require: false
31
- gem 'rubocop-rspec', '2.23.0', require: false
26
+ gem 'concurrent-ruby', '1.3.3', require: false
27
+ gem 'minitest', '5.24.1', require: false
28
+ gem 'rake', '13.2.1', require: false
29
+ gem 'rdoc', '6.7.0', require: false
30
+ gem 'rubocop', '1.65.0', require: false
31
+ gem 'rubocop-rspec', '3.0.3', require: false
32
32
  gem 'simplecov', '0.22.0', require: false
33
- gem 'threads', '0.3.0', require: false
33
+ gem 'threads', '0.4.0', require: false
data/Gemfile.lock ADDED
@@ -0,0 +1,77 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ zache (0.0.0)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ ast (2.4.2)
10
+ backtrace (0.4.0)
11
+ concurrent-ruby (1.3.3)
12
+ docile (1.4.0)
13
+ json (2.7.2)
14
+ language_server-protocol (3.17.0.3)
15
+ minitest (5.24.1)
16
+ parallel (1.25.1)
17
+ parser (3.3.4.0)
18
+ ast (~> 2.4.1)
19
+ racc
20
+ psych (5.1.2)
21
+ stringio
22
+ racc (1.8.0)
23
+ rainbow (3.1.1)
24
+ rake (13.2.1)
25
+ rdoc (6.7.0)
26
+ psych (>= 4.0.0)
27
+ regexp_parser (2.9.2)
28
+ rexml (3.3.2)
29
+ strscan
30
+ rubocop (1.65.0)
31
+ json (~> 2.3)
32
+ language_server-protocol (>= 3.17.0)
33
+ parallel (~> 1.10)
34
+ parser (>= 3.3.0.2)
35
+ rainbow (>= 2.2.2, < 4.0)
36
+ regexp_parser (>= 2.4, < 3.0)
37
+ rexml (>= 3.2.5, < 4.0)
38
+ rubocop-ast (>= 1.31.1, < 2.0)
39
+ ruby-progressbar (~> 1.7)
40
+ unicode-display_width (>= 2.4.0, < 3.0)
41
+ rubocop-ast (1.31.3)
42
+ parser (>= 3.3.1.0)
43
+ rubocop-rspec (3.0.3)
44
+ rubocop (~> 1.61)
45
+ ruby-progressbar (1.13.0)
46
+ simplecov (0.22.0)
47
+ docile (~> 1.1)
48
+ simplecov-html (~> 0.11)
49
+ simplecov_json_formatter (~> 0.1)
50
+ simplecov-html (0.12.3)
51
+ simplecov_json_formatter (0.1.4)
52
+ stringio (3.1.1)
53
+ strscan (3.1.0)
54
+ threads (0.4.0)
55
+ backtrace (~> 0)
56
+ concurrent-ruby (~> 1.0)
57
+ unicode-display_width (2.5.0)
58
+
59
+ PLATFORMS
60
+ arm64-darwin-22
61
+ x86_64-darwin-20
62
+ x86_64-darwin-21
63
+ x86_64-linux
64
+
65
+ DEPENDENCIES
66
+ concurrent-ruby (= 1.3.3)
67
+ minitest (= 5.24.1)
68
+ rake (= 13.2.1)
69
+ rdoc (= 6.7.0)
70
+ rubocop (= 1.65.0)
71
+ rubocop-rspec (= 3.0.3)
72
+ simplecov (= 0.22.0)
73
+ threads (= 0.4.0)
74
+ zache!
75
+
76
+ BUNDLED WITH
77
+ 2.5.6
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2018-2023 Yegor Bugayenko
3
+ Copyright (c) 2018-2024 Yegor Bugayenko
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- <img src="/logo.svg" width="64px" height="64px"/>
1
+ # In Memory Cache for Ruby
2
2
 
3
3
  [![EO principles respected here](https://www.elegantobjects.org/badge.svg)](https://www.elegantobjects.org)
4
4
  [![DevOps By Rultor.com](http://www.rultor.com/b/yegor256/zache)](http://www.rultor.com/p/yegor256/zache)
@@ -19,7 +19,7 @@ to understand what Zache is for.
19
19
  First, install it:
20
20
 
21
21
  ```bash
22
- $ gem install zache
22
+ gem install zache
23
23
  ```
24
24
 
25
25
  Then, use it like this
@@ -46,21 +46,24 @@ while another one calls `get` again. That second thread won't wait, but will
46
46
  receive what's left in the cache. This is a very convenient mode for situations
47
47
  when you don't really care about data accuracy, but performance is an issue.
48
48
 
49
- The entire API is documented [here](https://www.rubydoc.info/github/yegor256/zache/master/Zache)
49
+ The entire API is documented
50
+ [here](https://www.rubydoc.info/github/yegor256/zache/master/Zache)
50
51
  (there are many other convenient methods).
51
52
 
52
53
  That's it.
53
54
 
54
55
  ## How to contribute
55
56
 
56
- Read [these guidelines](https://www.yegor256.com/2014/04/15/github-guidelines.html).
57
+ Read
58
+ [these guidelines](https://www.yegor256.com/2014/04/15/github-guidelines.html).
57
59
  Make sure you build is green before you contribute
58
- your pull request. You will need to have [Ruby](https://www.ruby-lang.org/en/) 2.3+ and
60
+ your pull request. You will need to have
61
+ [Ruby](https://www.ruby-lang.org/en/) 2.3+ and
59
62
  [Bundler](https://bundler.io/) installed. Then:
60
63
 
61
- ```
62
- $ bundle update
63
- $ bundle exec rake
64
+ ```bash
65
+ bundle update
66
+ bundle exec rake
64
67
  ```
65
68
 
66
69
  If it's clean and you don't see any error messages, submit your pull request.
data/Rakefile CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2018-2023 Yegor Bugayenko
3
+ # Copyright (c) 2018-2024 Yegor Bugayenko
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the 'Software'), to deal
data/lib/zache.rb CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  # (The MIT License)
4
4
  #
5
- # Copyright (c) 2018-2023 Yegor Bugayenko
5
+ # Copyright (c) 2018-2024 Yegor Bugayenko
6
6
  #
7
7
  # Permission is hereby granted, free of charge, to any person obtaining a copy
8
8
  # of this software and associated documentation files (the 'Software'), to deal
@@ -34,7 +34,7 @@
34
34
  # {README}[https://github.com/yegor256/zache/blob/master/README.md] file.
35
35
  #
36
36
  # Author:: Yegor Bugayenko (yegor256@gmail.com)
37
- # Copyright:: Copyright (c) 2018-2023 Yegor Bugayenko
37
+ # Copyright:: Copyright (c) 2018-2024 Yegor Bugayenko
38
38
  # License:: MIT
39
39
  class Zache
40
40
  # Fake implementation that doesn't cache anything, but behaves like it
@@ -155,7 +155,7 @@ class Zache
155
155
  end
156
156
  end
157
157
 
158
- # Removes the value from the hash, by the provied key. If the key is absent
158
+ # Removes the value from the cache, by the provided key. If the key is absent
159
159
  # and the block is provided, the block will be called.
160
160
  def remove(key)
161
161
  synchronized { @hash.delete(key) { yield if block_given? } }
@@ -177,7 +177,11 @@ class Zache
177
177
 
178
178
  # Remove keys that are expired.
179
179
  def clean
180
- synchronized { @hash.delete_if { |_key, value| expired?(value) } }
180
+ synchronized { @hash.delete_if { |key, _value| expired?(key) } }
181
+ end
182
+
183
+ def empty?
184
+ @hash.empty?
181
185
  end
182
186
 
183
187
  private
data/test/test__helper.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2018-2023 Yegor Bugayenko
3
+ # Copyright (c) 2018-2024 Yegor Bugayenko
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the 'Software'), to deal
data/test/test_zache.rb CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  # (The MIT License)
4
4
  #
5
- # Copyright (c) 2018-2023 Yegor Bugayenko
5
+ # Copyright (c) 2018-2024 Yegor Bugayenko
6
6
  #
7
7
  # Permission is hereby granted, free of charge, to any person obtaining a copy
8
8
  # of this software and associated documentation files (the 'Software'), to deal
@@ -32,7 +32,7 @@ Thread.report_on_exception = true
32
32
 
33
33
  # Cache test.
34
34
  # Author:: Yegor Bugayenko (yegor256@gmail.com)
35
- # Copyright:: Copyright (c) 2018-2023 Yegor Bugayenko
35
+ # Copyright:: Copyright (c) 2018-2024 Yegor Bugayenko
36
36
  # License:: MIT
37
37
  class ZacheTest < Minitest::Test
38
38
  def test_caches
@@ -134,6 +134,14 @@ class ZacheTest < Minitest::Test
134
134
  assert(cache.exists?(:bye) == false)
135
135
  end
136
136
 
137
+ def test_clean_size
138
+ cache = Zache.new
139
+ cache.get(:hey, lifetime: 0.01) { Random.rand }
140
+ sleep 0.1
141
+ cache.clean
142
+ assert(cache.empty?)
143
+ end
144
+
137
145
  def test_clean_with_sync_false
138
146
  cache = Zache.new(sync: false)
139
147
  cache.get(:hey) { Random.rand }
@@ -158,12 +166,12 @@ class ZacheTest < Minitest::Test
158
166
  def test_remove_all_with_threads
159
167
  cache = Zache.new
160
168
  Threads.new(10).assert(100) do |i|
161
- cache.get("hey#{i}".to_sym) { Random.rand }
162
- assert(cache.exists?("hey#{i}".to_sym) == true)
169
+ cache.get(:"hey#{i}") { Random.rand }
170
+ assert(cache.exists?(:"hey#{i}") == true)
163
171
  cache.remove_all
164
172
  end
165
173
  10.times do |i|
166
- assert(cache.exists?("hey#{i}".to_sym) == false)
174
+ assert(cache.exists?(:"hey#{i}") == false)
167
175
  end
168
176
  end
169
177
 
data/zache.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  # (The MIT License)
4
4
  #
5
- # Copyright (c) 2018-2023 Yegor Bugayenko
5
+ # Copyright (c) 2018-2024 Yegor Bugayenko
6
6
  #
7
7
  # Permission is hereby granted, free of charge, to any person obtaining a copy
8
8
  # of this software and associated documentation files (the 'Software'), to deal
@@ -27,7 +27,7 @@ Gem::Specification.new do |s|
27
27
  s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version=
28
28
  s.required_ruby_version = '>=2.5'
29
29
  s.name = 'zache'
30
- s.version = '0.13.1'
30
+ s.version = '0.13.2'
31
31
  s.license = 'MIT'
32
32
  s.summary = 'In-memory Cache'
33
33
  s.description = 'Zero-footprint in-memory thread-safe cache'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zache
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.1
4
+ version: 0.13.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-01 00:00:00.000000000 Z
11
+ date: 2024-07-18 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Zero-footprint in-memory thread-safe cache
14
14
  email: yegor256@gmail.com
@@ -18,15 +18,21 @@ extra_rdoc_files:
18
18
  - README.md
19
19
  files:
20
20
  - ".0pdd.yml"
21
+ - ".github/workflows/actionlint.yml"
21
22
  - ".github/workflows/codecov.yml"
23
+ - ".github/workflows/copyrights.yml"
24
+ - ".github/workflows/license.yml"
25
+ - ".github/workflows/markdown-lint.yml"
22
26
  - ".github/workflows/pdd.yml"
23
27
  - ".github/workflows/rake.yml"
24
28
  - ".github/workflows/xcop.yml"
29
+ - ".github/workflows/yamllint.yml"
25
30
  - ".gitignore"
26
31
  - ".pdd"
27
32
  - ".rubocop.yml"
28
33
  - ".rultor.yml"
29
34
  - Gemfile
35
+ - Gemfile.lock
30
36
  - LICENSE.txt
31
37
  - README.md
32
38
  - Rakefile
@@ -57,7 +63,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
57
63
  - !ruby/object:Gem::Version
58
64
  version: '0'
59
65
  requirements: []
60
- rubygems_version: 3.2.15
66
+ rubygems_version: 3.4.10
61
67
  signing_key:
62
68
  specification_version: 4
63
69
  summary: In-memory Cache