#!/usr/bin/env ruby
#
# Copyright 2019 Harald Sitter <sitter@kde.org>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2 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 14 of version 3 of the license.
#
# This program 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

# Intercept apt calls and inform the user that upgrade is not a valid argument
# on neon.

# Apt is a CLI tool. I don't think this is worth faffing about with translations
# for, so we just use verbatim strings here without any l10n rigging.

# When in batch mode let 'upgrade' through all the same. Batch mode is when
# no tty is attached to stdout. This is in line with how apt's interface
# stability warning works.
# This is specifically to prevent scripts from breaking. e.g. ubiquity
# will attempt to run upgrade but should generally qualify as !tty.
if ARGV.include?('upgrade') && STDOUT.isatty
  warn 'On KDE neon you should use `pkcon update` to install updates.'
  warn 'If you absolutely must use apt you do have to use dist-upgrade or' \
       ' full-upgrade in place of the upgrade command.'
  warn '  https://neon.kde.org/faq#command-to-update'

  abort 'Abort.' unless ARGV.include?('-y') || ARGV.include?('--yes')
end

basename = File.basename(__FILE__)
exec("/usr/bin/#{basename}", *ARGV)
