oxidized 0.29.0 → 0.29.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (174) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +31 -0
  3. data/.github/workflows/codeql.yml +76 -0
  4. data/.github/workflows/publishdocker.yml +3 -1
  5. data/.github/workflows/stale.yml +16 -0
  6. data/.rubocop_todo.yml +3 -3
  7. data/CHANGELOG.md +10 -0
  8. data/Dockerfile +2 -0
  9. data/README.md +3 -6
  10. data/docs/Creating-Models.md +14 -15
  11. data/docs/Ruby-API.md +12 -8
  12. data/lib/oxidized/model/acmepacket.rb +2 -0
  13. data/lib/oxidized/model/acos.rb +3 -1
  14. data/lib/oxidized/model/acsw.rb +2 -0
  15. data/lib/oxidized/model/adtran.rb +2 -0
  16. data/lib/oxidized/model/adva.rb +2 -0
  17. data/lib/oxidized/model/aen.rb +2 -0
  18. data/lib/oxidized/model/aireos.rb +2 -0
  19. data/lib/oxidized/model/airfiber.rb +2 -0
  20. data/lib/oxidized/model/airos.rb +2 -0
  21. data/lib/oxidized/model/alteonos.rb +2 -0
  22. data/lib/oxidized/model/alvarion.rb +2 -0
  23. data/lib/oxidized/model/aos.rb +2 -0
  24. data/lib/oxidized/model/aos7.rb +2 -0
  25. data/lib/oxidized/model/aoscx.rb +2 -0
  26. data/lib/oxidized/model/aosw.rb +3 -1
  27. data/lib/oxidized/model/apc_aos.rb +2 -0
  28. data/lib/oxidized/model/arbos.rb +2 -0
  29. data/lib/oxidized/model/aricentiss.rb +2 -0
  30. data/lib/oxidized/model/asa.rb +2 -0
  31. data/lib/oxidized/model/asyncos.rb +2 -0
  32. data/lib/oxidized/model/audiocodes.rb +2 -0
  33. data/lib/oxidized/model/audiocodesmp.rb +2 -0
  34. data/lib/oxidized/model/awplus.rb +2 -0
  35. data/lib/oxidized/model/axos.rb +2 -0
  36. data/lib/oxidized/model/bdcom.rb +2 -0
  37. data/lib/oxidized/model/boss.rb +3 -1
  38. data/lib/oxidized/model/br6910.rb +2 -0
  39. data/lib/oxidized/model/c4cmts.rb +2 -0
  40. data/lib/oxidized/model/cambium.rb +2 -0
  41. data/lib/oxidized/model/cambiumepmp.rb +2 -0
  42. data/lib/oxidized/model/casa.rb +2 -0
  43. data/lib/oxidized/model/catos.rb +2 -0
  44. data/lib/oxidized/model/ciscoce.rb +2 -0
  45. data/lib/oxidized/model/cisconga.rb +2 -0
  46. data/lib/oxidized/model/ciscosma.rb +2 -0
  47. data/lib/oxidized/model/ciscosmb.rb +2 -0
  48. data/lib/oxidized/model/ciscovpn3k.rb +2 -0
  49. data/lib/oxidized/model/cnos.rb +2 -0
  50. data/lib/oxidized/model/comnetms.rb +2 -0
  51. data/lib/oxidized/model/comtrol.rb +2 -0
  52. data/lib/oxidized/model/comware.rb +1 -0
  53. data/lib/oxidized/model/coriant8600.rb +2 -0
  54. data/lib/oxidized/model/coriantgroove.rb +2 -0
  55. data/lib/oxidized/model/corianttmos.rb +2 -0
  56. data/lib/oxidized/model/cumulus.rb +2 -0
  57. data/lib/oxidized/model/datacom.rb +2 -0
  58. data/lib/oxidized/model/dcnos.rb +2 -0
  59. data/lib/oxidized/model/dellx.rb +2 -0
  60. data/lib/oxidized/model/dlink.rb +2 -0
  61. data/lib/oxidized/model/dnos.rb +2 -0
  62. data/lib/oxidized/model/eciapollo.rb +2 -0
  63. data/lib/oxidized/model/edgecos.rb +2 -0
  64. data/lib/oxidized/model/edgeos.rb +2 -0
  65. data/lib/oxidized/model/edgeswitch.rb +2 -0
  66. data/lib/oxidized/model/eltex.rb +2 -0
  67. data/lib/oxidized/model/enterasys.rb +2 -0
  68. data/lib/oxidized/model/enterasys800.rb +2 -0
  69. data/lib/oxidized/model/eos.rb +2 -0
  70. data/lib/oxidized/model/fabricos.rb +2 -0
  71. data/lib/oxidized/model/fastiron.rb +2 -0
  72. data/lib/oxidized/model/fiberdriver.rb +2 -0
  73. data/lib/oxidized/model/firebrick.rb +2 -0
  74. data/lib/oxidized/model/firelinuxos.rb +2 -0
  75. data/lib/oxidized/model/firewareos.rb +2 -0
  76. data/lib/oxidized/model/fortios.rb +2 -0
  77. data/lib/oxidized/model/fortiwlc.rb +2 -0
  78. data/lib/oxidized/model/ftos.rb +2 -0
  79. data/lib/oxidized/model/fujitsupy.rb +2 -0
  80. data/lib/oxidized/model/gaiaos.rb +2 -0
  81. data/lib/oxidized/model/gcombnps.rb +2 -0
  82. data/lib/oxidized/model/grandstream.rb +2 -0
  83. data/lib/oxidized/model/h3c.rb +2 -0
  84. data/lib/oxidized/model/hatteras.rb +2 -0
  85. data/lib/oxidized/model/hios.rb +2 -0
  86. data/lib/oxidized/model/hirschmann.rb +2 -0
  87. data/lib/oxidized/model/hpebladesystem.rb +2 -0
  88. data/lib/oxidized/model/hpemsa.rb +2 -0
  89. data/lib/oxidized/model/hpmsm.rb +2 -0
  90. data/lib/oxidized/model/ibos.rb +2 -0
  91. data/lib/oxidized/model/icotera.rb +2 -0
  92. data/lib/oxidized/model/ios.rb +2 -0
  93. data/lib/oxidized/model/iosxr.rb +2 -0
  94. data/lib/oxidized/model/ipos.rb +2 -0
  95. data/lib/oxidized/model/ironware.rb +2 -0
  96. data/lib/oxidized/model/isam.rb +2 -0
  97. data/lib/oxidized/model/junos.rb +2 -0
  98. data/lib/oxidized/model/lancom.rb +2 -0
  99. data/lib/oxidized/model/lenovonos.rb +2 -0
  100. data/lib/oxidized/model/linksyssrw.rb +2 -0
  101. data/lib/oxidized/model/linuxgeneric.rb +2 -0
  102. data/lib/oxidized/model/masteros.rb +2 -0
  103. data/lib/oxidized/model/mlnxos.rb +2 -0
  104. data/lib/oxidized/model/model.rb +6 -5
  105. data/lib/oxidized/model/mtrlrfs.rb +2 -0
  106. data/lib/oxidized/model/ndms.rb +3 -1
  107. data/lib/oxidized/model/necix.rb +2 -0
  108. data/lib/oxidized/model/netgear.rb +2 -0
  109. data/lib/oxidized/model/netonix.rb +2 -0
  110. data/lib/oxidized/model/netscaler.rb +2 -0
  111. data/lib/oxidized/model/nodegrid.rb +2 -0
  112. data/lib/oxidized/model/nos.rb +2 -0
  113. data/lib/oxidized/model/nsxconfig.rb +2 -0
  114. data/lib/oxidized/model/nsxfirewall.rb +2 -0
  115. data/lib/oxidized/model/nxos.rb +2 -0
  116. data/lib/oxidized/model/oneos.rb +2 -0
  117. data/lib/oxidized/model/openbsd.rb +2 -0
  118. data/lib/oxidized/model/opengear.rb +2 -0
  119. data/lib/oxidized/model/openwrt.rb +2 -0
  120. data/lib/oxidized/model/opnsense.rb +2 -0
  121. data/lib/oxidized/model/os10.rb +2 -0
  122. data/lib/oxidized/model/outputs.rb +2 -0
  123. data/lib/oxidized/model/panos.rb +2 -0
  124. data/lib/oxidized/model/panos_api.rb +2 -0
  125. data/lib/oxidized/model/pfsense.rb +2 -0
  126. data/lib/oxidized/model/planet.rb +2 -0
  127. data/lib/oxidized/model/powerconnect.rb +2 -0
  128. data/lib/oxidized/model/procurve.rb +2 -0
  129. data/lib/oxidized/model/purityos.rb +2 -0
  130. data/lib/oxidized/model/qtech.rb +2 -0
  131. data/lib/oxidized/model/quantaos.rb +2 -0
  132. data/lib/oxidized/model/raisecom.rb +2 -0
  133. data/lib/oxidized/model/routeros.rb +2 -0
  134. data/lib/oxidized/model/saos.rb +2 -0
  135. data/lib/oxidized/model/screenos.rb +2 -0
  136. data/lib/oxidized/model/sgos.rb +2 -0
  137. data/lib/oxidized/model/siklu.rb +2 -0
  138. data/lib/oxidized/model/slxos.rb +2 -0
  139. data/lib/oxidized/model/smartax.rb +2 -0
  140. data/lib/oxidized/model/smartcs.rb +2 -0
  141. data/lib/oxidized/model/sonicos.rb +2 -0
  142. data/lib/oxidized/model/speedtouch.rb +2 -0
  143. data/lib/oxidized/model/sros.rb +3 -1
  144. data/lib/oxidized/model/srosmd.rb +2 -0
  145. data/lib/oxidized/model/stoneos.rb +2 -0
  146. data/lib/oxidized/model/swos.rb +2 -0
  147. data/lib/oxidized/model/tdre.rb +2 -0
  148. data/lib/oxidized/model/telco.rb +2 -0
  149. data/lib/oxidized/model/tmos.rb +3 -1
  150. data/lib/oxidized/model/tplink.rb +2 -0
  151. data/lib/oxidized/model/trango.rb +2 -0
  152. data/lib/oxidized/model/truenas.rb +2 -0
  153. data/lib/oxidized/model/ucs.rb +2 -0
  154. data/lib/oxidized/model/viptela.rb +2 -0
  155. data/lib/oxidized/model/voltaire.rb +2 -0
  156. data/lib/oxidized/model/voss.rb +2 -0
  157. data/lib/oxidized/model/vrp.rb +2 -0
  158. data/lib/oxidized/model/vyatta.rb +2 -0
  159. data/lib/oxidized/model/weos.rb +2 -0
  160. data/lib/oxidized/model/xos.rb +2 -0
  161. data/lib/oxidized/model/yamaha.rb +2 -0
  162. data/lib/oxidized/model/zhoneolt.rb +2 -0
  163. data/lib/oxidized/model/zteolt.rb +2 -0
  164. data/lib/oxidized/model/zy1308.rb +2 -0
  165. data/lib/oxidized/model/zynos.rb +2 -0
  166. data/lib/oxidized/model/zynoscli.rb +2 -0
  167. data/lib/oxidized/model/zynosgs.rb +2 -0
  168. data/lib/oxidized/output/git.rb +2 -1
  169. data/lib/oxidized/version.rb +2 -2
  170. data/lib/oxidized.rb +1 -1
  171. data/lib/refinements.rb +43 -0
  172. metadata +6 -4
  173. data/.github/no-response.yml +0 -13
  174. data/lib/oxidized/string.rb +0 -42
