diff options
Diffstat (limited to 'pkgs/applications/version-management/redmine/generate_nix_requirements.rb')
-rw-r--r-- | pkgs/applications/version-management/redmine/generate_nix_requirements.rb | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/pkgs/applications/version-management/redmine/generate_nix_requirements.rb b/pkgs/applications/version-management/redmine/generate_nix_requirements.rb new file mode 100644 index 000000000000..ed47d52c9c1b --- /dev/null +++ b/pkgs/applications/version-management/redmine/generate_nix_requirements.rb @@ -0,0 +1,56 @@ +#!/usr/bin/env ruby + +require 'rubygems' +require 'bundler' +require 'fileutils' +require 'net/http' +require 'net/https' +require 'uri' + +TMP_DIR = "/tmp/gems" + +FileUtils.rm_rf(TMP_DIR) if File.exists?(TMP_DIR) +FileUtils.mkdir TMP_DIR + +GEMSERVER = "http://rubygems.org" + +# inspect Gemfile.lock +lockfile = Bundler::LockfileParser.new(Bundler.read_file("Gemfile.lock")) + +to_mirror = {} + +uri = URI(GEMSERVER) +http = Net::HTTP.new(uri.host, uri.port) +http.use_ssl = uri.scheme == 'https' + +requirements = {} + +lockfile.specs.each do |s| + possible_gem_name = "#{s.name}-#{s.version.to_s}.gem" + + Dir.chdir TMP_DIR do + filename = `gem fetch #{s.name} -v #{s.version.to_s}`.split()[1] + hash = `sha256sum #{filename}.gem` + url = "#{GEMSERVER}/downloads/#{filename}.gem" + puts url + requirements[s.name] = { :version => s.version.to_s, + :hash => hash.split().first, + :url => url,} + + end +end + +filename = 'Gemfile.nix' + +File.open(filename, 'w') do |file| + file.puts "[" + requirements.each do |name, info| + file.puts "{" + file.puts ['name = ', '"', name, '";'].join('') + file.puts ['hash = ', '"', info[:hash], '";'].join('') + file.puts ['url = ', '"', info[:url], '";'].join('') + file.puts ['version = ', '"', info[:version], '";'].join('') + file.puts "}" + end + file.puts "]" +end |