Class: R10K::Module::Forge
- Includes:
- Logging
- Defined in:
- lib/r10k/module/forge.rb
Constant Summary
Constants included from Logging
Instance Attribute Summary collapse
-
#metadata ⇒ Object
readonly
Returns the value of attribute metadata.
-
#v3_module ⇒ Object
readonly
Returns the value of attribute v3_module.
Attributes inherited from Base
#dirname, #name, #owner, #path, #title
Class Method Summary collapse
Instance Method Summary collapse
-
#current_version ⇒ String
(also: #version)
The version of the currently installed module.
- #exist? ⇒ Boolean
-
#expected_version ⇒ String
The expected version that the module.
-
#initialize(title, dirname, expected_version) ⇒ Forge
constructor
A new instance of Forge.
- #install ⇒ Object (also: #upgrade)
- #insync? ⇒ Boolean
- #properties ⇒ Object
- #reinstall ⇒ Object
-
#status ⇒ Symbol
Determine the status of the forge module.
- #sync(options = {}) ⇒ Object
- #uninstall ⇒ Object
Methods included from Logging
debug_formatter, default_formatter, default_outputter, #logger, #logger_name, parse_level
Methods inherited from Base
Constructor Details
#initialize(title, dirname, expected_version) ⇒ Forge
Returns a new instance of Forge.
31 32 33 34 35 36 37 38 |
# File 'lib/r10k/module/forge.rb', line 31 def initialize(title, dirname, expected_version) super @metadata_file = R10K::Module::MetadataFile.new(path + 'metadata.json') @metadata = @metadata_file.read @expected_version = expected_version || current_version || :latest @v3_module = PuppetForge::V3::Module.new(:slug => @title) end |
Instance Attribute Details
#metadata ⇒ Object (readonly)
Returns the value of attribute metadata.
22 23 24 |
# File 'lib/r10k/module/forge.rb', line 22 def @metadata end |
#v3_module ⇒ Object (readonly)
Returns the value of attribute v3_module.
27 28 29 |
# File 'lib/r10k/module/forge.rb', line 27 def v3_module @v3_module end |
Class Method Details
.implement?(name, args) ⇒ Boolean
15 16 17 |
# File 'lib/r10k/module/forge.rb', line 15 def self.implement?(name, args) !!(name.match %r[\w+[/-]\w+]) end |
Instance Method Details
#current_version ⇒ String Also known as: version
Returns The version of the currently installed module.
72 73 74 |
# File 'lib/r10k/module/forge.rb', line 72 def current_version @metadata ? @metadata.version : nil end |
#exist? ⇒ Boolean
78 79 80 |
# File 'lib/r10k/module/forge.rb', line 78 def exist? path.exist? end |
#expected_version ⇒ String
Returns The expected version that the module.
60 61 62 63 64 65 66 67 68 69 |
# File 'lib/r10k/module/forge.rb', line 60 def expected_version if @expected_version == :latest begin @expected_version = @v3_module.current_release.version rescue Faraday::ResourceNotFound => e raise PuppetForge::ReleaseNotFound, "The module #{@title} does not exist on #{PuppetForge::V3::Release.conn.url_prefix}.", e.backtrace end end @expected_version end |
#install ⇒ Object Also known as: upgrade
126 127 128 129 130 131 132 133 |
# File 'lib/r10k/module/forge.rb', line 126 def install parent_path = @path.parent if !parent_path.exist? parent_path.mkpath end module_release = R10K::Forge::ModuleRelease.new(@title, expected_version) module_release.install(@path) end |
#insync? ⇒ Boolean
82 83 84 |
# File 'lib/r10k/module/forge.rb', line 82 def insync? status == :insync end |
#properties ⇒ Object
51 52 53 54 55 56 57 |
# File 'lib/r10k/module/forge.rb', line 51 def properties { :expected => expected_version, :actual => current_version, :type => :forge, } end |
#reinstall ⇒ Object
141 142 143 144 |
# File 'lib/r10k/module/forge.rb', line 141 def reinstall uninstall install end |
#status ⇒ Symbol
Determine the status of the forge module.
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
# File 'lib/r10k/module/forge.rb', line 94 def status if not self.exist? # The module is not installed return :absent elsif not File.exist?(@path + 'metadata.json') # The directory exists but doesn't have a metadata file; it probably # isn't a forge module. return :mismatched end if File.directory?(@path + '.git') return :mismatched end # The module is present and has a metadata file, read the metadata to # determine the state of the module. @metadata = @metadata_file.read(@path + 'metadata.json') if not @title.tr('/','-') == @metadata.full_module_name.tr('/','-') # This is a forge module but the installed module is a different author # than the expected author. return :mismatched end if expected_version && (expected_version != @metadata.version) return :outdated end return :insync end |
#sync(options = {}) ⇒ Object
40 41 42 43 44 45 46 47 48 49 |
# File 'lib/r10k/module/forge.rb', line 40 def sync( = {}) case status when :absent install when :outdated upgrade when :mismatched reinstall end end |
#uninstall ⇒ Object
137 138 139 |
# File 'lib/r10k/module/forge.rb', line 137 def uninstall FileUtils.rm_rf full_path end |