jekyll-shields_io 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/ISSUE_TEMPLATE/bug_report.md +31 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
- data/.github/workflows/code_style-skip.yml +21 -0
- data/.github/workflows/code_style.yml +18 -3
- data/.github/workflows/release.yml +55 -0
- data/.github/workflows/test-skip.yml +39 -0
- data/.github/workflows/test.yml +49 -7
- data/.gitignore +3 -0
- data/.idea/jekyll-shields-io.iml +7 -31
- data/Appraisals +35 -0
- data/README.md +42 -1
- data/jekyll-shields_io.gemspec +2 -0
- data/lib/jekyll-shields_io/domain.rb +71 -0
- data/lib/jekyll-shields_io/version.rb +1 -1
- data/lib/jekyll-shields_io.rb +16 -84
- metadata +31 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: da56ec98cade20594c39cf8a2edd0cd8bc26b8cdbf14261ae9c154c8feadcfd0
|
|
4
|
+
data.tar.gz: 83f59e9a56ac524998aa85ef35e127e10c3d745eca0e6e340f30ce536e180867
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 215f6baa8e0ba9ba5dbd3d47bc700b3b216f4ba37571ac7113c1099ff9e87061c22e3695d9c7dcb5e233dded5b529d52142a87e2861917bd50af7015d7fc60c8
|
|
7
|
+
data.tar.gz: e228ebfedeca26f818bd7adc92f35fbb56b308cd8b4eed6665b7f414de82a1444be14895357e9e2e33d1cb467171759c060e9935919cee094f1be290c4229c0e
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Bug report
|
|
3
|
+
about: Create a report to help us improve
|
|
4
|
+
title: ''
|
|
5
|
+
labels: bug
|
|
6
|
+
assignees: ''
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
<!-- Thanks for opening an issue! To make it easier for us to solve your issues, please fill out the form below! -->
|
|
11
|
+
|
|
12
|
+
## The issue
|
|
13
|
+
<!-- Brief description of your issue. -->
|
|
14
|
+
|
|
15
|
+
## Steps to reproduce
|
|
16
|
+
<!-- Steps to reproduce the behavior here. It will greatly help us! -->
|
|
17
|
+
|
|
18
|
+
## Expected behavior
|
|
19
|
+
<!-- A clear and concise description of what you expected to happen. -->
|
|
20
|
+
|
|
21
|
+
## Actual behavior
|
|
22
|
+
<!-- What happened instead? This part can be a screenshot. -->
|
|
23
|
+
|
|
24
|
+
## Screenshots
|
|
25
|
+
<!-- If applicable, add screenshots to help explain your problem. -->
|
|
26
|
+
|
|
27
|
+
## Environment
|
|
28
|
+
<!-- What are your Ruby, Jekyll versions? Do you have any other plugins? -->
|
|
29
|
+
|
|
30
|
+
## Additional context
|
|
31
|
+
<!-- Add any other context about the problem here. -->
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Feature request
|
|
3
|
+
about: Suggest an idea for this project
|
|
4
|
+
title: ''
|
|
5
|
+
labels: ''
|
|
6
|
+
assignees: ''
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## The issue
|
|
11
|
+
<!-- Please explain the problem - e.g., what part of the plugin are you frustrated with? -->
|
|
12
|
+
|
|
13
|
+
## Potential solution
|
|
14
|
+
<!-- A clear and concise description of what you want to happen. -->
|
|
15
|
+
|
|
16
|
+
## Alternative solution
|
|
17
|
+
<!-- A clear and concise description of any alternative solutions or features you've considered. -->
|
|
18
|
+
|
|
19
|
+
## Additional context
|
|
20
|
+
<!-- Add any other context or screenshots about the feature request here. -->
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
name: Check code style
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
branches: [ base ]
|
|
6
|
+
paths-ignore:
|
|
7
|
+
- 'lib/**'
|
|
8
|
+
- 'spec/**'
|
|
9
|
+
- '.github/workflows/**'
|
|
10
|
+
|
|
11
|
+
concurrency:
|
|
12
|
+
group: ${{ github.head_ref }}-code-style
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
code_style:
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
strategy:
|
|
18
|
+
matrix:
|
|
19
|
+
ruby-version: [ '3.1', '2.7' ]
|
|
20
|
+
steps:
|
|
21
|
+
- run: 'echo "No syntax check required"'
|
|
@@ -3,18 +3,33 @@ name: Check code style
|
|
|
3
3
|
on:
|
|
4
4
|
push:
|
|
5
5
|
branches: [ base ]
|
|
6
|
+
paths:
|
|
7
|
+
- 'lib/**'
|
|
8
|
+
- 'spec/**'
|
|
9
|
+
- '.github/workflows/**'
|
|
6
10
|
pull_request:
|
|
7
11
|
branches: [ base ]
|
|
12
|
+
paths:
|
|
13
|
+
- 'lib/**'
|
|
14
|
+
- 'spec/**'
|
|
15
|
+
- '.github/workflows/**'
|
|
16
|
+
|
|
17
|
+
concurrency:
|
|
18
|
+
group: ${{ github.head_ref }}-code-style
|
|
19
|
+
cancel-in-progress: true
|
|
8
20
|
|
|
9
21
|
jobs:
|
|
10
22
|
code_style:
|
|
11
23
|
runs-on: ubuntu-latest
|
|
24
|
+
strategy:
|
|
25
|
+
matrix:
|
|
26
|
+
ruby-version: [ '3.1', '2.7' ]
|
|
12
27
|
steps:
|
|
13
28
|
- uses: actions/checkout@v3
|
|
14
|
-
- name: Set up Ruby
|
|
15
|
-
uses: ruby/setup-ruby@
|
|
29
|
+
- name: Set up Ruby ${{ matrix.ruby-version }}
|
|
30
|
+
uses: ruby/setup-ruby@d3c9825d67b0d8720afdfdde5af56c79fdb38d16
|
|
16
31
|
with:
|
|
17
|
-
ruby-version:
|
|
32
|
+
ruby-version: ${{ matrix.ruby-version }}
|
|
18
33
|
bundler-cache: true
|
|
19
34
|
- name: Install dependencies
|
|
20
35
|
run: bundle install
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# RubyGems publish GitHub Actions workflow file by @ybiquitous.
|
|
2
|
+
# https://ybiquitous.me/blog/2022/release-gem-using-github-actions
|
|
3
|
+
# License for this file: CC BY-SA 4.0 https://creativecommons.org/licenses/by-sa/4.0/
|
|
4
|
+
|
|
5
|
+
name: Release
|
|
6
|
+
|
|
7
|
+
on:
|
|
8
|
+
workflow_dispatch:
|
|
9
|
+
inputs:
|
|
10
|
+
otp:
|
|
11
|
+
description: "One-time password for RubyGems.org"
|
|
12
|
+
required: true
|
|
13
|
+
|
|
14
|
+
concurrency:
|
|
15
|
+
group: ${{ github.workflow }}
|
|
16
|
+
cancel-in-progress: true
|
|
17
|
+
|
|
18
|
+
jobs:
|
|
19
|
+
release:
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
permissions:
|
|
22
|
+
contents: write
|
|
23
|
+
steps:
|
|
24
|
+
- name: Checkout
|
|
25
|
+
uses: actions/checkout@v3
|
|
26
|
+
|
|
27
|
+
- name: Set up Ruby
|
|
28
|
+
uses: ruby/setup-ruby@v1
|
|
29
|
+
with:
|
|
30
|
+
ruby-version: "3.1"
|
|
31
|
+
bundler-cache: true
|
|
32
|
+
|
|
33
|
+
- name: Configure Git
|
|
34
|
+
run: |
|
|
35
|
+
git config --global user.name "${GITHUB_ACTOR}"
|
|
36
|
+
git config --global user.email "${GITHUB_ACTOR}@users.noreply.github.com"
|
|
37
|
+
|
|
38
|
+
- name: Publish to gem registry
|
|
39
|
+
run: bundle exec rake release
|
|
40
|
+
env:
|
|
41
|
+
GEM_HOST_API_KEY: ${{ secrets.API_KEY }}
|
|
42
|
+
GEM_HOST_OTP_CODE: ${{ inputs.otp }}
|
|
43
|
+
|
|
44
|
+
- name: Push tag
|
|
45
|
+
run: git push --follow-tags
|
|
46
|
+
|
|
47
|
+
- name: Get tag
|
|
48
|
+
run: echo "::set-output name=name::$(git describe --abbrev=0)"
|
|
49
|
+
id: tag
|
|
50
|
+
|
|
51
|
+
- name: Create GitHub release
|
|
52
|
+
run: gh release create "${TAG_NAME}" --draft
|
|
53
|
+
env:
|
|
54
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
55
|
+
TAG_NAME: ${{ steps.tag.outputs.name }}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
name: Check functionality
|
|
2
|
+
on:
|
|
3
|
+
pull_request:
|
|
4
|
+
paths-ignore:
|
|
5
|
+
- 'lib/**'
|
|
6
|
+
- 'spec/**'
|
|
7
|
+
- '.github/workflows/**'
|
|
8
|
+
|
|
9
|
+
concurrency:
|
|
10
|
+
group: ${{ github.head_ref }}-code-style
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
test:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
strategy:
|
|
16
|
+
matrix:
|
|
17
|
+
ruby_version: [ "3.1", "2.7" ]
|
|
18
|
+
appraisal:
|
|
19
|
+
- jekyll-35
|
|
20
|
+
- jekyll-36
|
|
21
|
+
- jekyll-37
|
|
22
|
+
- jekyll-38
|
|
23
|
+
- jekyll-39
|
|
24
|
+
- jekyll-40
|
|
25
|
+
- jekyll-41
|
|
26
|
+
- jekyll-42
|
|
27
|
+
- jekyll-43
|
|
28
|
+
exclude:
|
|
29
|
+
# exclude incompatible dependency combos
|
|
30
|
+
- ruby_version: "3.1"
|
|
31
|
+
appraisal: jekyll-35
|
|
32
|
+
- ruby_version: "3.1"
|
|
33
|
+
appraisal: jekyll-36
|
|
34
|
+
- ruby_version: "3.1"
|
|
35
|
+
appraisal: jekyll-37
|
|
36
|
+
- ruby_version: "3.1"
|
|
37
|
+
appraisal: jekyll-38
|
|
38
|
+
steps:
|
|
39
|
+
- run: 'echo "No functionality check required"'
|
data/.github/workflows/test.yml
CHANGED
|
@@ -3,21 +3,63 @@ name: Check functionality
|
|
|
3
3
|
on:
|
|
4
4
|
push:
|
|
5
5
|
branches: [ base ]
|
|
6
|
+
paths:
|
|
7
|
+
- 'lib/**'
|
|
8
|
+
- 'spec/**'
|
|
9
|
+
- '.github/workflows/**'
|
|
6
10
|
pull_request:
|
|
7
11
|
branches: [ base ]
|
|
12
|
+
paths:
|
|
13
|
+
- 'lib/**'
|
|
14
|
+
- 'spec/**'
|
|
15
|
+
- '.github/workflows/**'
|
|
16
|
+
|
|
17
|
+
concurrency:
|
|
18
|
+
group: ${{ github.head_ref }}-test
|
|
19
|
+
cancel-in-progress: true
|
|
8
20
|
|
|
9
21
|
jobs:
|
|
10
22
|
test:
|
|
11
23
|
runs-on: ubuntu-latest
|
|
24
|
+
strategy:
|
|
25
|
+
fail-fast: false
|
|
26
|
+
matrix:
|
|
27
|
+
ruby_version: [ "3.1", "2.7" ]
|
|
28
|
+
appraisal:
|
|
29
|
+
- jekyll-35
|
|
30
|
+
- jekyll-36
|
|
31
|
+
- jekyll-37
|
|
32
|
+
- jekyll-38
|
|
33
|
+
- jekyll-39
|
|
34
|
+
- jekyll-40
|
|
35
|
+
- jekyll-41
|
|
36
|
+
- jekyll-42
|
|
37
|
+
- jekyll-43
|
|
38
|
+
exclude:
|
|
39
|
+
# exclude incompatible dependency combos
|
|
40
|
+
- ruby_version: "3.1"
|
|
41
|
+
appraisal: jekyll-35
|
|
42
|
+
- ruby_version: "3.1"
|
|
43
|
+
appraisal: jekyll-36
|
|
44
|
+
- ruby_version: "3.1"
|
|
45
|
+
appraisal: jekyll-37
|
|
46
|
+
- ruby_version: "3.1"
|
|
47
|
+
appraisal: jekyll-38
|
|
12
48
|
steps:
|
|
13
49
|
- uses: actions/checkout@v3
|
|
14
|
-
- name: Set up Ruby
|
|
15
|
-
uses: ruby/setup-ruby@
|
|
50
|
+
- name: Set up Ruby ${{ matrix.ruby_version }}
|
|
51
|
+
uses: ruby/setup-ruby@d3c9825d67b0d8720afdfdde5af56c79fdb38d16
|
|
16
52
|
with:
|
|
17
|
-
ruby-version:
|
|
18
|
-
|
|
19
|
-
|
|
53
|
+
ruby-version: ${{ matrix.ruby_version }}
|
|
54
|
+
- if: matrix.ruby_version == '2.7'
|
|
55
|
+
name: Update RubyGems version
|
|
56
|
+
# This is the version that NEITHER appraisal or jekyll-sass-converter
|
|
57
|
+
# blows up from incompatible dependencies
|
|
58
|
+
run: gem update --system 3.3.22
|
|
59
|
+
- name: Install base dependencies
|
|
20
60
|
run: bundle install
|
|
61
|
+
- name: Install dependencies for appraisal
|
|
62
|
+
# This creates appraisal-specific Gemfiles
|
|
63
|
+
run: bundle exec appraisal install
|
|
21
64
|
- name: Run tests
|
|
22
|
-
run: bundle exec rake spec
|
|
23
|
-
|
|
65
|
+
run: bundle exec appraisal ${{ matrix.appraisal }} rake spec
|
data/.gitignore
CHANGED
|
@@ -10,6 +10,9 @@ Gemfile.lock
|
|
|
10
10
|
# Also if somebody wants to install dependencies locally, we need to prevent them being checked in
|
|
11
11
|
vendor/
|
|
12
12
|
|
|
13
|
+
# Appraisal make this directory which must be ignored
|
|
14
|
+
gemfiles/
|
|
15
|
+
|
|
13
16
|
# Created by https://www.toptal.com/developers/gitignore/api/ruby,rubymine,macos
|
|
14
17
|
# Edit at https://www.toptal.com/developers/gitignore?templates=ruby,rubymine,macos
|
|
15
18
|
|
data/.idea/jekyll-shields-io.iml
CHANGED
|
@@ -10,10 +10,14 @@
|
|
|
10
10
|
<sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
|
|
11
11
|
<excludeFolder url="file://$MODULE_DIR$/.jekyll-cache/Jekyll" />
|
|
12
12
|
<excludeFolder url="file://$MODULE_DIR$/.bundle" />
|
|
13
|
+
<excludeFolder url="file://$MODULE_DIR$/gemfiles/.bundle" />
|
|
14
|
+
<excludeFolder url="file://$MODULE_DIR$/_cache" />
|
|
15
|
+
<excludeFolder url="file://$MODULE_DIR$/gemfiles" />
|
|
13
16
|
</content>
|
|
14
17
|
<orderEntry type="jdk" jdkName="RVM: ruby-2.7.6" jdkType="RUBY_SDK" />
|
|
15
18
|
<orderEntry type="sourceFolder" forTests="false" />
|
|
16
19
|
<orderEntry type="library" scope="PROVIDED" name="addressable (v2.8.1, RVM: ruby-2.7.6) [gem]" level="application" />
|
|
20
|
+
<orderEntry type="library" scope="PROVIDED" name="appraisal (v2.2.0, RVM: ruby-2.7.6) [gem]" level="application" />
|
|
17
21
|
<orderEntry type="library" scope="PROVIDED" name="ast (v2.4.2, RVM: ruby-2.7.6) [gem]" level="application" />
|
|
18
22
|
<orderEntry type="library" scope="PROVIDED" name="bundler (v2.2.2, RVM: ruby-2.7.6) [gem]" level="application" />
|
|
19
23
|
<orderEntry type="library" scope="PROVIDED" name="colorator (v1.1.0, RVM: ruby-2.7.6) [gem]" level="application" />
|
|
@@ -23,6 +27,7 @@
|
|
|
23
27
|
<orderEntry type="library" scope="PROVIDED" name="eventmachine (v1.2.7, RVM: ruby-2.7.6) [gem]" level="application" />
|
|
24
28
|
<orderEntry type="library" scope="PROVIDED" name="ffi (v1.15.5, RVM: ruby-2.7.6) [gem]" level="application" />
|
|
25
29
|
<orderEntry type="library" scope="PROVIDED" name="forwardable-extended (v2.6.0, RVM: ruby-2.7.6) [gem]" level="application" />
|
|
30
|
+
<orderEntry type="library" scope="PROVIDED" name="gemika (v0.8.1, RVM: ruby-2.7.6) [gem]" level="application" />
|
|
26
31
|
<orderEntry type="library" scope="PROVIDED" name="google-protobuf (v3.22.0, RVM: ruby-2.7.6) [gem]" level="application" />
|
|
27
32
|
<orderEntry type="library" scope="PROVIDED" name="http_parser.rb (v0.8.0, RVM: ruby-2.7.6) [gem]" level="application" />
|
|
28
33
|
<orderEntry type="library" scope="PROVIDED" name="httparty (v0.21.0, RVM: ruby-2.7.6) [gem]" level="application" />
|
|
@@ -65,42 +70,13 @@
|
|
|
65
70
|
<orderEntry type="library" scope="PROVIDED" name="sass-embedded (v1.58.2, RVM: ruby-2.7.6) [gem]" level="application" />
|
|
66
71
|
<orderEntry type="library" scope="PROVIDED" name="standard (v1.24.3, RVM: ruby-2.7.6) [gem]" level="application" />
|
|
67
72
|
<orderEntry type="library" scope="PROVIDED" name="terminal-table (v3.0.2, RVM: ruby-2.7.6) [gem]" level="application" />
|
|
73
|
+
<orderEntry type="library" scope="PROVIDED" name="thor (v1.2.1, RVM: ruby-2.7.6) [gem]" level="application" />
|
|
68
74
|
<orderEntry type="library" scope="PROVIDED" name="unicode-display_width (v2.4.2, RVM: ruby-2.7.6) [gem]" level="application" />
|
|
69
75
|
<orderEntry type="library" scope="PROVIDED" name="webrick (v1.8.1, RVM: ruby-2.7.6) [gem]" level="application" />
|
|
70
76
|
</component>
|
|
71
77
|
<component name="RakeTasksCache">
|
|
72
78
|
<option name="myRootTask">
|
|
73
|
-
<RakeTaskImpl id="rake"
|
|
74
|
-
<subtasks>
|
|
75
|
-
<RakeTaskImpl description="Build jekyll-shields_io-0.1.0.gem into the pkg directory" fullCommand="build" id="build" />
|
|
76
|
-
<RakeTaskImpl description="Remove any temporary products" fullCommand="clean" id="clean" />
|
|
77
|
-
<RakeTaskImpl description="Remove any generated files" fullCommand="clobber" id="clobber" />
|
|
78
|
-
<RakeTaskImpl description="Build and install jekyll-shields_io-0.1.0.gem into system gems" fullCommand="install" id="install" />
|
|
79
|
-
<RakeTaskImpl id="install">
|
|
80
|
-
<subtasks>
|
|
81
|
-
<RakeTaskImpl description="Build and install jekyll-shields_io-0.1.0.gem into system gems without network access" fullCommand="install:local" id="local" />
|
|
82
|
-
</subtasks>
|
|
83
|
-
</RakeTaskImpl>
|
|
84
|
-
<RakeTaskImpl description="Create tag v0.1.0 and build and push jekyll-shields_io-0.1.0.gem to rubygems.org" fullCommand="release[remote]" id="release[remote]" />
|
|
85
|
-
<RakeTaskImpl description="Run RSpec code examples" fullCommand="spec" id="spec" />
|
|
86
|
-
<RakeTaskImpl description="Lint with the Standard Ruby style guide" fullCommand="standard" id="standard" />
|
|
87
|
-
<RakeTaskImpl id="standard">
|
|
88
|
-
<subtasks>
|
|
89
|
-
<RakeTaskImpl description="Lint and automatically fix with the Standard Ruby style guide" fullCommand="standard:fix" id="fix" />
|
|
90
|
-
</subtasks>
|
|
91
|
-
</RakeTaskImpl>
|
|
92
|
-
<RakeTaskImpl description="" fullCommand="default" id="default" />
|
|
93
|
-
<RakeTaskImpl description="" fullCommand="release" id="release" />
|
|
94
|
-
<RakeTaskImpl id="release">
|
|
95
|
-
<subtasks>
|
|
96
|
-
<RakeTaskImpl description="" fullCommand="release:guard_clean" id="guard_clean" />
|
|
97
|
-
<RakeTaskImpl description="" fullCommand="release:rubygem_push" id="rubygem_push" />
|
|
98
|
-
<RakeTaskImpl description="" fullCommand="release:source_control_push" id="source_control_push" />
|
|
99
|
-
</subtasks>
|
|
100
|
-
</RakeTaskImpl>
|
|
101
|
-
<RakeTaskImpl description="" fullCommand="test" id="test" />
|
|
102
|
-
</subtasks>
|
|
103
|
-
</RakeTaskImpl>
|
|
79
|
+
<RakeTaskImpl id="rake" />
|
|
104
80
|
</option>
|
|
105
81
|
</component>
|
|
106
82
|
</module>
|
data/Appraisals
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
appraise "jekyll-35" do
|
|
2
|
+
gem "jekyll", "~> 3.5.0"
|
|
3
|
+
end
|
|
4
|
+
|
|
5
|
+
appraise "jekyll-36" do
|
|
6
|
+
gem "jekyll", "~> 3.6.0"
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
appraise "jekyll-37" do
|
|
10
|
+
gem "jekyll", "~> 3.7.0"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
appraise "jekyll-38" do
|
|
14
|
+
gem "jekyll", "~> 3.8.0"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
appraise "jekyll-39" do
|
|
18
|
+
gem "jekyll", "~> 3.9.0"
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
appraise "jekyll-40" do
|
|
22
|
+
gem "jekyll", "~> 4.0.0"
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
appraise "jekyll-41" do
|
|
26
|
+
gem "jekyll", "~> 4.1.0"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
appraise "jekyll-42" do
|
|
30
|
+
gem "jekyll", "~> 4.2.0"
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
appraise "jekyll-43" do
|
|
34
|
+
gem "jekyll", "~> 4.3.0"
|
|
35
|
+
end
|
data/README.md
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
> **Adding shields (badges) to your Jekyll blog, made more readable**
|
|
4
4
|
|
|
5
|
+

