From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <gentoo-commits+bounces-906269-garchives=archives.gentoo.org@lists.gentoo.org>
Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80])
	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by finch.gentoo.org (Postfix) with ESMTPS id 12F38138330
	for <garchives@archives.gentoo.org>; Thu, 13 Oct 2016 16:03:31 +0000 (UTC)
Received: from pigeon.gentoo.org (localhost [127.0.0.1])
	by pigeon.gentoo.org (Postfix) with SMTP id 6DA1421C072;
	Thu, 13 Oct 2016 16:03:30 +0000 (UTC)
Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183])
	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by pigeon.gentoo.org (Postfix) with ESMTPS id 4367821C072
	for <gentoo-commits@lists.gentoo.org>; Thu, 13 Oct 2016 16:03:30 +0000 (UTC)
Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52])
	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by smtp.gentoo.org (Postfix) with ESMTPS id 7C8AC3413AA
	for <gentoo-commits@lists.gentoo.org>; Thu, 13 Oct 2016 16:03:27 +0000 (UTC)
Received: from localhost.localdomain (localhost [127.0.0.1])
	by oystercatcher.gentoo.org (Postfix) with ESMTP id 729E12F7
	for <gentoo-commits@lists.gentoo.org>; Thu, 13 Oct 2016 16:03:26 +0000 (UTC)
From: "Ettore Di Giacinto" <mudler@sabayonlinux.org>
To: gentoo-commits@lists.gentoo.org
Content-Transfer-Encoding: 8bit
Content-type: text/plain; charset=UTF-8
Reply-To: gentoo-dev@lists.gentoo.org, "Ettore Di Giacinto" <mudler@sabayonlinux.org>
Message-ID: <1476374224.adb7a5cf8ebd6d3f102bbd46315373288edee0fc.mudler@gentoo>
Subject: [gentoo-commits] proj/gentoo-mate:master commit in: scripts/
X-VCS-Repository: proj/gentoo-mate
X-VCS-Files: scripts/keyword-helper
X-VCS-Directories: scripts/
X-VCS-Committer: mudler
X-VCS-Committer-Name: Ettore Di Giacinto
X-VCS-Revision: adb7a5cf8ebd6d3f102bbd46315373288edee0fc
X-VCS-Branch: master
Date: Thu, 13 Oct 2016 16:03:26 +0000 (UTC)
Precedence: bulk
List-Post: <mailto:gentoo-commits@lists.gentoo.org>
List-Help: <mailto:gentoo-commits+help@lists.gentoo.org>
List-Unsubscribe: <mailto:gentoo-commits+unsubscribe@lists.gentoo.org>
List-Subscribe: <mailto:gentoo-commits+subscribe@lists.gentoo.org>
List-Id: Gentoo Linux mail <gentoo-commits.gentoo.org>
X-BeenThere: gentoo-commits@lists.gentoo.org
X-Archives-Salt: 2ea9b17d-da7e-43c3-9ab6-22223db3f0f3
X-Archives-Hash: a12d01cabcce69ba3f21699305dabda2

commit:     adb7a5cf8ebd6d3f102bbd46315373288edee0fc
Author:     mudler <mudler <AT> sabayon <DOT> org>
AuthorDate: Thu Oct 13 15:56:41 2016 +0000
Commit:     Ettore Di Giacinto <mudler <AT> sabayonlinux <DOT> org>
CommitDate: Thu Oct 13 15:57:04 2016 +0000
URL:        https://gitweb.gentoo.org/proj/gentoo-mate.git/commit/?id=adb7a5cf

scripts: Adding keyword-helper script to help out in KEYWORDS manipulations

 scripts/keyword-helper | 122 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 122 insertions(+)

