Class: Getv::Package
- Inherits:
-
Object
- Object
- Getv::Package
- Defined in:
- lib/getv/package.rb,
lib/getv/package/gem.rb,
lib/getv/package/npm.rb,
lib/getv/package/xml.rb,
lib/getv/package/helm.rb,
lib/getv/package/pypi.rb,
lib/getv/package/text.rb,
lib/getv/package/docker.rb,
lib/getv/package/github.rb,
lib/getv/package/github/tag.rb,
lib/getv/package/github/commit.rb,
lib/getv/package/github/release.rb
Overview
Getv::Package class
Defined Under Namespace
Classes: Docker, Gem, GitHub, Helm, Npm, Pypi, Text, Xml
Instance Attribute Summary collapse
-
#name ⇒ Object
Returns the value of attribute name.
-
#opts ⇒ Object
Returns the value of attribute opts.
Class Method Summary collapse
Instance Method Summary collapse
-
#defaults ⇒ Object
rubocop:disable Metrics/MethodLength.
-
#initialize(name, opts = {}) ⇒ Package
constructor
A new instance of Package.
- #latest_version ⇒ Object
-
#update_versions ⇒ Object
rubocop:disable Metrics/PerceivedComplexity,Metrics/MethodLength,Metrics/CyclomaticComplexity,Metrics/AbcSize.
- #versions ⇒ Object
Constructor Details
#initialize(name, opts = {}) ⇒ Package
Returns a new instance of Package.
40 41 42 43 |
# File 'lib/getv/package.rb', line 40 def initialize(name, opts = {}) @name = name @opts = opts end |
Instance Attribute Details
#name ⇒ Object
Returns the value of attribute name.
6 7 8 |
# File 'lib/getv/package.rb', line 6 def name @name end |
#opts ⇒ Object
Returns the value of attribute opts.
6 7 8 |
# File 'lib/getv/package.rb', line 6 def opts @opts end |
Class Method Details
.create(name, opts = {}) ⇒ Object
8 9 10 11 12 13 14 15 16 17 |
# File 'lib/getv/package.rb', line 8 def self.create(name, opts = {}) if opts.fetch(:type, nil).nil? opts.delete(:type) create_using_name(name, opts) else type = opts[:type] opts.delete(:type) type_to_class(type).new name, opts end end |
Instance Method Details
#defaults ⇒ Object
rubocop:disable Metrics/MethodLength
45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/getv/package.rb', line 45 def defaults # rubocop:disable Metrics/MethodLength { select_search: '^\s*v?(.*)\s*$', select_replace: '\1', reject: nil, semantic_only: true, semantic_prefix: nil, semantic_select: ['*'], proxy: nil, versions: nil, latest_version: nil } end |
#latest_version ⇒ Object
59 60 61 62 |
# File 'lib/getv/package.rb', line 59 def latest_version update_versions if opts[:latest_version].nil? opts[:latest_version] end |
#update_versions ⇒ Object
rubocop:disable Metrics/PerceivedComplexity,Metrics/MethodLength,Metrics/CyclomaticComplexity,Metrics/AbcSize
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/getv/package.rb', line 69 def update_versions # rubocop:disable Metrics/PerceivedComplexity,Metrics/MethodLength,Metrics/CyclomaticComplexity,Metrics/AbcSize versions = retrieve_versions || [] versions.sort! if instance_of?(Getv::Package::GitHub::Commit) select_pattern = Regexp.new(opts[:select_search]) versions.select! { |v| v =~ select_pattern } versions.map! { |v| v.sub(select_pattern, opts[:select_replace]) } versions.reject! { |v| v =~ Regexp.new(opts[:reject]) } unless opts[:reject].nil? if opts[:semantic_only] require 'semantic' require 'semantic/core_ext' # remove non semantic version tags versions.select! do |v| v.sub(/^#{opts[:semantic_prefix]}/, '').is_version? && v.start_with?(opts[:semantic_prefix].to_s) end opts[:semantic_select].each do |comparator| versions.select! do |v| Semantic::Version.new(v.sub(/^#{opts[:semantic_prefix]}/, '')).satisfies?(comparator) end end versions.sort_by! { |v| Semantic::Version.new(v.sub(/^#{opts[:semantic_prefix]}/, '')) } else versions.sort! unless instance_of?(Getv::Package::GitHub::Commit) end opts[:versions] = versions.uniq opts[:latest_version] = opts[:versions][-1] unless opts[:versions].empty? end |
#versions ⇒ Object
64 65 66 67 |
# File 'lib/getv/package.rb', line 64 def versions update_versions if opts[:versions].nil? opts[:versions] end |