#!/bin/sh -efu

. girar-sh-functions
PROG='girar-task show'

usage()
{
	[ -z "$*" ] || message "$*"
	echo >&2 "usage: $PROG [<task_id>]"
	exit 1
}

if [ "${1-}" = '--help' ]; then
	usage
fi

brief=
if [ "${1-}" = '--brief' ]; then
	brief=1
	shift
fi

if [ "$#" -gt 1 ]; then
	usage 'Too many arguments.'
fi

id=$(PROG="$PROG" girar-task-find-current "$@")
cd "$GB_TASKS/$id"

printf 'id=%d' "$id"
enable -f /usr/lib/bash/lockf lockf
printf ' locked=%s' "$(builtin lockf -n . && echo no || echo yes)"
printf ' shared=%s' "$(find gears -maxdepth 0 -path gears -type d -perm -g=w -printf yes -or -printf no 2>/dev/null || echo no)"
printf ' test_only=%s' "$(test -f task/test-only && echo yes || echo no)"
if [ -f task/swift ]; then
	printf ' swift=yes'
fi
if [ -f task/abort ]; then
	aowner="$(stat -c %U task/abort)"
	aowner="${aowner#git_}"
	printf ' aborted_by=%s' "$aowner"
fi
printf ' repo=%s' "$(cat task/repo)"
[ -s "task/pocket" ] &&
	printf ' pocket=%s' "$(cat task/pocket)"
printf ' owner=%s' "$(cat task/owner)"
printf ' state=%s' "$(cat task/state)"
printf ' try=%s' "$(cat task/try 2>/dev/null ||:)"
printf ' iter=%s' "$(cat task/iter 2>/dev/null ||:)"
if [ -s task/depends ]; then
	printf ' depends=%s' "$(tr -s '[:space:]' , < task/depends | sed 's/,$//')"
fi
echo

nums="$(gear_nums)"
[ -n "$nums" ] || exit 0

for i in $nums; do
	if [ -s "gears/$i/dir" ]; then
		dir="$(cat "gears/$i/dir")"
		tag_name="$(cat "gears/$i/tag_name")"
		if [ -z "$brief" ]; then
			printf ' %s:dir=%s\n' "$i" "$dir"
			printf ' %s:tag_name=%s\n' "$i" "$tag_name"
			printf ' %s:tag_id=%s\n' "$i" "$(cat "gears/$i/tag_id")"
			printf ' %s:tag_author=%s\n' "$i" "$(cat "gears/$i/tag_author")"
			if [ -f "gears/$i/module" ]; then
				printf ' %s:kernel_module=%s\n' "$i" "$(cat "gears/$i/module")"
				printf ' %s:kernel_flavour=%s\n' "$i" "$(cat "gears/$i/flavour")"
				printf ' %s:module_name=%s\n' "$i" "$(cat "gears/$i/module_name")"
				printf ' %s:module_branch=%s\n' "$i" "$(cat "gears/$i/module_branch")"
				printf ' %s:template_branch=%s\n' "$i" "$(cat "gears/$i/template_branch")"
				printf ' %s:template_id=%s\n' "$i" "$(cat "gears/$i/template_id")"
			fi
		else
			printf ' %s:%s=%s\n' "$i" "${dir##*/}" "$tag_name"
		fi
	elif [ -s "gears/$i/srpm" ]; then
		printf ' %s:srpm=%s\n' "$i" "$(cat "gears/$i/srpm")"
	elif [ -s "gears/$i/package" ]; then
		if [ -s "gears/$i/copy_repo" ]; then
			[ -z "$brief" ] &&
				printf ' %s:copy_repo=%s\n' "$i" "$(cat "gears/$i/copy_repo")" ||
				action=copy
		else
			[ -z "$brief" ] &&
				printf ' %s:delete\n' "$i" ||
				action=del
		fi
		package="$(cat "gears/$i/package")"
		[ -z "$brief" ] &&
			printf ' %s:package=%s\n' "$i" "$package" ||
			printf ' %s:%s=%s\n' "$i" "$action" "$package"
	fi
	if [ -z "$brief" ]; then
		printf ' %s:userid=%s\n' "$i" "$(cat "gears/$i/userid")"
		if [ -d "acl/$i" ]; then
			approved_by="$(find "acl/$i" -mindepth 1 -maxdepth 1 -type f -printf '%f ')"
			[ -z "$approved_by" ] ||
				printf ' %s:approved_by=%s\n' "$i" "$approved_by"
		fi
		if [ -f "build/$i/pkgname" ]; then
			printf ' %s:pkgname=%s\n' "$i" "$(cat "build/$i/pkgname")"
		fi
		if [ -f "check-git-inheritance/$i" ]; then
			printf ' %s:relax_git_inheritance_check_for_commit=%s\n' "$i" "$(cat "check-git-inheritance/$i")"
		fi
	fi
done