diff --git a/scripts/keyword-helper b/scripts/keyword-helper
new file mode 100755
index 0000000..d5768a1
--- /dev/null
+++ b/scripts/keyword-helper
@@ -0,0 +1,122 @@
+#!/usr/bin/perl
+# keyword-helper - utility to ekeyword packages
+# Usage: from the root of the overlay
+# keyword-helper app-foo/bar-1.2 app-foo/baz-1.2
+# <mudler@sabayon.org>
+
+use Cwd;
+
+my $TARGET_KEYWORD = $ENV{TARGET_KEYWORD} // "amd64 x86"
+    ;    # KEYWORD changes, arguments are given directly to ekeyword
+my $BUGZ =
+    $ENV{BUGZ};    # Bug reference. Mandatory if no COMMIT_MSG is specified
+my $COMMIT_MSG = $ENV{COMMIT_MSG};    # Git commit message
+
+my @KEYWORD_PACKAGES = @ARGV;         # Packages that we want to manipulate
+my $CWD              = getcwd;
+
+sub strip_pvr { s/-[0-9]{1,}.*$//; }
+
+sub package_has_pvr { /-[0-9]{1,}.*$/; }
+
+# print helpers
+
+sub say { print join( "\n", @_ ) . "\n"; }
+
+sub err { say "\e[31m ", @_, " \e[0m"; }
+
+sub fatal { err @_; exit 1; }
+
+sub ok { say "\e[1;34m ", @_, " \e[0m"; }
+
+sub info { say "\e[1;37m ", @_, " \e[0m"; }
+
+# deadly checks
+
+if ( !@ARGV or $ARGV[0] eq "-h" or $ARGV[0] eq "--help" ) {
+    say "You must feed me with at least a package version", "",
+        "e.g. $0 package",        "",
+        "ENV variables options:", "",
+        " COMMIT_MSG \t\t default commit message",
+        " BUGZ \t\t Gentoo Bugzilla id, e.g. 596998",
+        " TARGET_KEYWORD \t the keyword(s) to set separated by a space. e.g. TARGET_KEYWORD='amd64 x86'";
+    exit 1;
+}
+
+if ( -e "${CWD}/Manifest" ) {
+    fatal "You are running me from the wrong folder, don't you?",
+        "I need to be executed from the root of the overlay!";
+}
+
+fatal "You should supply a bug id with the BUGZ environment variable or",
+    "a custom commit message with COMMIT_MSG at least"
+    if ( !$BUGZ and !$COMMIT_MSG );
+
+# Split TARGET_KEYWORD by space and put into an array
+my @ARCHES = split( /\s/, $TARGET_KEYWORD );
+
+# Cycle packages that need to be manipulated
+# Here it's being used $_, that contains strings in the following format:  category/package, contains package version and revision too
+for (@KEYWORD_PACKAGES) {
+    fatal
+        "You must feed me with package versions, not atoms or whatever!",
+        "bailing out since you are using me in the WRONG way, fix yourself first"
+        unless package_has_pvr;
+    my $local_package =
+        (/\/(.*)$/)[0]
+        . ".ebuild"
+        ;  # Extract the package name and version, included of revision if any
+    info "Keywording $TARGET_KEYWORD on $_ [$local_package]";
+    strip_pvr();    # stripping PVR
+
+    if ( -d $_ ) {
+        chdir($_);    # entering in the directory
+    }
+    else {
+        fatal "$_ directory doesn't exists";
+    }
+
+    # Checking if ebuild we want to keyword is there
+    if ( -e $local_package ) {
+
+        # Do magic with the ebuild, since it exists
+        foreach my $arch (@ARCHES) {
+            my $LOCAL_COMMIT_MSG = $COMMIT_MSG;
+
+            # if no COMMIT_MSG is supplied, we generate it
+            if ( !$COMMIT_MSG ) {
+                my ( $keyword_symbol, $clean_arch ) =
+                    ( $arch =~ /^(\^|\~|)(.*)$/ )
+                    ; # Getting the first character of a arch, it can be ~, ^ or "" to use it with ekeyword
+                my $prefix_msg;
+                if ( $keyword_symbol eq '^' ) {
+                    $prefix_msg = "Drop $clean_arch keyword ";
+                }
+                elsif ( $keyword_symbol eq '~' ) {
+                    $prefix_msg = "Added $arch keyword ";
+                }
+                elsif ( $keyword_symbol eq "" ) {
+                    $prefix_msg = "Stable on $clean_arch keyword ";
+                }
+                $LOCAL_COMMIT_MSG = $prefix_msg . "wrt \#${BUGZ}";
+            }
+
+            system("ekeyword $arch $local_package");
+            system("git add $local_package");
+            system("repoman commit -m '$_: $LOCAL_COMMIT_MSG'");
+            if ( $? >> 8 != 0 ) {
+                fatal
+                    "Meh. we got errors. before going on, i want you to fix those by hand.";
+            }
+            else {
+                ok "Done for $_ [$local_package]";
+            }
+        }
+
+    }
+    else {
+        # errors, the ebuild cannot be found
+            fatal "/!\\ $local_package not found in $_ keywording failed!";
+    }
+    chdir($CWD);
+}