oxidized 0.29.1 → 0.37.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.
Files changed (236) hide show
  1. checksums.yaml +4 -4
  2. data/.coderabbit.yaml +21 -0
  3. data/.github/ISSUE_TEMPLATE/bug_report.md +45 -0
  4. data/.github/ISSUE_TEMPLATE/feature_request.md +22 -0
  5. data/.github/ISSUE_TEMPLATE/support-request.md +39 -0
  6. data/.github/workflows/codeql.yml +4 -4
  7. data/.github/workflows/publishdocker.yml +108 -13
  8. data/.github/workflows/ruby.yml +3 -12
  9. data/.github/workflows/stale.yml +6 -1
  10. data/.gitignore +2 -0
  11. data/.rubocop.yml +69 -13
  12. data/.rubocop_todo.yml +13 -143
  13. data/CHANGELOG.md +431 -4
  14. data/CONTRIBUTING.md +189 -0
  15. data/Dockerfile +89 -34
  16. data/README.md +59 -188
  17. data/Rakefile +58 -12
  18. data/bin/oxidized +2 -5
  19. data/docs/Configuration.md +382 -149
  20. data/docs/Creating-Models.md +262 -10
  21. data/docs/DeviceSimulation.md +196 -0
  22. data/docs/Docker.md +246 -0
  23. data/docs/Hooks.md +146 -51
  24. data/docs/Inputs.md +237 -0
  25. data/docs/Issues.md +123 -0
  26. data/docs/Model-Notes/APC.md +72 -0
  27. data/docs/Model-Notes/Cumulus.md +5 -0
  28. data/docs/Model-Notes/EatonNetwork.md +18 -0
  29. data/docs/Model-Notes/ExaLink.md +43 -0
  30. data/docs/Model-Notes/FSOS.md +17 -0
  31. data/docs/Model-Notes/Fortinet.md +75 -0
  32. data/docs/Model-Notes/GrandstreamHT8xx.md +8 -0
  33. data/docs/Model-Notes/HPEAruba.md +32 -0
  34. data/docs/Model-Notes/IvantiConnectSecure.md +59 -0
  35. data/docs/Model-Notes/OS6.md +10 -0
  36. data/docs/Model-Notes/README.md +1 -20
  37. data/docs/Model-Notes/RouterOS.md +28 -0
  38. data/docs/Model-Notes/SikluMHTG.md +7 -0
  39. data/docs/Model-Notes/TrueNAS.md +23 -0
  40. data/docs/Model-Notes/XGS4600-Zyxel.md +5 -0
  41. data/docs/ModelUnitTests.md +219 -0
  42. data/docs/Outputs.md +102 -5
  43. data/docs/Release.md +102 -0
  44. data/docs/Ruby-API.md +135 -2
  45. data/docs/Sources.md +34 -0
  46. data/docs/Supported-OS-Types.md +207 -270
  47. data/docs/Troubleshooting.md +43 -1
  48. data/extra/device2yaml.rb +259 -0
  49. data/extra/gitdiff-msteams.sh +32 -5
  50. data/extra/hooks/modelrules.rb +55 -0
  51. data/extra/hooks/modelrulesadvanced.rb +167 -0
  52. data/extra/hooks/srcipmap.rb +54 -0
  53. data/extra/nagios_check_failing_nodes.rb +1 -1
  54. data/extra/oxidized.runit +1 -1
  55. data/extra/rest_client.rb +5 -4
  56. data/extra/syslog.rb +11 -6
  57. data/lib/oxidized/cli/support.rb +152 -0
  58. data/lib/oxidized/cli.rb +21 -6
  59. data/lib/oxidized/config/vars.rb +33 -14
  60. data/lib/oxidized/config.rb +28 -17
  61. data/lib/oxidized/core.rb +50 -8
  62. data/lib/oxidized/hook/ciscosparkdiff.rb +11 -9
  63. data/lib/oxidized/hook/exec.rb +5 -4
  64. data/lib/oxidized/hook/githubrepo.rb +55 -18
  65. data/lib/oxidized/hook/noophook.rb +2 -2
  66. data/lib/oxidized/hook/slackdiff.rb +50 -14
  67. data/lib/oxidized/hook/xmppdiff.rb +9 -9
  68. data/lib/oxidized/hook.rb +68 -16
  69. data/lib/oxidized/input/cli.rb +8 -3
  70. data/lib/oxidized/input/debugtext.rb +40 -0
  71. data/lib/oxidized/input/debugyaml.rb +82 -0
  72. data/lib/oxidized/input/exec.rb +2 -11
  73. data/lib/oxidized/input/ftp.rb +2 -19
  74. data/lib/oxidized/input/http.rb +67 -17
  75. data/lib/oxidized/input/input.rb +35 -14
  76. data/lib/oxidized/input/scp.rb +27 -0
  77. data/lib/oxidized/input/ssh.rb +59 -83
  78. data/lib/oxidized/input/sshbase.rb +102 -0
  79. data/lib/oxidized/input/telnet.rb +20 -19
  80. data/lib/oxidized/input/tftp.rb +8 -8
  81. data/lib/oxidized/job.rb +18 -7
  82. data/lib/oxidized/jobs.rb +11 -1
  83. data/lib/oxidized/logger.rb +51 -0
  84. data/lib/oxidized/manager.rb +18 -17
  85. data/lib/oxidized/model/acos.rb +2 -1
  86. data/lib/oxidized/model/addpack.rb +26 -0
  87. data/lib/oxidized/model/adtran.rb +5 -1
  88. data/lib/oxidized/model/adva.rb +3 -3
  89. data/lib/oxidized/model/airfiber.rb +1 -1
  90. data/lib/oxidized/model/aos7.rb +11 -0
  91. data/lib/oxidized/model/aoscx.rb +37 -29
  92. data/lib/oxidized/model/aosw.rb +39 -29
  93. data/lib/oxidized/model/apc_aos.rb +7 -2
  94. data/lib/oxidized/model/apcaos.rb +39 -0
  95. data/lib/oxidized/model/aricentiss.rb +9 -2
  96. data/lib/oxidized/model/arubainstant.rb +93 -0
  97. data/lib/oxidized/model/asa.rb +11 -10
  98. data/lib/oxidized/model/asternos.rb +22 -0
  99. data/lib/oxidized/model/asyncos.rb +3 -3
  100. data/lib/oxidized/model/audiocodes.rb +2 -2
  101. data/lib/oxidized/model/awplus.rb +15 -12
  102. data/lib/oxidized/model/axos.rb +1 -1
  103. data/lib/oxidized/model/bdcom.rb +1 -0
  104. data/lib/oxidized/model/c4cmts.rb +1 -2
  105. data/lib/oxidized/model/ciscosma.rb +1 -1
  106. data/lib/oxidized/model/ciscosmb.rb +6 -1
  107. data/lib/oxidized/model/cnos.rb +13 -10
  108. data/lib/oxidized/model/comtrol.rb +1 -1
  109. data/lib/oxidized/model/comware.rb +5 -3
  110. data/lib/oxidized/model/cumulus.rb +14 -2
  111. data/lib/oxidized/model/defacto.rb +26 -0
  112. data/lib/oxidized/model/dellx.rb +1 -1
  113. data/lib/oxidized/model/dlink.rb +5 -2
  114. data/lib/oxidized/model/dlinknextgen.rb +55 -0
  115. data/lib/oxidized/model/dnos.rb +3 -0
  116. data/lib/oxidized/model/dslcommands.rb +93 -0
  117. data/lib/oxidized/model/dslsetup.rb +102 -0
  118. data/lib/oxidized/model/eatonnetwork.rb +70 -0
  119. data/lib/oxidized/model/edgecos.rb +3 -1
  120. data/lib/oxidized/model/edgeos.rb +7 -6
  121. data/lib/oxidized/model/edgeswitch.rb +3 -1
  122. data/lib/oxidized/model/efos.rb +41 -0
  123. data/lib/oxidized/model/eltex.rb +4 -2
  124. data/lib/oxidized/model/enterasys800.rb +2 -2
  125. data/lib/oxidized/model/enterprise_sonic.rb +46 -0
  126. data/lib/oxidized/model/eos.rb +3 -1
  127. data/lib/oxidized/model/exalink.rb +36 -0
  128. data/lib/oxidized/model/f5os.rb +17 -0
  129. data/lib/oxidized/model/fabricos.rb +2 -2
  130. data/lib/oxidized/model/fastiron.rb +5 -3
  131. data/lib/oxidized/model/firebrick.rb +2 -2
  132. data/lib/oxidized/model/firelinuxos.rb +13 -6
  133. data/lib/oxidized/model/firewareos.rb +10 -1
  134. data/lib/oxidized/model/fortigate.rb +160 -0
  135. data/lib/oxidized/model/fortios.rb +38 -48
  136. data/lib/oxidized/model/fsos.rb +46 -0
  137. data/lib/oxidized/model/gaiaos.rb +4 -4
  138. data/lib/oxidized/model/garderos.rb +38 -0
  139. data/lib/oxidized/model/grandstreamht8xx.rb +19 -0
  140. data/lib/oxidized/model/h3c.rb +1 -1
  141. data/lib/oxidized/model/ibos.rb +1 -0
  142. data/lib/oxidized/model/ingate.rb +47 -0
  143. data/lib/oxidized/model/ios.rb +57 -30
  144. data/lib/oxidized/model/iosxr.rb +2 -2
  145. data/lib/oxidized/model/ironware.rb +7 -5
  146. data/lib/oxidized/model/ivanti.rb +54 -0
  147. data/lib/oxidized/model/junos.rb +12 -5
  148. data/lib/oxidized/model/kornfeldos.rb +33 -0
  149. data/lib/oxidized/model/lenovonos.rb +2 -0
  150. data/lib/oxidized/model/linksyssrw.rb +3 -3
  151. data/lib/oxidized/model/linuxgeneric.rb +4 -2
  152. data/lib/oxidized/model/macros.rb +60 -0
  153. data/lib/oxidized/model/mimosab11.rb +34 -0
  154. data/lib/oxidized/model/ml66.rb +33 -0
  155. data/lib/oxidized/model/mlnxos.rb +18 -14
  156. data/lib/oxidized/model/model.rb +98 -103
  157. data/lib/oxidized/model/mtrlrfs.rb +1 -0
  158. data/lib/oxidized/model/ndms.rb +6 -0
  159. data/lib/oxidized/model/netgear.rb +14 -3
  160. data/lib/oxidized/model/netonix.rb +1 -1
  161. data/lib/oxidized/model/netscaler.rb +1 -1
  162. data/lib/oxidized/model/nodegrid.rb +1 -1
  163. data/lib/oxidized/model/nsxdfw.rb +31 -0
  164. data/lib/oxidized/model/nsxfirewall.rb +2 -1
  165. data/lib/oxidized/model/nxos.rb +20 -15
  166. data/lib/oxidized/model/ocnos.rb +42 -0
  167. data/lib/oxidized/model/onefinity.rb +18 -0
  168. data/lib/oxidized/model/openbsd.rb +1 -1
  169. data/lib/oxidized/model/opengear.rb +36 -1
  170. data/lib/oxidized/model/openwrt.rb +6 -6
  171. data/lib/oxidized/model/opnsense.rb +9 -1
  172. data/lib/oxidized/model/os6.rb +48 -0
  173. data/lib/oxidized/model/outputs.rb +5 -0
  174. data/lib/oxidized/model/panos.rb +2 -0
  175. data/lib/oxidized/model/perle.rb +41 -0
  176. data/lib/oxidized/model/pfsense.rb +9 -0
  177. data/lib/oxidized/model/powerconnect.rb +32 -11
  178. data/lib/oxidized/model/procurve.rb +6 -2
  179. data/lib/oxidized/model/qtech.rb +3 -1
  180. data/lib/oxidized/model/quantaos.rb +8 -6
  181. data/lib/oxidized/model/rgos.rb +33 -0
  182. data/lib/oxidized/model/riverbed.rb +104 -0
  183. data/lib/oxidized/model/routeros.rb +18 -11
  184. data/lib/oxidized/model/saos.rb +18 -1
  185. data/lib/oxidized/model/saos10.rb +38 -0
  186. data/lib/oxidized/model/siklu.rb +1 -1
  187. data/lib/oxidized/model/siklumhtg.rb +22 -0
  188. data/lib/oxidized/model/sixwind.rb +28 -0
  189. data/lib/oxidized/model/slxos.rb +3 -3
  190. data/lib/oxidized/model/smartbyte.rb +48 -0
  191. data/lib/oxidized/model/sonicos.rb +27 -20
  192. data/lib/oxidized/model/speedtouch.rb +1 -1
  193. data/lib/oxidized/model/sros.rb +3 -3
  194. data/lib/oxidized/model/srosmd.rb +1 -1
  195. data/lib/oxidized/model/supermicro.rb +1 -1
  196. data/lib/oxidized/model/telco.rb +1 -1
  197. data/lib/oxidized/model/tmos.rb +1 -0
  198. data/lib/oxidized/model/tnsr.rb +57 -0
  199. data/lib/oxidized/model/tplink.rb +5 -5
  200. data/lib/oxidized/model/trango.rb +4 -2
  201. data/lib/oxidized/model/truenas.rb +64 -3
  202. data/lib/oxidized/model/ucs.rb +1 -1
  203. data/lib/oxidized/model/unifiap.rb +144 -0
  204. data/lib/oxidized/model/uplinkolt.rb +46 -0
  205. data/lib/oxidized/model/voltaire.rb +1 -1
  206. data/lib/oxidized/model/voss.rb +3 -0
  207. data/lib/oxidized/model/vrp.rb +5 -1
  208. data/lib/oxidized/model/vyatta.rb +9 -3
  209. data/lib/oxidized/model/vyos.rb +37 -0
  210. data/lib/oxidized/model/xos.rb +10 -1
  211. data/lib/oxidized/model/zhoneolt.rb +4 -2
  212. data/lib/oxidized/model/zynos.rb +67 -3
  213. data/lib/oxidized/model/zynosadsl.rb +14 -0
  214. data/lib/oxidized/model/zynoscli.rb +1 -1
  215. data/lib/oxidized/model/zynosgs.rb +2 -0
  216. data/lib/oxidized/model/zynosmgs.rb +32 -0
  217. data/lib/oxidized/node.rb +99 -64
  218. data/lib/oxidized/nodes.rb +40 -19
  219. data/lib/oxidized/output/file.rb +80 -43
  220. data/lib/oxidized/output/git.rb +295 -151
  221. data/lib/oxidized/output/gitcrypt.rb +193 -185
  222. data/lib/oxidized/output/http.rb +63 -51
  223. data/lib/oxidized/output/output.rb +20 -4
  224. data/lib/oxidized/signals.rb +44 -0
  225. data/lib/oxidized/source/csv.rb +49 -49
  226. data/lib/oxidized/source/http.rb +76 -63
  227. data/lib/oxidized/source/jsonfile.rb +68 -0
  228. data/lib/oxidized/source/source.rb +73 -18
  229. data/lib/oxidized/source/sql.rb +71 -59
  230. data/lib/oxidized/version.rb +6 -4
  231. data/lib/oxidized/worker.rb +57 -29
  232. data/lib/oxidized.rb +4 -24
  233. data/lib/refinements.rb +21 -1
  234. data/oxidized.gemspec +45 -21
  235. metadata +248 -41
  236. data/lib/oxidized/model/timos.rb +0 -10
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d5f60756df10959016092e920b8d30c1752a54c902c25dd5753f73cf9982dbbe
4
- data.tar.gz: 32e8b6918df95cc21e0a7cdcfb2934385f362a70f5035c70a2271390254826d7
3
+ metadata.gz: 59eeea5dc9024b545f633379b4ab663cf5ea26fe478a4dafffe0e0b80909d2b7
4
+ data.tar.gz: 26363d11d322e4f797db86050dce16532b8cf2e0e5419de0b92b0dae0b8076df
5
5
  SHA512:
