Implement out.
This commit is contained in:
parent
d67112e046
commit
13b1d7f0b1
3 changed files with 95 additions and 47 deletions
48
check
48
check
|
@ -4,50 +4,4 @@ set -e
|
||||||
|
|
||||||
. ./common
|
. ./common
|
||||||
|
|
||||||
fetch_file_infos() {
|
compute_version "$(fetch_file_infos get_files)"
|
||||||
files_file="$(mktemp -tp /tmp)"
|
|
||||||
ssh -F "$CONFIG_PATH" "$HOSTNAME" sh -s << EOF > "$files_file"
|
|
||||||
files="$(get_files)"
|
|
||||||
echo "\$files" | while read -r file; do
|
|
||||||
echo "\$file"
|
|
||||||
[ -e "\$file" ] && echo true || echo false
|
|
||||||
[ -e "\$file" ] && echo "\$(stat --format=%Y "\$file")" || echo
|
|
||||||
done
|
|
||||||
EOF
|
|
||||||
echo "$files_file"
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
_compute_version() {
|
|
||||||
echo "["
|
|
||||||
last_line=
|
|
||||||
line_file=
|
|
||||||
line_exists=
|
|
||||||
line_modify=
|
|
||||||
while read -r line; do
|
|
||||||
if [ -z "$line_file" ]; then
|
|
||||||
line_file="$line"
|
|
||||||
elif [ -z "$line_exists" ]; then
|
|
||||||
line_exists="$line"
|
|
||||||
elif [ -z "$line_modify" ]; then
|
|
||||||
line_modify="$line"
|
|
||||||
else
|
|
||||||
if "$line_exists"; then
|
|
||||||
echo '{"path":' "\"$line_file\"," '"modify":' "$line_modify" '}',
|
|
||||||
fi
|
|
||||||
line_file="$line"
|
|
||||||
line_exists=
|
|
||||||
line_modify=
|
|
||||||
fi
|
|
||||||
done < "$1"
|
|
||||||
if [ -n "$line_file" ] && [ -n "$line_exists" ] && [ -n "$line_modify" ] && "$line_exists"; then
|
|
||||||
echo '{"path":' "\"$line_file\"," '"modify":' "$line_modify" '}'
|
|
||||||
fi
|
|
||||||
echo "]"
|
|
||||||
}
|
|
||||||
|
|
||||||
compute_version() {
|
|
||||||
_compute_version "$@" | jq -r tostring
|
|
||||||
}
|
|
||||||
|
|
||||||
compute_version "$(fetch_file_infos)"
|
|
||||||
|
|
58
common
58
common
|
@ -59,3 +59,61 @@ get_version() {
|
||||||
get_files() {
|
get_files() {
|
||||||
jq -r '.source.files?[]' < "$INPUT_PATH"
|
jq -r '.source.files?[]' < "$INPUT_PATH"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get_command() {
|
||||||
|
jq -r '.params.command?' < "$INPUT_PATH"
|
||||||
|
}
|
||||||
|
|
||||||
|
get_directory() {
|
||||||
|
jq -r '.params.directory // "/"' < "$INPUT_PATH"
|
||||||
|
}
|
||||||
|
|
||||||
|
get_workdir() {
|
||||||
|
jq -r '.params.workdir // "$HOME"' < "$INPUT_PATH"
|
||||||
|
}
|
||||||
|
|
||||||
|
fetch_file_infos() {
|
||||||
|
files_file="$(mktemp -tp /tmp)"
|
||||||
|
ssh -F "$CONFIG_PATH" "$HOSTNAME" sh -s << EOF > "$files_file"
|
||||||
|
files="$("$1")"
|
||||||
|
echo "\$files" | while read -r file; do
|
||||||
|
echo "\$file"
|
||||||
|
[ -e "\$file" ] && echo true || echo false
|
||||||
|
[ -e "\$file" ] && echo "\$(stat --format=%Y "\$file")" || echo
|
||||||
|
done
|
||||||
|
EOF
|
||||||
|
echo "$files_file"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
_compute_version() {
|
||||||
|
echo "["
|
||||||
|
last_line=
|
||||||
|
line_file=
|
||||||
|
line_exists=
|
||||||
|
line_modify=
|
||||||
|
while read -r line; do
|
||||||
|
if [ -z "$line_file" ]; then
|
||||||
|
line_file="$line"
|
||||||
|
elif [ -z "$line_exists" ]; then
|
||||||
|
line_exists="$line"
|
||||||
|
elif [ -z "$line_modify" ]; then
|
||||||
|
line_modify="$line"
|
||||||
|
else
|
||||||
|
if "$line_exists"; then
|
||||||
|
echo '{"path":' "\"$line_file\"," '"modify":' "$line_modify" '}',
|
||||||
|
fi
|
||||||
|
line_file="$line"
|
||||||
|
line_exists=
|
||||||
|
line_modify=
|
||||||
|
fi
|
||||||
|
done < "$1"
|
||||||
|
if [ -n "$line_file" ] && [ -n "$line_exists" ] && [ -n "$line_modify" ] && "$line_exists"; then
|
||||||
|
echo '{"path":' "\"$line_file\"," '"modify":' "$line_modify" '}'
|
||||||
|
fi
|
||||||
|
echo "]"
|
||||||
|
}
|
||||||
|
|
||||||
|
compute_version() {
|
||||||
|
_compute_version "$@" | jq -r tostring
|
||||||
|
}
|
||||||
|
|
36
out
36
out
|
@ -1 +1,37 @@
|
||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
. ./common
|
||||||
|
|
||||||
|
cd "$1"
|
||||||
|
files="$(find . | sed -e '/^\.$/d' -e 's|^./||')"
|
||||||
|
tarfile="$(mktemp -tp /tmp)"
|
||||||
|
remote_tarfile="$(mktemp -u)"
|
||||||
|
tar -cf "$tarfile" ./*
|
||||||
|
scp -F "$CONFIG_PATH" "$tarfile" "$HOSTNAME:$remote_tarfile"
|
||||||
|
ssh -F "$CONFIG_PATH" "$HOSTNAME" sh -s << EOF
|
||||||
|
set -e
|
||||||
|
cd "$(get_directory)"
|
||||||
|
tar xf "$remote_tarfile"
|
||||||
|
rm "$remote_tarfile"
|
||||||
|
if [ "$(get_command)" = "null" ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
cd "$(get_workdir)"
|
||||||
|
$(get_command | jq .[] | tr '\n"' " '") >&2
|
||||||
|
# echo "\$command_log" >&2
|
||||||
|
EOF
|
||||||
|
|
||||||
|
get_files_for_new_version() {
|
||||||
|
echo "$files" | xargs printf "$(get_directory)/%s\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
version="$(compute_version "$(fetch_file_infos get_files_for_new_version)")"
|
||||||
|
|
||||||
|
jq -r tostring << EOF
|
||||||
|
{
|
||||||
|
"version": $version
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
Loading…
Reference in a new issue