#!/usr/bin/env ruby

# The ultimate awesome Nodejs packaging tool like a supernova!

require 'fileutils'
#=begin
require '/usr/share/npkg/dependencies.rb'
#=end
=begin
require_relative 'dependencies.rb'
=end
include Dependencies

name = ARGV[0]
bundles = {}
if ARGV[1]
	ARGV[1].split(',').each do |i|
		a = i.split(':')
		bundles[a[0]] = a[1]
	end
end

# generate dependency map, downloadable filelist, and complete license string
Dependencies.write(name,bundles)

# generate source.txt

#=begin

# start from 1, 0 will the be 'phantomjs.json'
i = 1

if File.exist?(name + '.lst')
    open(name + '.source','w:UTF-8') do |f|
	open(name + '.lst','r:UTF-8') do |f1|
		f1.each_line do |l|
			url = "http://registry.npmjs.org/" + l.strip.gsub(/-[0-9].*$/,'') + "/-/" + l.strip + ".tgz"
			f.write "Source" + i.to_s + ":\t" + url + "\n"
			i += 1
		end
	end
    end
end

# delta download sources
if File.exist?(name + '.lst')
    old,new = [],[]
    Dir.glob("./**/*.tgz") do |f|
	old << f.gsub("./","").gsub(".tgz","")
    end

    open(name + '.lst','r:UTF-8') do |f|
	f.each_line do |l|
		new << l.strip!
	end
    end

    cross = old & new
    deltaold = old - cross
    deltanew = new - cross

    deltanew.each do |d|
      unless d == nil
	url = "http://registry.npmjs.org/" + d.gsub(/-[0-9].*$/,'') + "/-/" + d + ".tgz"
	IO.popen("wget --tries=0 #{url}")
      end
    end
    FileUtils.rm_rf name + '.lst'

    deltaold.each do |d|
      unless d == nil
	IO.popen("osc delete #{d}.tgz")
      end
    end

end
#=end