6
- metadata.gz: 299463a15d5fdbdea8f6e67859eb9c2c9d8ea9c1fe6bf4506a1bc3fb7de9e6ed9f01887e3d999460d67ecfd8eb7994ebd193a0bca33d1cc6fe39e30b8f34293a
7
- data.tar.gz: '095c7d26e35534fac3c3c1fe2615eb31e5d6b6302910c66e3d07ba23f698f9b13b8bbab9e70f84f5a627bf560a6e636e7d8dea7a85158f31012c50c845edf0cd'
6
+ metadata.gz: 3b47b07aaa4528bfa49559ae27785f64da5de07e00305878b840cad7f00068e83c84951350494b37765e0a2499a59881d15979360a8c911702f81531613dd674
7
+ data.tar.gz: e103734e361736470524ea88f650fa0007a498273c2b54597a0d6fe3d0e768013f2a13f9edea755b72955ce57684614b7a824a745b81c41f0f2fe539b3d13b4d
data/.coderabbit.yaml ADDED
@@ -0,0 +1,21 @@
1
+ reviews:
2
+ auto_review:
3
+ enabled: false
4
+ auto_incremental_review: false
5
+
6
+ commit_status: false
7
+ review_status: false
8
+ high_level_summary: false
9
+ suggested_labels: false
10
+ suggested_reviewers: false
11
+ changed_files_summary: false
12
+ poem: false
13
+ sequence_diagrams: false
14
+ estimate_code_review_effort: false
15
+ assess_linked_issues: false
16
+ related_issues: false
17
+ in_progress_fortune: false
18
+
19
+
20
+ chat:
21
+ auto_reply: false
@@ -0,0 +1,45 @@
1
+ ---
2
+ name: Bug report
3
+ about: Create a report to help us improve oxidized
4
+ title: ''
5
+ labels: bug
6
+ assignees: ''
7
+
8
+ ---
9
+ <!-- Check the box [X] -->
10
+ - [ ] I have read and understood [docs/Issues.md](https://github.com/ytti/oxidized/blob/master/docs/Issues.md).
11
+
12
+ **Describe the bug**
13
+ A clear and concise description of what the bug is.
14
+
15
+ **To Reproduce**
16
+ Steps to reproduce the behavior:
17
+ 1. Configure '...'
18
+ 2. Use model '....'
19
+ 3. Run '....'
20
+ 4. See error
21
+
22
+ **Expected behavior**
23
+ A clear and concise description of what you expected to happen.
24
+
25
+ **Configuration**
26
+ ```
27
+ If applicable, publish your configuration.
28
+ ```
29
+
30
+ **Logs**
31
+ ```
32
+ If applicable, add logs to help explain your problem.
33
+ ```
34
+
35
+ **Running environment (please complete the following information):**
36
+ <!-- complete the following information and add further details if needed.
37
+ Always test the latest version of oxidized -->
38
+ - OS: [e.g. Debian Bookworm, official container version xxx, ...]
39
+ - oxidized version: [e.g. 0.32.2]
40
+ - oxidized-web version: [e.g. 0.15.1, if applicable]
41
+ - Manufacturer model an software version:
42
+ - oxidized model name:
43
+
44
+ **Additional context**
45
+ Add any other context about the problem here.
@@ -0,0 +1,22 @@
1
+ ---
2
+ name: Feature request
3
+ about: Suggest an idea for this project
4
+ title: ''
5
+ labels: feature request
6
+ assignees: ''
7
+
8
+ ---
9
+ <!-- Check the box [X] -->
10
+ - [ ] I have read and understood [docs/Issues.md](https://github.com/ytti/oxidized/blob/master/docs/Issues.md).
11
+
12
+ **Is your feature request related to a problem? Please describe.**
13
+ A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
14
+
15
+ **Describe the solution you'd like**
16
+ A clear and concise description of what you want to happen.
17
+
18
+ **Describe alternatives you've considered**
19
+ A clear and concise description of any alternative solutions or features you've considered.
20
+
21
+ **Additional context**
22
+ Add any other context about the feature request here.
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: Support request
3
+ about: Ask for help
4
+ title: ''
5
+ labels: question
6
+ assignees: ''
7
+
8
+ ---
9
+ <!-- Check the box [X] -->
10
+ - [ ] I have read and understood [docs/Issues.md](https://github.com/ytti/oxidized/blob/master/docs/Issues.md).
11
+
12
+ **Describe the problem**
13
+ A clear and concise description of what your problem is.
14
+
15
+ **Expected behavior**
16
+ A clear and concise description of what you expected to happen.
17
+
18
+ **Configuration**
19
+ ```
20
+ If applicable, publish your configuration.
21
+ ```
22
+
23
+ **Logs**
24
+ ```
25
+ If applicable, add logs to help explain your problem.
26
+ ```
27
+
28
+ **Running environment (please complete the following information):**
29
+ <!-- complete the following information and add further details if needed.
30
+ Always test the latest version of oxidized -->
31
+ - OS: [e.g. Debian Bookworm, official container version xxx, ...]
32
+ - oxidized version: [e.g. 0.32.2]
33
+ - oxidized-web version: [e.g. 0.15.1, if applicable]
34
+ - Manufacturer model an software version:
35
+ - oxidized model name:
36
+
37
+ **Additional context**
38
+ Add any other context about the problem here.
39
+
@@ -40,11 +40,11 @@ jobs:
40
40
 
41
41
  steps:
42
42
  - name: Checkout repository
43
- uses: actions/checkout@v3
43
+ uses: actions/checkout@v6
44
44
 
45
45
  # Initializes the CodeQL tools for scanning.
46
46
  - name: Initialize CodeQL
47
- uses: github/codeql-action/init@v2
47
+ uses: github/codeql-action/init@v4
48
48
  with:
49
49
  languages: ${{ matrix.language }}
50
50
  # If you wish to specify custom queries, you can do so here or in a config file.
@@ -58,7 +58,7 @@ jobs:
58
58
  # Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java).
59
59
  # If this step fails, then you should remove it and run the build manually (see below)
60
60
  - name: Autobuild
61
- uses: github/codeql-action/autobuild@v2
61
+ uses: github/codeql-action/autobuild@v4
62
62
 
63
63
  # ℹ️ Command-line programs to run using the OS shell.
64
64
  # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
@@ -71,6 +71,6 @@ jobs:
71
71
  # ./location_of_script_within_repo/buildscript.sh
72
72
 
73
73
  - name: Perform CodeQL Analysis
74
- uses: github/codeql-action/analyze@v2
74
+ uses: github/codeql-action/analyze@v4
75
75
  with:
76
76
  category: "/language:${{matrix.language}}"
@@ -2,21 +2,116 @@ name: Publish Docker
2
2
  on:
3
3
  push:
4
4
  branches: [ "master" ]
5
+ tags: [ "[0-9]+.[0-9]+.[0-9]+" ]
6
+ env:
7
+ REGISTRY_IMAGE: oxidized/oxidized
8
+
5
9
  jobs:
6
10
  build:
7
11
  if: github.repository_owner == 'ytti'
12
+ runs-on: ${{ matrix.runner }}
13
+ strategy:
14
+ fail-fast: false
15
+ matrix:
16
+ include:
17
+ - platform: linux/amd64
18
+ runner: ubuntu-latest
19
+ - platform: linux/arm64
20
+ runner: ubuntu-24.04-arm
21
+
22
+ steps:
23
+ - name: Prepare
24
+ run: |
25
+ platform=${{ matrix.platform }}
26
+ echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV
27
+
28
+ - name: Docker meta
29
+ id: meta
30
+ uses: docker/metadata-action@v6
31
+ with:
32
+ images: ${{ env.REGISTRY_IMAGE }}
33
+ tags: |
34
+ type=semver,pattern={{version}}
35
+ type=semver,pattern={{major}}
36
+ type=sha,prefix=master-
37
+ flavor: |
38
+ latest=true
39
+
40
+ - name: Login to Docker Hub
41
+ uses: docker/login-action@v4
42
+ with:
43
+ username: ${{ secrets.DOCKER_USERNAME }}
44
+ password: ${{ secrets.DOCKER_PASSWORD }}
45
+
46
+ - name: Set up Docker Buildx
47
+ uses: docker/setup-buildx-action@v4
48
+
49
+ - name: Build and push by digest
50
+ id: build
51
+ uses: docker/build-push-action@v7
52
+ with:
53
+ platforms: ${{ matrix.platform }}
54
+ tags: ${{ env.REGISTRY_IMAGE }}
55
+ labels: |
56
+ ${{ steps.meta.outputs.labels }}
57
+ org.opencontainers.image.ref.name=${{ steps.meta.outputs.version }}
58
+ build-args: |
59
+ BUILDKIT_CONTEXT_KEEP_GIT_DIR=true
60
+ outputs: type=image,push-by-digest=true,name-canonical=true,push=true
61
+
62
+ - name: Export digest
63
+ run: |
64
+ mkdir -p ${{ runner.temp }}/digests
65
+ digest="${{ steps.build.outputs.digest }}"
66
+ touch "${{ runner.temp }}/digests/${digest#sha256:}"
67
+
68
+ - name: Upload digest
69
+ uses: actions/upload-artifact@v7
70
+ with:
71
+ name: digests-${{ env.PLATFORM_PAIR }}
72
+ path: ${{ runner.temp }}/digests/*
73
+ if-no-files-found: error
74
+ retention-days: 1
75
+
76
+ merge:
8
77
  runs-on: ubuntu-latest
78
+ needs:
79
+ - build
9
80
  steps:
10
- - uses: actions/checkout@master
11
- with:
12
- fetch-depth: 0
13
- - name: Get Release Version
14
- id: get_version
15
- run: echo "release-version=$(git describe --tags)" >> $GITHUB_OUTPUT
16
- - name: Publish to Registry
17
- uses: elgohr/Publish-Docker-Github-Action@v5
18
- with:
19
- name: oxidized/oxidized
20
- username: ${{ secrets.DOCKER_USERNAME }}
21
- password: ${{ secrets.DOCKER_PASSWORD }}
22
- tags: "latest,${{ steps.get_version.outputs.release-version }}"
81
+ - name: Download digests
82
+ uses: actions/download-artifact@v8
83
+ with:
84
+ path: ${{ runner.temp }}/digests
85
+ pattern: digests-*
86
+ merge-multiple: true
87
+
88
+ - name: Login to Docker Hub
89
+ uses: docker/login-action@v4
90
+ with:
91
+ username: ${{ secrets.DOCKER_USERNAME }}
92
+ password: ${{ secrets.DOCKER_PASSWORD }}
93
+
94
+ - name: Set up Docker Buildx
95
+ uses: docker/setup-buildx-action@v4
96
+
97
+ - name: Docker meta
98
+ id: meta
99
+ uses: docker/metadata-action@v6
100
+ with:
101
+ images: ${{ env.REGISTRY_IMAGE }}
102
+ tags: |
103
+ type=semver,pattern={{version}}
104
+ type=semver,pattern={{major}}
105
+ type=sha,prefix=master-
106
+ flavor: |
107
+ latest=true
108
+
109
+ - name: Create manifest list and push
110
+ working-directory: ${{ runner.temp }}/digests
111
+ run: |
112
+ docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
113
+ $(printf '${{ env.REGISTRY_IMAGE }}@sha256:%s ' *)
114
+
115
+ - name: Inspect image
116
+ run: |
117
+ docker buildx imagetools inspect ${{ env.REGISTRY_IMAGE }}:${{ steps.meta.outputs.version }}
@@ -19,24 +19,15 @@ jobs:
19
19
  runs-on: ubuntu-latest
20
20
  strategy:
21
21
  matrix:
22
- ruby-version: ['3.0', '3.1', '3.2']
22
+ ruby-version: ['3.0', '3.1', '3.2', '3.3', '3.4', 'ruby-head']
23
+ continue-on-error: ${{ matrix.ruby-version == 'ruby-head' }}
23
24
 
24
25
  steps:
25
- - uses: actions/checkout@v3
26
+ - uses: actions/checkout@v6
26
27
  - name: Set up Ruby
27
- # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
28
- # change this to (see https://github.com/ruby/setup-ruby#versioning):
29
28
  uses: ruby/setup-ruby@v1
30
29
  with:
31
30
  ruby-version: ${{ matrix.ruby-version }}
32
31
  bundler-cache: true # runs 'bundle install' and caches installed gems automatically
33
- - name: rubocop
34
- uses: reviewdog/action-rubocop@v2
35
- with:
36
- rubocop_version: gemfile
37
- rubocop_extensions: rubocop-minitest:gemfile rubocop-rake:gemfile
38
- reporter: github-pr-review
39
32
  - name: Run tests
40
33
  run: bundle exec rake
41
- - uses: codecov/codecov-action@v3
42
- if: ${{ always() }}
@@ -1,3 +1,4 @@
1
+ ---
1
2
  name: "Stale Issue/PR cleanup"
2
3
  on:
3
4
  schedule:
@@ -11,6 +12,10 @@ jobs:
11
12
  stale:
12
13
  runs-on: ubuntu-latest
13
14
  steps:
14
- - uses: actions/stale@v8
15
+ - uses: actions/stale@v10
15
16
  with:
17
+ stale-issue-message: 'This issue is stale because it has been open 90 days with no activity.'
18
+ stale-pr-message: 'This PR is stale because it has been open 90 days with no activity.'
16
19
  operations-per-run: 500
20
+ days-before-stale: 90
21
+ days-before-close: -1
data/.gitignore CHANGED
@@ -13,6 +13,7 @@
13
13
  Gemfile.lock
14
14
  .ruby-version
15
15
  .sass-cache/
16
+ .vscode/
16
17
 
17
18
  # Used by dotenv library to load environment variables.
18
19
  # .env
@@ -52,3 +53,4 @@ build-iPhoneSimulator/
52
53
 
53
54
  # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
54
55
  .rvmrc
56
+ /.rake_tasks~
data/.rubocop.yml CHANGED
@@ -1,12 +1,25 @@
1
1
  inherit_from: .rubocop_todo.yml
2
2
 
3
- # Do not attempt to police vendored code
3
+ inherit_mode:
4
+ merge:
5
+ - Exclude
6
+
7
+ plugins:
8
+ - rubocop-rake
9
+ - rubocop-minitest
10
+ - rubocop-sequel
11
+
4
12
  AllCops:
5
13
  NewCops: enable
6
- TargetRubyVersion: 3.0
14
+ # Do not attempt to police vendored code
7
15
  Exclude:
8
16
  - 'vendor/**/*'
9
17
 
18
+ Gemspec/DevelopmentDependencies:
19
+ EnforcedStyle: gemspec
20
+
21
+ # We prefer to use ”” by default and use ’’ to signal that interpolation is
22
+ # intentionally turned off, but we don't enforce it.
10
23
  Style/StringLiterals:
11
24
  Enabled: false
12
25
 
@@ -14,10 +27,19 @@ Style/FrozenStringLiteralComment:
14
27
  Enabled: false
15
28
 
16
29
  Layout/LineLength:
17
- Enabled: false
30
+ Enabled: true
31
+ Max: 120
32
+ # Too much models have long lines, which is unsafe to reduce without
33
+ # having an existing model unit test.
34
+ Exclude:
35
+ - lib/oxidized/model/*.rb
18
36
 
37
+ # We do not enforce the cop in the models as it would not work with the
38
+ # DSL style of the models
19
39
  Lint/AmbiguousRegexpLiteral:
20
- Enabled: false
40
+ Enabled: true
41
+ Exclude:
42
+ - lib/oxidized/model/*.rb
21
43
 
22
44
  Lint/RaiseException:
23
45
  Enabled: true
@@ -33,6 +55,7 @@ Layout/HashAlignment:
33
55
  EnforcedHashRocketStyle: table
34
56
  EnforcedColonStyle: table
35
57
 
58
+ # Explicitly allow the use of "not"
36
59
  Style/Not:
37
60
  Enabled: false
38
61
 
@@ -40,24 +63,45 @@ Style/Not:
40
63
  Style/CommandLiteral:
41
64
  EnforcedStyle: percent_x
42
65
 
66
+ Style/ConditionalAssignment:
67
+ Enabled: false
68
+
43
69
  Style/FormatString:
44
70
  EnforcedStyle: percent
45
71
 
72
+ Style/FileOpen:
73
+ Exclude:
74
+ - lib/oxidized/input/*.rb
75
+
46
76
  Style/FormatStringToken:
47
77
  EnforcedStyle: unannotated
78
+ AllowedMethods: ['metadata']
48
79
 
49
80
  Style/HashEachMethods:
50
81
  Enabled: true
51
82
 
83
+ Style/HashSyntax:
84
+ EnforcedShorthandSyntax: either
85
+
52
86
  Style/HashTransformKeys:
53
87
  Enabled: true
54
88
 
55
89
  Style/HashTransformValues:
56
90
  Enabled: true
57
91
 
92
+ Style/OneClassPerFile:
93
+ Exclude:
94
+ - spec/**/*.rb
95
+
96
+ Style/RegexpLiteral:
97
+ EnforcedStyle: slashes
98
+ AllowInnerSlashes: true
99
+
100
+ # Explicitly allow the use of rescue as a Modifier
58
101
  Style/RescueModifier:
59
102
  Enabled: false
60
103
 
104
+ # Intentionally left deactivated as used in the models
61
105
  Style/SymbolProc:
62
106
  Enabled: false
63
107
 
@@ -65,29 +109,41 @@ Style/Documentation:
65
109
  Enabled: false
66
110
 
67
111
  Style/ParallelAssignment:
68
- Enabled: false
112
+ Enabled: true
69
113
 
70
114
  Metrics/MethodLength:
71
- Max: 45
115
+ Max: 50
72
116
 
73
- ## Metrics/AbcSize:
74
- ## Max: 28
117
+ Metrics/AbcSize:
118
+ Enabled: false
75
119
 
76
120
  Metrics/ClassLength:
77
121
  Max: 200
78
122
 
79
- ## Metrics/CyclomaticComplexity:
80
- ## Max: 7
123
+ Metrics/ModuleLength:
124
+ Max: 200
125
+
126
+ Metrics/PerceivedComplexity:
127
+ Enabled: false
128
+
129
+ Metrics/CyclomaticComplexity:
130
+ Enabled: false
81
131
 
132
+ # The BlockLength metric does not apply to unit tests. They are in nature
133
+ # long and not very pretty
82
134
  Metrics/BlockLength:
83
135
  Max: 150
136
+ Exclude:
137
+ - spec/**/*_spec.rb
84
138
 
85
139
  Metrics/ParameterLists:
86
140
  Max: 6
87
141
 
142
+ # Used in the models
88
143
  Lint/EmptyBlock:
89
144
  Enabled: false
90
145
 
91
- require:
92
- - rubocop-rake
93
- - rubocop-minitest
146
+ # Disable the cop as string concatenation is widely used in oxidized
147
+ Style/StringConcatenation:
148
+ Enabled: false
149
+