|
|
6
|
+

|
|
7
|
+

|
|
8
|
+
|
|
5
9
|
This is a Jekyll plugin to generate a [Shields.io](https://shields.io) badge in your Jekyll blog
|
|
6
10
|
with a more readable way.
|
|
7
11
|
|
|
@@ -96,7 +100,7 @@ For markdown files, this syntax is required because the other one causes the shi
|
|
|
96
100
|
|
|
97
101
|
## Features
|
|
98
102
|
|
|
99
|
-
###
|
|
103
|
+
### Debuggable shield parameters
|
|
100
104
|
|
|
101
105
|
You can specify the parameters passed to Shields.io using JSON,
|
|
102
106
|
which prevents accidental and hard-to-spot mistakes.
|
|
@@ -163,6 +167,43 @@ If you happen to see this behavior, please report it or send me a PR so that we
|
|
|
163
167
|
|
|
164
168
|
Bug reports & pull requests are welcome on [GitHub repo](https://github.com/clpsplug/jekyll-shields_io).
|
|
165
169
|
|
|
170
|
+
### Development setup
|
|
171
|
+
|
|
172
|
+
To set up the plugin development env only:
|
|
173
|
+
```sh
|
|
174
|
+
git clone https://github.com/Clpsplug/jekyll-shields_io.git
|
|
175
|
+
# OR
|
|
176
|
+
git clone git@github.com:Clpsplug/jekyll-shields_io.git
|
|
177
|
+
# OR
|
|
178
|
+
gh repo clone Clpsplug/jekyll-shields_io
|
|
179
|
+
|
|
180
|
+
# Get dependencies
|
|
181
|
+
bundle install
|
|
182
|
+
# Run checks that are run on Github Actions
|
|
183
|
+
rake
|
|
184
|
+
# Run test for latest Jekyll available in your environment
|
|
185
|
+
rake spec
|
|
186
|
+
# Check code style using "standard" gem
|
|
187
|
+
rake standard
|
|
188
|
+
|
|
189
|
+
# To test every supported Jekyll & Ruby combination:
|
|
190
|
+
bundle exec appraisal install
|
|
191
|
+
bundle exec appraisal rake spec
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
When contributing, please at least run `rake` and check that
|
|
195
|
+
no issues are raised from "standard" gem and that specs passes!
|
|
196
|
+
(If you're having trouble passing the specs, don't hesitate note so in the PR.)
|
|
197
|
+
|
|
198
|
+
To test the plugin with real Jekyll environment,
|
|
199
|
+
follow the [Installation](#installation) guide except for adding a line to Gemfile.
|
|
200
|
+
You will need to add this line to your Gemfile instead:
|
|
201
|
+
```ruby
|
|
202
|
+
gem "jekyll-shields_io", path: "<Wherever you have this repository, can be relative path>"
|
|
203
|
+
# for example
|
|
204
|
+
gem "jekyll-shields_io", path: "../jekyll-shields_io"
|
|
205
|
+
```
|
|
206
|
+
|
|
166
207
|
## License
|
|
167
208
|
|
|
168
209
|
[MIT License](https://opensource.org/licenses/MIT)
|
data/jekyll-shields_io.gemspec
CHANGED
|
@@ -20,7 +20,9 @@ Gem::Specification.new do |s|
|
|
|
20
20
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
|
21
21
|
end
|
|
22
22
|
s.require_paths = ["lib"]
|
|
23
|
+
s.required_ruby_version = ">= 2.7", "< 4"
|
|
23
24
|
s.add_dependency "jekyll", ">= 3.5", "< 5.0"
|
|
24
25
|
s.add_dependency "nokogiri", "~> 1.4", "< 2.0"
|
|
25
26
|
s.add_dependency "httparty", "~> 0.17", "< 1.0"
|
|
27
|
+
s.add_development_dependency "appraisal"
|
|
26
28
|
end
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
module Jekyll
|
|
2
|
+
module ShieldsIO
|
|
3
|
+
# Object to represent the Shields.IO shield (plus some extra stuff)
|
|
4
|
+
class Shield
|
|
5
|
+
# To be used for img tag.
|
|
6
|
+
# @return [Integer]
|
|
7
|
+
attr_reader :width
|
|
8
|
+
# To be used for img tag.
|
|
9
|
+
# @return [Integer]
|
|
10
|
+
attr_reader :height
|
|
11
|
+
# If not nil, make the shield image a link.
|
|
12
|
+
# @return [String]
|
|
13
|
+
attr_reader :href
|
|
14
|
+
# Alternative string for this shield, should the browser fails to load the image
|
|
15
|
+
# @return [String]
|
|
16
|
+
attr_reader :alt
|
|
17
|
+
# HTML class for this shield image.
|
|
18
|
+
# @return [String]
|
|
19
|
+
attr_reader :cls
|
|
20
|
+
# Path to the cache file. *Not* to be used for HTML - use :basename instead.
|
|
21
|
+
# @return [String]
|
|
22
|
+
attr_reader :path
|
|
23
|
+
# Basename of the shield.
|
|
24
|
+
# Specifying "assets/img/shields/" + :basename to src attribute should display this shield.
|
|
25
|
+
# @return [String]
|
|
26
|
+
attr_reader :basename
|
|
27
|
+
|
|
28
|
+
def initialize(width, height, path, href, alt, cls)
|
|
29
|
+
@width = width
|
|
30
|
+
@height = height
|
|
31
|
+
@path = path
|
|
32
|
+
@basename = File.basename path
|
|
33
|
+
@href = href
|
|
34
|
+
@alt = alt
|
|
35
|
+
@cls = cls
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Jekyll representation for the cached shield SVG files.
|
|
40
|
+
class StaticShieldFile < Jekyll::StaticFile
|
|
41
|
+
attr_reader :name
|
|
42
|
+
|
|
43
|
+
# Initialize a new CachedShield.
|
|
44
|
+
# site - The Site.
|
|
45
|
+
# base - The String path to the <source>.
|
|
46
|
+
# dir - The String path between <source> and the file.
|
|
47
|
+
# name - The String filename of the file.
|
|
48
|
+
# dest - The String destination path override.
|
|
49
|
+
def initialize(site, base, dir, name, dest)
|
|
50
|
+
super site, base, dir, name
|
|
51
|
+
@name = name
|
|
52
|
+
@dest = dest
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def destination(dest)
|
|
56
|
+
File.join dest, @dest, @name
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# Thrown when the plugin encounters malformed input.
|
|
61
|
+
class ShieldConfigMalformedError < StandardError
|
|
62
|
+
def initialize(msg = "Malformed configuration was passed to the plugin")
|
|
63
|
+
super
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# Thrown when the plugin fails to fetch the shield image.
|
|
68
|
+
class ShieldFetchError < StandardError
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
data/lib/jekyll-shields_io.rb
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
require "digest"
|
|
2
2
|
require "fileutils"
|
|
3
|
+
require "httparty"
|
|
4
|
+
require "jekyll-shields_io/domain"
|
|
3
5
|
require "json"
|
|
4
6
|
require "nokogiri"
|
|
5
|
-
require "httparty"
|
|
6
7
|
|
|
7
8
|
module Jekyll
|
|
8
9
|
module ShieldsIO
|
|
@@ -61,9 +62,6 @@ module Jekyll
|
|
|
61
62
|
# @param [Shield] shield Shield to queue for this Jekyll site's Jekyll::StaticFile.
|
|
62
63
|
# @raise [ShieldFileError] when specified cache file does not exist
|
|
63
64
|
def queue_shield(shield)
|
|
64
|
-
unless File.exist? shield.path
|
|
65
|
-
raise ShieldFileError.new
|
|
66
|
-
end
|
|
67
65
|
if @site.static_files.select { |f|
|
|
68
66
|
f.is_a? StaticShieldFile
|
|
69
67
|
}.select { |s| s.name == shield.basename }.any?
|
|
@@ -107,85 +105,19 @@ module Jekyll
|
|
|
107
105
|
# Same as warn but will print an identifying tag ([Shields.IO Plugin]) and
|
|
108
106
|
# will not print unless verbose mode is on, or the message is marked important
|
|
109
107
|
# @param [String] mes
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
unless @site.config["verbose"] != true || important
|
|
108
|
+
def log(mes)
|
|
109
|
+
if @site.config["verbose"] == true
|
|
113
110
|
warn "[Shields.IO Plugin] #{mes}"
|
|
114
111
|
end
|
|
115
112
|
end
|
|
116
113
|
end
|
|
117
114
|
|
|
118
|
-
# Object to represent the Shields.IO shield (plus some extra stuff)
|
|
119
|
-
class Shield
|
|
120
|
-
# To be used for img tag.
|
|
121
|
-
# @return [Integer]
|
|
122
|
-
attr_reader :width
|
|
123
|
-
# To be used for img tag.
|
|
124
|
-
# @return [Integer]
|
|
125
|
-
attr_reader :height
|
|
126
|
-
# If not nil, make the shield image a link.
|
|
127
|
-
# @return [String]
|
|
128
|
-
attr_reader :href
|
|
129
|
-
# Alternative string for this shield, should the browser fails to load the image
|
|
130
|
-
# @return [String]
|
|
131
|
-
attr_reader :alt
|
|
132
|
-
# HTML class for this shield image.
|
|
133
|
-
# @return [String]
|
|
134
|
-
attr_reader :cls
|
|
135
|
-
# Path to the cache file. *Not* to be used for HTML - use :basename instead.
|
|
136
|
-
# @return [String]
|
|
137
|
-
attr_reader :path
|
|
138
|
-
# Basename of the shield.
|
|
139
|
-
# Specifying "assets/img/shields/" + :basename to src attribute should display this shield.
|
|
140
|
-
# @return [String]
|
|
141
|
-
attr_reader :basename
|
|
142
|
-
|
|
143
|
-
def initialize(width, height, path, href, alt, cls)
|
|
144
|
-
@width = width
|
|
145
|
-
@height = height
|
|
146
|
-
@path = path
|
|
147
|
-
@basename = File.basename path
|
|
148
|
-
@href = href
|
|
149
|
-
@alt = alt
|
|
150
|
-
@cls = cls
|
|
151
|
-
end
|
|
152
|
-
end
|
|
153
|
-
|
|
154
|
-
# Jekyll representation for the cached shield SVG files.
|
|
155
|
-
class StaticShieldFile < Jekyll::StaticFile
|
|
156
|
-
attr_reader :name
|
|
157
|
-
|
|
158
|
-
# Initialize a new CachedShield.
|
|
159
|
-
# site - The Site.
|
|
160
|
-
# base - The String path to the <source>.
|
|
161
|
-
# dir - The String path between <source> and the file.
|
|
162
|
-
# name - The String filename of the file.
|
|
163
|
-
# dest - The String destination path override.
|
|
164
|
-
def initialize(site, base, dir, name, dest)
|
|
165
|
-
super site, base, dir, name
|
|
166
|
-
@name = name
|
|
167
|
-
@dest = dest
|
|
168
|
-
end
|
|
169
|
-
|
|
170
|
-
def destination(dest)
|
|
171
|
-
File.join dest, @dest, @name
|
|
172
|
-
end
|
|
173
|
-
end
|
|
174
|
-
|
|
175
|
-
# Thrown when the plugin fails to fetch the shield image.
|
|
176
|
-
class ShieldFetchError < StandardError
|
|
177
|
-
end
|
|
178
|
-
|
|
179
|
-
# Thrown when the plugin fails to access the cached shield file.
|
|
180
|
-
# Realistically, if this happens something must be very wrong with the disk the cache is written to
|
|
181
|
-
# because the plugin would've crashed with IO errors well before this is thrown.
|
|
182
|
-
class ShieldFileError < StandardError
|
|
183
|
-
end
|
|
184
|
-
|
|
185
115
|
# Jekyll Liquid Tag for Shields.io
|
|
186
|
-
#
|
|
187
116
|
# Usage: {% shields_io <query param + special param as json> %}
|
|
188
117
|
class ShieldsIOTag < Liquid::Tag
|
|
118
|
+
# @param [String] tag_name == shields_io
|
|
119
|
+
# @param [String] input User input
|
|
120
|
+
# @param [Liquid::Context] parse_context
|
|
189
121
|
def initialize(tag_name, input, parse_context)
|
|
190
122
|
super
|
|
191
123
|
# @type [Hash]
|
|
@@ -193,16 +125,19 @@ module Jekyll
|
|
|
193
125
|
# This only appears if there is an error trying to fetch the shield.
|
|
194
126
|
# @type [String]
|
|
195
127
|
@last_ditch_alt = "<p>#{@payload[:label]} #{@payload[:message]}</p>"
|
|
128
|
+
rescue JSON::ParserError => pe
|
|
129
|
+
warn "[Shields.IO Plugin] Shield configuration is malformed (#{pe.message})"
|
|
130
|
+
raise ShieldConfigMalformedError
|
|
196
131
|
end
|
|
197
132
|
|
|
198
133
|
def render(context)
|
|
199
|
-
|
|
200
|
-
shield =
|
|
201
|
-
|
|
134
|
+
@factory = ShieldFactory.new context
|
|
135
|
+
shield = @factory.get_shield @payload
|
|
136
|
+
@factory.queue_shield shield
|
|
202
137
|
|
|
203
|
-
shield_tag =
|
|
204
|
-
|
|
205
|
-
HTML
|
|
138
|
+
shield_tag = <<~HTML
|
|
139
|
+
<img src="/#{@factory.target_dir}/#{shield.basename}" width="#{shield.width}" height="#{shield.height}"
|
|
140
|
+
HTML
|
|
206
141
|
shield_tag += if !shield.alt.nil?
|
|
207
142
|
" alt=\"#{shield.alt}\" class=\"#{shield.cls}\"/>"
|
|
208
143
|
else
|
|
@@ -220,9 +155,6 @@ HTML
|
|
|
220
155
|
rescue ShieldFetchError
|
|
221
156
|
warn "[Shields.IO Plugin] Failed to fetch shields! (input: #{JSON.dump @payload})"
|
|
222
157
|
@last_ditch_alt
|
|
223
|
-
rescue ShieldFileError
|
|
224
|
-
warn "[Shields.IO Plugin] Failed to access cached shields!"
|
|
225
|
-
@last_ditch_alt
|
|
226
158
|
end
|
|
227
159
|
end
|
|
228
160
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: jekyll-shields_io
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- C. Plug
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2023-02
|
|
11
|
+
date: 2023-03-02 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: jekyll
|
|
@@ -70,6 +70,20 @@ dependencies:
|
|
|
70
70
|
- - "<"
|
|
71
71
|
- !ruby/object:Gem::Version
|
|
72
72
|
version: '1.0'
|
|
73
|
+
- !ruby/object:Gem::Dependency
|
|
74
|
+
name: appraisal
|
|
75
|
+
requirement: !ruby/object:Gem::Requirement
|
|
76
|
+
requirements:
|
|
77
|
+
- - ">="
|
|
78
|
+
- !ruby/object:Gem::Version
|
|
79
|
+
version: '0'
|
|
80
|
+
type: :development
|
|
81
|
+
prerelease: false
|
|
82
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
83
|
+
requirements:
|
|
84
|
+
- - ">="
|
|
85
|
+
- !ruby/object:Gem::Version
|
|
86
|
+
version: '0'
|
|
73
87
|
description: |
|
|
74
88
|
This Jekyll plugin allows you to add a shields.io badge in your blog
|
|
75
89
|
without forming very long URLs - instead, the properties are set via JSON.
|
|
@@ -79,7 +93,12 @@ extensions: []
|
|
|
79
93
|
extra_rdoc_files: []
|
|
80
94
|
files:
|
|
81
95
|
- ".editorconfig"
|
|
96
|
+
- ".github/ISSUE_TEMPLATE/bug_report.md"
|
|
97
|
+
- ".github/ISSUE_TEMPLATE/feature_request.md"
|
|
98
|
+
- ".github/workflows/code_style-skip.yml"
|
|
82
99
|
- ".github/workflows/code_style.yml"
|
|
100
|
+
- ".github/workflows/release.yml"
|
|
101
|
+
- ".github/workflows/test-skip.yml"
|
|
83
102
|
- ".github/workflows/test.yml"
|
|
84
103
|
- ".gitignore"
|
|
85
104
|
- ".idea/.gitignore"
|
|
@@ -89,18 +108,20 @@ files:
|
|
|
89
108
|
- ".idea/modules.xml"
|
|
90
109
|
- ".idea/vcs.xml"
|
|
91
110
|
- ".rspec"
|
|
111
|
+
- Appraisals
|
|
92
112
|
- Gemfile
|
|
93
113
|
- LICENSE.txt
|
|
94
114
|
- README.md
|
|
95
115
|
- Rakefile
|
|
96
116
|
- jekyll-shields_io.gemspec
|
|
97
117
|
- lib/jekyll-shields_io.rb
|
|
118
|
+
- lib/jekyll-shields_io/domain.rb
|
|
98
119
|
- lib/jekyll-shields_io/version.rb
|
|
99
120
|
homepage: https://github.com/clpsplug/jekyll-shields_io
|
|
100
121
|
licenses:
|
|
101
122
|
- MIT
|
|
102
123
|
metadata: {}
|
|
103
|
-
post_install_message:
|
|
124
|
+
post_install_message:
|
|
104
125
|
rdoc_options: []
|
|
105
126
|
require_paths:
|
|
106
127
|
- lib
|
|
@@ -108,15 +129,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
108
129
|
requirements:
|
|
109
130
|
- - ">="
|
|
110
131
|
- !ruby/object:Gem::Version
|
|
111
|
-
version: '
|
|
132
|
+
version: '2.7'
|
|
133
|
+
- - "<"
|
|
134
|
+
- !ruby/object:Gem::Version
|
|
135
|
+
version: '4'
|
|
112
136
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
113
137
|
requirements:
|
|
114
138
|
- - ">="
|
|
115
139
|
- !ruby/object:Gem::Version
|
|
116
140
|
version: '0'
|
|
117
141
|
requirements: []
|
|
118
|
-
rubygems_version: 3.
|
|
119
|
-
signing_key:
|
|
142
|
+
rubygems_version: 3.3.26
|
|
143
|
+
signing_key:
|
|
120
144
|
specification_version: 4
|
|
121
145
|
summary: Adds ability to put shields.io badges in your Jekyll blog
|
|
122
146
|
test_files: []
|