#!/usr/bin/env ruby
# frozen_string_literal: true
#
# Copyright (C) 2016-2021 Harald Sitter <sitter@kde.org>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) version 3, or any
# later version accepted by the membership of KDE e.V. (or its
# successor approved by the membership of KDE e.V.), which shall
# act as a proxy defined in Section 6 of version 3 of the license.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library.  If not, see <http://www.gnu.org/licenses/>.

require 'configparser'
require 'fileutils'
require 'rugged'
require 'tmpdir'

puts 'going to run update against the local repo'

repo = Rugged::Repository.new(__dir__)
repo.status do |_, status|
  raise 'commit all pending changes first!' if status == :worktree_modified
end

config = ConfigParser.new("#{__dir__}/update.cfg")
dist = config.fetch('DEFAULT').fetch('dist')
config[dist]['seed_base'] = config.fetch(dist).fetch('seed_base').gsub!('https://invent.kde.org/', "file://#{__dir__}")
config[dist]['seed_dist'] = config.fetch(dist).fetch('seed_dist').gsub!('neon/neon/seeds', '')

Dir.mktmpdir do |tmpdir|
  FileUtils.cp_r("#{__dir__}/.", tmpdir, verbose: true)
  File.write("#{tmpdir}/update.cfg", config.to_s)
  system({ 'OUTPUT_DIRECTORY' => __dir__ }, "#{tmpdir}/update", chdir: tmpdir) || abort
end
