mirror of
https://github.com/ben-grande/qusal.git
synced 2025-02-07 02:25:28 -05:00
a02997b89e
Many people reported problems with the installation command, most of them had typos, understandable due to the long command. Tar is available even on minimal templates. Using tar is not more dangerous than using qfile-unpacker in this case because the project has no signed archives and passing a directory to dom0 is insecure, considering a git repo, an attacker could find information in the .git directory or modify files and add them to git exclude, which won't be noticed when verifying the commit signature. In the future, if a signed tarball were to be provided, qvm-run and pipe would be used instead, making the command even simpler.
103 lines
2.3 KiB
Bash
Executable File
103 lines
2.3 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
## SPDX-FileCopyrightText: 2025 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
|
##
|
|
## SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
## Try its best to get wrong copyright information.
|
|
## Will show false positives if the copyright owner uploads code with year
|
|
## smaller than the current year.
|
|
|
|
set -eu
|
|
|
|
command -v git >/dev/null ||
|
|
{ printf '%s\n' "Missing program: git" >&2; exit 1; }
|
|
repo_toplevel="$(git rev-parse --show-toplevel)"
|
|
test -d "${repo_toplevel}" || exit 1
|
|
cd "${repo_toplevel}"
|
|
unset repo_toplevel
|
|
./scripts/requires-program.sh reuse date
|
|
|
|
case "${-}" in
|
|
*x*) xtrace=1;;
|
|
*) xtrace=0;;
|
|
esac
|
|
|
|
email="<$(git config --get user.email)>"
|
|
year="$(date -- '+%Y')"
|
|
fail="0"
|
|
|
|
files=""
|
|
if test -n "${1-}"; then
|
|
for f in "${@}"; do
|
|
test -f "${f}" || continue
|
|
test -r "${f}" || continue
|
|
files="${files} ${f}"
|
|
done
|
|
else
|
|
files="$(git log --name-only --date=raw --since="${year}" --format="")"
|
|
files="${files} $(git diff --cached --name-only)"
|
|
fi
|
|
|
|
if test -z "${files}"; then
|
|
exit 0
|
|
fi
|
|
|
|
tmpdir="$(mktemp -d)"
|
|
target="${tmpdir}/spdx"
|
|
trap 'rm -rf -- "${tmpdir}"' EXIT INT HUP QUIT ABRT
|
|
|
|
set +x
|
|
data="$(reuse spdx)"
|
|
printf '%s\n' "${data}" | tee -- "${target}" >/dev/null
|
|
test "${xtrace}" = 0 || set -x
|
|
|
|
for file in ${files}; do
|
|
test "${xtrace}" = 0 || set -x
|
|
case "${file}" in
|
|
.reuse/dep5) continue;;
|
|
*) ;;
|
|
esac
|
|
file="${file#./}"
|
|
set +x
|
|
awk -v year="${year}" -v email="${email}" -v file="${file}" -- '
|
|
BEGIN {
|
|
year_found = 0
|
|
}
|
|
|
|
$1 == "FileName:" {
|
|
sub(/^\.\//, "", $2)
|
|
f = ($2 == file)
|
|
}
|
|
|
|
($1 == "FileCopyrightText:" || $1 == "SPDX-FileCopyrightText:") && f {
|
|
sub(/^(SPDX-)?FileCopyrightText:\s<text>SPDX-FileCopyrightText:\s/, "")
|
|
sub(/^SPDX-FileCopyrightText:\s/, "")
|
|
sub(/^FileCopyrightText:\s<text>/, "")
|
|
sub(/<\/text>$/, "")
|
|
if ($NF == email) {
|
|
found_years = $0
|
|
gsub(/[^0-9,-]/, "", found_years)
|
|
split(found_years, year_array, "[-,]")
|
|
for (i in year_array) {
|
|
if (year_array[i] + 0 >= year) {
|
|
year_found = 1
|
|
break
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
END {
|
|
if (year_found != 1) {
|
|
message = file ": " found_years ": outdated copyright year: " email
|
|
print message > "/dev/stderr"
|
|
exit 1
|
|
}
|
|
}' "${target}" || fail=1
|
|
done
|
|
|
|
if test "${fail}" = "1"; then
|
|
exit 1
|
|
fi
|