
This commit adds a pull request to gather stats on a count off all open pull requests for all projects.
82 lines
2.6 KiB
Ruby
82 lines
2.6 KiB
Ruby
#
|
|
# Rakefile to make management of module easier (I hope :) )
|
|
#
|
|
# I did not do this in puppet b/c it requires the vcsrepo!!
|
|
#
|
|
#
|
|
|
|
begin
|
|
require 'yaml'
|
|
require 'puppetlabs_spec_helper/rake_tasks'
|
|
rescue LoadError
|
|
puts "!!!!!"
|
|
puts "puppetlabs_spec_helper not found. This may cause some rake tasks to be unavailable."
|
|
puts "!!!!!"
|
|
end
|
|
|
|
repo_file = 'other_repos.yaml'
|
|
default_modulepath = '/etc/puppet/modules'
|
|
|
|
namespace :modules do
|
|
desc 'clone all required modules'
|
|
task :clone do
|
|
repo_hash = YAML.load_file(File.join(File.dirname(__FILE__), repo_file))
|
|
repos = (repo_hash['repos'] || {})
|
|
modulepath = (repo_hash['modulepath'] || default_modulepath)
|
|
repos_to_clone = (repos['repo_paths'] || {})
|
|
branches_to_checkout = (repos['checkout_branches'] || {})
|
|
repos_to_clone.each do |remote, local|
|
|
# I should check to see if the file is there?
|
|
outpath = File.join(modulepath, local)
|
|
output = `git clone #{remote} #{outpath}`
|
|
puts output
|
|
end
|
|
branches_to_checkout.each do |local, branch|
|
|
Dir.chdir(File.join(modulepath, local)) do
|
|
output = `git checkout #{branch}`
|
|
end
|
|
# Puppet.debug(output)
|
|
end
|
|
end
|
|
|
|
desc 'see if any of the modules are not up-to-date'
|
|
task 'status' do
|
|
repo_hash = YAML.load_file(File.join(File.dirname(__FILE__), repo_file))
|
|
repos = (repo_hash['repos'] || {})
|
|
modulepath = (repo_hash['modulepath'] || default_modulepath)
|
|
repos_to_clone = (repos['repo_paths'] || {})
|
|
branches_to_checkout = (repos['checkout_branches'] || {})
|
|
repos_to_clone.each do |remote, local|
|
|
# I should check to see if the file is there?
|
|
Dir.chdir(File.join(modulepath, local)) do
|
|
puts "Checking status of #{local}"
|
|
puts `git status`
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
namespace :github do
|
|
desc 'check all dependeny projects and generate a report about open pull requests'
|
|
task 'pull_request_stats' do
|
|
require 'net/https'
|
|
require 'uri'
|
|
require 'puppet'
|
|
repo_hash = YAML.load_file(File.join(File.dirname(__FILE__), repo_file))
|
|
(repo_hash['repos'] || {})['repo_paths'].keys.each do |url|
|
|
if url =~ /\w+:\/\/github\.com\/(\S+)?\/(\S+)/
|
|
uri = URI.parse("https://api.github.com/repos/#{$1}/#{$2}/pulls")
|
|
http = Net::HTTP.new(uri.host, uri.port)
|
|
http.use_ssl = true
|
|
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
|
request = Net::HTTP::Get.new(uri.request_uri)
|
|
response = http.request(request)
|
|
pull_requests = PSON.parse(response.body).size
|
|
puts "repo: #{$1}-#{$2}=#{pull_requests}"
|
|
else
|
|
puts "repo: #{url} does not seem to be valid"
|
|
end
|
|
end
|
|
end
|
|
end
|