#!/usr/bin/ruby

require 'thor'

# See https://qa.debian.org/developer.php?email=team%2Bdebian-virtualbox%40tracker.debian.org

ENV['DEBFULLNAME']='Lucas Nussbaum'
ENV['DEBEMAIL']='lucas@debian.org'

def systemr(c)
  system(c) or raise
end

if `id -u`.to_i != 0
  raise "Run as root."
end

def deps
  systemr("apt-get -y install --no-install-recommends devscripts build-essential debian-keyring equivs")
end

def download(pkg)
  if pkg[:source] =~ /^lib/
    d = pkg[:source][0..3]
  else
    d = pkg[:source][0]
  end
  systemr("dget https://deb.debian.org/debian/pool/#{pkg[:section]}/#{d}/#{pkg[:source]}/#{pkg[:source]}_#{pkg[:version]}.dsc")
end

def builddeps(pkg)
  systemr("cd #{pkg[:source]}-#{pkg[:base_version]} && mk-build-deps -ir -t 'apt-get -y --no-install-recommends'")
end

def dch(pkg)
  systemr("cd #{pkg[:source]}-#{pkg[:base_version]} && dch -bv #{pkg[:backport_version]} --distribution buster-backports --force-distribution 'New unofficial backport.'")
end

def build(pkg)
  systemr("cd #{pkg[:source]}-#{pkg[:base_version]} && dpkg-buildpackage -us -uc")
end

def upload
  systemr("rsync -avzP *.deb *.changes *.tar.xz *.dsc lucas@people.debian.org:public_html/virtualbox-buster/staging/")
  systemr("ssh lucas@people.debian.org 'cd public_html/virtualbox-buster/staging/ && dpkg-scanpackages . > Packages && gzip < Packages > Packages.gz && apt-ftparchive -o APT::FTPArchive::Release::Origin=virtualbox-unofficial release . > Release'")
end

def compute_versions(pkg)
  s = `rmadison -s unstable #{pkg[:source]}`.split(/\s*\|\s*/)
  pkg[:version] = s[1]
  if s[2] == 'unstable'
    pkg[:section] = s[2]
  else
    pkg[:section] = s[2].split(/\//)[1]
  end
  pkg[:base_version] = pkg[:version].gsub(/-[^-]+$/, '')
  pkg[:backport_version] = pkg[:version] + '~~bpo10+1'
  pp pkg
end


=begin
pkgs = [
  {
    :source => 'ruby-vagrant-cloud',
    :version => '2.0.3-1',
    :section => 'main',
    :base_version => '2.0.3',
    :backport_version => '2.0.3-1~~bpo10+1'
  }
]
=end
=begin
pkgs = [
  {
    :source => 'vagrant',
    :version => '2.2.6+dfsg-2',
    :section => 'main',
    :base_version => '2.2.6+dfsg',
    :backport_version => '2.2.6+dfsg-2~~bpo10+1'
  }
]
=end

pkgs = [
  {
    :source => 'virtualbox',
  },
  {
    :source => 'virtualbox-ext-pack',
  },
  {
    :source => 'virtualbox-guest-additions-iso',
  }
]


deps
pkgs.each do |pkg|
  compute_versions(pkg)
  download(pkg)
  builddeps(pkg)
  dch(pkg)
  build(pkg)
end
#upload