@@ -1,4 +1,6 @@
1
1
  class PfSense < Oxidized::Model
2
+ using Refinements
3
+
2
4
  # use other use than 'admin' user, 'admin' user cannot get ssh/exec. See issue #535
3
5
 
4
6
  cmd :secret do |cfg|
@@ -1,4 +1,6 @@
1
1
  class Planet < Oxidized::Model
2
+ using Refinements
3
+
2
4
  prompt /^\r?([\w.@()-]+[#>]\s?)$/
3
5
  comment '! '
4
6
 
@@ -1,4 +1,6 @@
1
1
  class PowerConnect < Oxidized::Model
2
+ using Refinements
3
+
2
4
  prompt /^([\w\s.@-]+(\(\S*\))?[#>]\s?)$/ # allow spaces in hostname..dell does not limit it.. #
3
5
 
4
6
  comment '! '
@@ -1,4 +1,6 @@
1
1
  class Procurve < Oxidized::Model
2
+ using Refinements
3
+
2
4
  # previous command is repeated followed by "\eE", which sometimes ends up on last line
3
5
  # ssh switches prompt may start with \r, followed by the prompt itself, regex ([\w\s.-]+[#>] ), which ends the line
4
6
  # telnet switches may start with various vt100 control characters, regex (\e\[24;[0-9][hH]), followed by the prompt, followed
@@ -1,4 +1,6 @@
1
1
  class PurityOS < Oxidized::Model
2
+ using Refinements
3
+
2
4
  # Pure Storage Purity OS
3
5
 
4
6
  prompt /\w+@\S+(\s+\S+)*\s?>\s?$/
@@ -1,4 +1,6 @@
1
1
  class QTECH < Oxidized::Model
2
+ using Refinements
3
+
2
4
  comment '! '
3
5
 
4
6
  cmd :all do |cfg|
@@ -1,4 +1,6 @@
1
1
  class QuantaOS < Oxidized::Model
2
+ using Refinements
3
+
2
4
  prompt /^\((\w|\S)+\) (>|#)$/
3
5
  comment '! '
4
6
 
@@ -1,4 +1,6 @@
1
1
  class RAISECOM < Oxidized::Model
2
+ using Refinements
3
+
2
4
  comment '! '
3
5
  prompt /([\w.@-]+[#>]\s?)$/
4
6
 
@@ -1,4 +1,6 @@
1
1
  class RouterOS < Oxidized::Model
2
+ using Refinements
3
+
2
4
  prompt /\[\w+@\S+(\s+\S+)*\]\s?>\s?$/
3
5
  comment "# "
4
6
 
@@ -1,4 +1,6 @@
1
1
  class SAOS < Oxidized::Model
2
+ using Refinements
3
+
2
4
  # Ciena SAOS switch
3
5
  # used for 6.x devices
4
6
 
@@ -1,4 +1,6 @@
1
1
  class ScreenOS < Oxidized::Model
2
+ using Refinements
3
+
2
4
  # Netscreen ScreenOS model #
3
5
 
4
6
  comment '! '
@@ -1,4 +1,6 @@
1
1
  class SGOS < Oxidized::Model
2
+ using Refinements
3
+
2
4
  comment '!- '
3
5
  prompt /\w+>|#/
4
6
 
@@ -1,4 +1,6 @@
1
1
  class Siklu < Oxidized::Model
2
+ using Refinements
3
+
2
4
  # Siklu EtherHaul #
3
5
 
4
6
  prompt /^[\^M\s]{0,}[\w\-\s\.\"]+>$/
@@ -1,4 +1,6 @@
1
1
  class SLXOS < Oxidized::Model
2
+ using Refinements
3
+
2
4
  prompt /^.*[>#]\s?$/i
3
5
  comment '! '
4
6
 
@@ -1,4 +1,6 @@
1
1
  class SmartAX < Oxidized::Model
2
+ using Refinements
3
+
2
4
  # Huawei SmartAX GPON/EPON/DOCSIS network access devices
3
5
  prompt /^([\w.-]+[>#])$/
4
6
 
@@ -1,4 +1,6 @@
1
1
  class SmartCS < Oxidized::Model
2
+ using Refinements
3
+
2
4
  prompt /^\r?([\w.@() -]+[#>]\s?)$/
3
5
  comment '# '
4
6
 
@@ -1,4 +1,6 @@
1
1
  class SonicOS < Oxidized::Model
2
+ using Refinements
3
+
2
4
  # Applies to Sonicwall NSA series firewalls
3
5
 
4
6
  prompt /^\w+@\w+[>]\(?.+\)?\s?/
@@ -1,4 +1,6 @@
1
1
  class SpeedTouch < Oxidized::Model
2
+ using Refinements
3
+
2
4
  prompt /([\w{}=]+[>])$/
3
5
  comment '! '
4
6
 
@@ -1,10 +1,12 @@
1
1
  class SROS < Oxidized::Model
2
+ using Refinements
3
+
2
4
  #
3
5
  # Nokia SR OS (TiMOS) (formerly TiMetra, Alcatel, Alcatel-Lucent).
4
6
  # Used in 7705 SAR, 7210 SAS, 7450 ESS, 7750 SR, 7950 XRS, and NSP.
5
7
  #
6
8
 
7
- comment '# '
9
+ comment '# '
8
10
 
9
11
  prompt /^([-\w.:>*]+\s?[#>]\s?)$/
10
12
 
@@ -1,4 +1,6 @@
1
1
  class SROSMD < Oxidized::Model
2
+ using Refinements
3
+
2
4
  #
3
5
  # Nokia SR OS (TiMOS) (formerly TiMetra, Alcatel, Alcatel-Lucent)
4
6
  # Working in Model-Driven CLI mode.
@@ -1,4 +1,6 @@
1
1
  class StoneOS < Oxidized::Model
2
+ using Refinements
3
+
2
4
  # Hillstone Networks StoneOS software
3
5
 
4
6
  prompt /^\r?[\w.()-]+~?[#>](\s)?$/
@@ -1,5 +1,7 @@
1
1
  # Mikrotik SwOS (Lite)
2
2
  class SwOS < Oxidized::Model
3
+ using Refinements
4
+
3
5
  cmd '/backup.swb'
4
6
  cfg :http do
5
7
  @username = @node.auth[:username]
@@ -1,4 +1,6 @@
1
1
  class TDRE < Oxidized::Model
2
+ using Refinements
3
+
2
4
  prompt /^>$/
3
5
  cmd "get -f"
4
6
 
@@ -1,4 +1,6 @@
1
1
  class TELCO < Oxidized::Model
2
+ using Refinements
3
+
2
4
  # Telco Systems T-Marc 3306
3
5
 
4
6
  prompt /^(\r?[\w.@_()-]+[#]\s?)$/
@@ -1,5 +1,7 @@
1
1
  class TMOS < Oxidized::Model
2
- comment '# '
2
+ using Refinements
3
+
4
+ comment '# '
3
5
 
4
6
  cmd :secret do |cfg|
5
7
  cfg.gsub!(/^([\s\t]*)secret \S+/, '\1secret <secret removed>')
@@ -1,4 +1,6 @@
1
1
  class TPLink < Oxidized::Model
2
+ using Refinements
3
+
2
4
  # tp-link prompt
3
5
  prompt /^\r?([\w.@()-]+[#>]\s?)$/
4
6
  comment '! '
@@ -1,4 +1,6 @@
1
1
  class Trango < Oxidized::Model
2
+ using Refinements
3
+
2
4
  # take a Trangolink sysinfo output and turn it into a configuration file
3
5
 
4
6
  prompt /^#>\s?/
@@ -1,4 +1,6 @@
1
1
  class TrueNAS < Oxidized::Model
2
+ using Refinements
3
+
2
4
  comment '# '
3
5
 
4
6
  cmd('uname -a') { |cfg| comment cfg }
@@ -1,4 +1,6 @@
1
1
  class UCS < Oxidized::Model
2
+ using Refinements
3
+
2
4
  prompt /^(\r?[\w.@_()-]+[#]\s?)$/
3
5
  comment '! '
4
6
 
@@ -1,4 +1,6 @@
1
1
  class Viptela < Oxidized::Model
2
+ using Refinements
3
+
2
4
  # Cisco Vipetla
3
5
 
4
6
  prompt /[-\w]+#\s$/
@@ -1,4 +1,6 @@
1
1
  class VOLTAIRE < Oxidized::Model
2
+ using Refinements
3
+
2
4
  prompt /([\w.@()-\[:\s\]]+[#>]\s|(One or more tests have failed.*))$/
3
5
  comment '## '
4
6
 
@@ -1,4 +1,6 @@
1
1
  class Voss < Oxidized::Model
2
+ using Refinements
3
+
2
4
  # Extreme/Avaya VSP Operating System Software(VOSS)
3
5
  # Created by danielcoxman@gmail.com
4
6
  # March 16, 2019
@@ -1,4 +1,6 @@
1
1
  class VRP < Oxidized::Model
2
+ using Refinements
3
+
2
4
  # Huawei VRP
3
5
 
4
6
  prompt /^.*(<[\w.-]+>)$/
@@ -1,4 +1,6 @@
1
1
  class Vyatta < Oxidized::Model
2
+ using Refinements
3
+
2
4
  # Brocade Vyatta / VyOS model #
3
5
 
4
6
  prompt /@.*?:~\$\s/
@@ -1,4 +1,6 @@
1
1
  class WEOS < Oxidized::Model
2
+ using Refinements
3
+
2
4
  # Westell WEOS, works with Westell 8178G, Westell 8266G
3
5
 
4
6
  prompt /^(\s[\w.@-]+[#>]\s?)$/
@@ -1,4 +1,6 @@
1
1
  class XOS < Oxidized::Model
2
+ using Refinements
3
+
2
4
  # Extreme Networks XOS
3
5
 
4
6
  prompt /^\s?\*?\s?[-\w]+\s?[-\w.~]+(:\d+)? [#>] $/
@@ -1,4 +1,6 @@
1
1
  class Yamaha < Oxidized::Model
2
+ using Refinements
3
+
2
4
  prompt /^([\w.@()-]+[#>]\s?)$/
3
5
  comment '# '
4
6
 
@@ -1,4 +1,6 @@
1
1
  class ZhoneOLT < Oxidized::Model
2
+ using Refinements
3
+
2
4
  # Zhone OLT/MetroE/DSL devices (ONT uses a completely different CLI)
3
5
 
4
6
  # the prompt can be anything on zhone, but it defaults to 'zXX>' and we
@@ -1,4 +1,6 @@
1
1
  class ZTEOLT < Oxidized::Model
2
+ using Refinements
3
+
2
4
  # Tested with C320 and C300 olt, firware 1.2.5P3 and 2.1.0
3
5
 
4
6
  prompt /^([\w.@()-]+[#>]\s?)$/
@@ -1,5 +1,7 @@
1
1
  # For Zyxel OLTs series 1308
2
2
  class Zy1308 < Oxidized::Model
3
+ using Refinements
4
+
3
5
  # For Zyxel OLTs series 1308
4
6
 
5
7
  cmd '/config_OLT-1308S-22.log'
@@ -1,4 +1,6 @@
1
1
  class ZyNOS < Oxidized::Model
2
+ using Refinements
3
+
2
4
  # Used in Zyxel DSLAMs, such as SAM1316
3
5
 
4
6
  comment '! '
@@ -1,4 +1,6 @@
1
1
  class ZyNOSCLI < Oxidized::Model
2
+ using Refinements
3
+
2
4
  # Used in Zyxel DSLAMs, such as SAM1316
3
5
 
4
6
  # Typical prompt "XGS4600#"
@@ -1,4 +1,6 @@
1
1
  class ZyNOSGS < Oxidized::Model
2
+ using Refinements
3
+
2
4
  # Used in Zyxel GS1900 switches, tested with GS1900-8
3
5
  prompt /^.*# $/
4
6
  comment '! '
@@ -79,7 +79,8 @@ module Oxidized
79
79
  i = -1
80
80
  tab = []
81
81
  walker.each do |commit|
82
- next if commit.diff(paths: [path]).empty?
82
+ # Diabled rubocop because the suggested .empty? does not work here.
83
+ next if commit.diff(paths: [path]).size.zero? # rubocop:disable Style/ZeroLengthPredicate
83
84
 
84
85
  hash = {}
85
86
  hash[:date] = commit.time.to_s
@@ -1,6 +1,6 @@
1
1
  module Oxidized
2
- VERSION = '0.29.0'.freeze
3
- VERSION_FULL = '0.29.0'.freeze
2
+ VERSION = '0.29.1'.freeze
3
+ VERSION_FULL = '0.29.1'.freeze
4
4
  def self.version_set
5
5
  version_full = %x(git describe --tags).chop rescue ""
6
6
  version = %x(git describe --tags --abbrev=0).chop rescue ""
data/lib/oxidized.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'fileutils'
2
+ require 'refinements'
2
3
 
3
4
  module Oxidized
4
5
  class OxidizedError < StandardError; end
@@ -6,7 +7,6 @@ module Oxidized
6
7
  Directory = File.expand_path(File.join(File.dirname(__FILE__), '../'))
7
8
 
8
9
  require 'oxidized/version'
9
- require 'oxidized/string'
10
10
  require 'oxidized/config'
11
11
  require 'oxidized/config/vars'
12
12
  require 'oxidized/worker'
@@ -0,0 +1,43 @@
1
+ module Refinements
2
+ # Use the 'refine' keyword to define refinements for the String class
3
+ refine String do
4
+ attr_accessor :type, :cmd, :name
5
+
6
+ # @return [String] copy of self with last line removed
7
+ def cut_tail(lines = 1)
8
+ return "" if length.zero?
9
+
10
+ each_line.to_a[0..(-1 - lines)].join
11
+ end
12
+
13
+ # @return [String] copy of self with first line removed
14
+ def cut_head(lines = 1)
15
+ return "" if length.zero?
16
+
17
+ each_line.to_a[lines..-1].join
18
+ end
19
+
20
+ # @return [String] copy of self with first and last lines removed
21
+ def cut_both(head = 1, tail = 1)
22
+ return "" if length.zero?
23
+
24
+ each_line.to_a[head..(-1 - tail)].join
25
+ end
26
+
27
+ # sets @cmd and @name unless @name is already set
28
+ def set_cmd(command)
29
+ @cmd = command
30
+ @name ||= @cmd.to_s.strip.gsub(/\s+/, '_') # what to do when command is proc? #to_s seems ghetto
31
+ end
32
+
33
+ # Initializes the String instance variables from another String instance
34
+ # when the given str is an instance of String with Oxidized refinements applied
35
+ def init_from_string(str = '')
36
+ raise TypeError unless str.instance_of?(String)
37
+
38
+ @cmd = str.instance_variable_get(:@cmd)
39
+ @name = str.instance_variable_get(:@name)
40
+ @type = str.instance_variable_get(:@type)
41
+ end
42
+ end
43
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oxidized
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.29.0
4
+ version: 0.29.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Saku Ytti
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2023-04-13 00:00:00.000000000 Z
13
+ date: 2023-04-24 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: asetus
@@ -290,9 +290,11 @@ extra_rdoc_files: []
290
290
  files:
291
291
  - ".codeclimate.yml"
292
292
  - ".github/PULL_REQUEST_TEMPLATE.md"
293
- - ".github/no-response.yml"
293
+ - ".github/dependabot.yml"
294
+ - ".github/workflows/codeql.yml"
294
295
  - ".github/workflows/publishdocker.yml"
295
296
  - ".github/workflows/ruby.yml"
297
+ - ".github/workflows/stale.yml"
296
298
  - ".gitignore"
297
299
  - ".rubocop.yml"
298
300
  - ".rubocop_todo.yml"
@@ -546,9 +548,9 @@ files:
546
548
  - lib/oxidized/source/http.rb
547
549
  - lib/oxidized/source/source.rb
548
550
  - lib/oxidized/source/sql.rb
549
- - lib/oxidized/string.rb
550
551
  - lib/oxidized/version.rb
551
552
  - lib/oxidized/worker.rb
553
+ - lib/refinements.rb
552
554
  - oxidized.gemspec
553
555
  homepage: http://github.com/ytti/oxidized
554
556
  licenses:
@@ -1,13 +0,0 @@
1
- # Configuration for probot-no-response - https://github.com/probot/no-response
2
-
3
- # Number of days of inactivity before an Issue is closed for lack of response
4
- daysUntilClose: 21
5
- # Label requiring a response
6
- responseRequiredLabel: user_pending
7
- # Comment to post when closing an Issue for lack of response. Set to `false` to disable
8
- closeComment: >
9
- This issue has been automatically closed because there has been no response
10
- to our request for more information from the original author. The information
11
- that is currently in the issue is insufficient to take further action.
12
- Feel free to re-open this issue if additional information becomes available,
13
- or if you believe it has been closed in error.
@@ -1,42 +0,0 @@
1
- module Oxidized
2
- # Used in models, contains convenience methods
3
- class String < String
4
- attr_accessor :type, :cmd, :name
5
-
6
- # @return [Oxidized::String] copy of self with last line removed
7
- def cut_tail(lines = 1)
8
- return Oxidized::String.new("") if length.zero?
9
-
10
- Oxidized::String.new each_line.to_a[0..(-1 - lines)].join
11
- end
12
-
13
- # @return [Oxidized::String] copy of self with first line removed
14
- def cut_head(lines = 1)
15
- return Oxidized::String.new("") if length.zero?
16
-
17
- Oxidized::String.new each_line.to_a[lines..-1].join
18
- end
19
-
20
- # @return [Oxidized::String] copy of self with first and last lines removed
21
- def cut_both(head = 1, tail = 1)
22
- return Oxidized::String.new("") if length.zero?
23
-
24
- Oxidized::String.new each_line.to_a[head..(-1 - tail)].join
25
- end
26
-
27
- # sets @cmd and @name unless @name is already set
28
- def set_cmd(command)
29
- @cmd = command
30
- @name ||= @cmd.to_s.strip.gsub(/\s+/, '_') # what to do when command is proc? #to_s seems ghetto
31
- end
32
-
33
- def initialize(str = '')
34
- super
35
- return unless str.instance_of?(Oxidized::String)
36
-
37
- @cmd = str.cmd
38
- @name = str.name
39
- @type = str.type
40
- end
41
- end
42
- end