Last active
October 15, 2015 15:32
-
-
Save trlinkin/0be7d1ecf1dfab77b09f to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| require 'json' | |
| require 'net/http' | |
| require 'uri' | |
| require 'openssl' | |
| environment_path = ARGV[0] || Dir.pwd | |
| new_only = ARGV[1] || false | |
| def forge_request(forge_name) | |
| # Call the Forge API (even if we didn't get a clean forge_name, whatever) | |
| module_url = URI.parse("https://forgeapi.puppetlabs.com/v3/modules/#{forge_name}") | |
| http = Net::HTTP.new(module_url.host, module_url.port) | |
| http.use_ssl = true | |
| http.verify_mode = OpenSSL::SSL::VERIFY_NONE | |
| request = http.get(module_url.request_uri,{'Accept' => 'application/json'}) | |
| if request.code == '200' | |
| JSON.parse(request.body) | |
| else | |
| false | |
| end | |
| end | |
| def print_info(module_name,metadata=nil,forge_version=nil) | |
| puts "Results for Module: #{module_name}" | |
| puts "---------------------------------" | |
| if metadata | |
| puts "Forge Name: #{metadata['name']}" | |
| puts "Author: #{metadata['author']}" | |
| puts "Current version: #{metadata['version']}" | |
| else | |
| puts "No Module Metadata Found" | |
| end | |
| if forge_version | |
| puts "FORGE DATA FOUND" | |
| puts "Forge Version Available: #{forge_version}" | |
| puts "\nNEW FORGE VERSION AVAILABLE!" if metadata['version'] != forge_version | |
| end | |
| puts "---------------------------------\n\n" | |
| end | |
| modules = Dir.entries(environment_path) | |
| # Remove '.' and '..' from the list of known module | |
| modules = modules.drop(2) | |
| modules.each do |mod| | |
| if File.exist?("#{mod}/metadata.json") | |
| metadata = JSON.parse(File.read("#{mod}/metadata.json")) rescue {} | |
| forge_name = metadata['name'].gsub(/\//,'-') if metadata['name'] | |
| forge_data = forge_request(forge_name) if forge_name | |
| forge_version = forge_data['current_release']['version'] if forge_data | |
| if !new_only | |
| print_info(mod,metadata,forge_version) | |
| elsif forge_data and metadata['version'] != forge_version | |
| print_info(mod,metadata,forge_version) | |
| end | |
| else | |
| print_info(mod) unless new_only | |
| end | |
| end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment