commit: 6e1be1ece9c2f9f89f68030d302c48fed7b28e48
parent 32759972d4df7e79ccc67030d09e6292e58ee34c
Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
Date:   Sat, 12 Feb 2022 04:35:06 +0100
git-hooks/post-update.srht: Add tags support
Diffstat:
1 file changed, 18 insertions(+), 11 deletions(-)
diff --git a/git-hooks/post-update.srht b/git-hooks/post-update.srht
@@ -9,19 +9,25 @@ no warnings;    # Wide Character…
 use LWP::UserAgent;
 use JSON::MaybeXS;
 use Cwd;
+use File::Spec;
 
 my $json = JSON::MaybeXS->new(utf8 => 1);
+
 my $base = getcwd();
 $base =~ s/.git$//;
 
+my $workdir = "${base}.work";
+my $project = (File::Spec->splitpath($base))[2];
+
 sub new_job {
 	my ($manifest_file) = @_;
+	my $manifest_rel = (File::Spec->splitpath($manifest_file))[2];
 
 	my $manifest = '';
 
 	open FILE, '<', $manifest_file or die $!;
 
-	while(<FILE>) {
+	while (<FILE>) {
 		$manifest .= $_;
 	}
 
@@ -30,36 +36,37 @@ sub new_job {
 
 	my $job = {
 		"manifest" => $manifest,
+		"tags"     => [ "${project}", "${manifest_rel}" ],
 	};
 
 	my $res = $ua->post(
 		$ENV{SRHT_HOST} . "/api/jobs",
 		Authorization => 'token ' . $ENV{SRHT_TOKEN},
-		Content_Type => 'application/json',
-		Content => encode_json $job,
+		Content_Type  => 'application/json',
+		Content       => encode_json $job,
 	);
 
-	if(not $res->is_success) {
+	if (not $res->is_success) {
 		print $res->message;
 		print $res->content;
 		die $!;
-	};
+	}
 }
 
-if (not ( defined($ENV{'SRHT_HOST'}) && defined($ENV{'SRHT_TOKEN'}) )) {
+if (not(defined($ENV{'SRHT_HOST'}) && defined($ENV{'SRHT_TOKEN'}))) {
 	print 'Environment variables $SRHT_HOST and $SRHT_TOKEN are undefined';
 	exit 1;
 }
 
-if (-d $base . ".work/.builds") {
+if (-d "${workdir}/.builds") {
+
 	# TODO: Shuffle manifests, take 4
-	my $builds = $base . ".work/.builds";
-	my @manifests = <"${builds}/*.yml">;
+	my @manifests = <"${workdir}/.builds/*.yml">;
 	for (@manifests) {
 		new_job $_;
 	}
-} elsif (-e $base . ".work/.build.yml") {
-	new_job "${base}.work/.build.yml";
+} elsif (-e "${workdir}/.build.yml") {
+	new_job "${workdir}/.build.yml";
 } else {
 	print "No build manifest found";
 }