RetroDECK/automation_tools/flathub_push_main.sh

100 lines
3.2 KiB
Bash
Raw Normal View History

#!/bin/bash
# EDITABLES:
#rd_branch=${GITHUB_REF_NAME} # should be main
if [ -z "${GITHUB_WORKSPACE}" ]; then
GITHUB_WORKSPACE="."
fi
gits_folder="${GITHUB_WORKSPACE}/tmp/gits" # without last /
rd_branch="main"
flathub_target_repo='flathub/net.retrodeck.retrodeck'
retrodeck_repo='RetroDECK/RetroDECK'
artifacts_sha_link="https://artifacts.retrodeck.net/artifacts/RetroDECK-Artifact.sha"
artifacts_link="https://artifacts.retrodeck.net/artifacts/RetroDECK-Artifact.tar.gz"
mkdir -vp "$gits_folder"
cd "$gits_folder" || exit 1
if [ -d flathub ]; then
rm -rf flathub
fi
if [ -d flathub ]; then
rm -rf RetroDECK
fi
git clone --depth=1 --recursive "https://github.com/$flathub_target_repo.git" flathub
git clone --depth=1 --recursive "https://github.com/$retrodeck_repo.git" RetroDECK
relname=$(curl -s https://api.github.com/repos/$retrodeck_repo/releases | jq -r '[.[] | select(.prerelease == true)][0].tag_name // empty')
if [ -z "$relname" ]; then
relname=$(curl -s https://api.github.com/repos/$retrodeck_repo/releases/latest | jq -r .tag_name)
fi
echo "Using release: $relname"
cd "$gits_folder/RetroDECK" && echo "Moving in $gits_folder/RetroDECK" && git checkout "$rd_branch"
cd "$gits_folder/flathub" && echo "Moving in $gits_folder/flathub" || exit 1
git checkout -b "$relname"
echo "Current directory: $(pwd)"
ls -lah
git rm -rf *
git clean -fxd # restroing git index
# Copying only a few files as the others are cloned by git in retrodeck.sh
files_to_copy=('LICENSE' 'README.md' 'other_licenses.txt' 'net.retrodeck.retrodeck.yml' 'net.retrodeck.retrodeck.metainfo.xml')
for file in "${files_to_copy[@]}"; do
if ! cp -fv "$gits_folder/RetroDECK/$file" "$gits_folder/flathub"; then
echo "Warning: $file not found in $gits_folder/RetroDECK"
fi
done
cd "$gits_folder/flathub" && echo "Moving in $gits_folder/flathub" || exit 1
ls -lah
# Creating the manifest for flathub
manifest='net.retrodeck.retrodeck.yml'
sed -n '/cleanup/q;p' $gits_folder/RetroDECK/net.retrodeck.retrodeck.yml > $manifest
sed -i '/^[[:space:]]*#/d' $manifest
sed -i 's/[[:space:]]*#.*$//' $manifest
cat << EOF >> $manifest
modules:
- name: retrodeck
buildsystem: simple
build-commands:
- cp -rn files/* /app
sources:
- type: archive
url: $artifacts_link
sha256: $(curl -sL "$artifacts_sha_link")
EOF
cat << EOF >> flathub.json
{
"only-arches": ["x86_64"]
}
EOF
# If we are in a GitHub workflow...
if [ -n "${GITHUB_WORKFLOW}" ]; then
git config --global user.name "$GIT_NAME"
git config --global user.email "$GIT_MAIL"
git config --global credential.helper store
gh auth login
elif [[ -z $(git config --get user.name) || -z $(git config --get user.email) ]]; then
read -p "No git user.name set, please enter your name: " git_username
git config --local user.name "$git_username"
read -p "No git user.email set, please enter your email: " git_email
git config --local user.email "$git_email"
fi
git add .
git commit -m "Update RetroDECK to v$relname from RetroDECK/$rd_branch"
if [ -n "${GITHUB_WORKFLOW}" ]; then
git push --force "https://${GITHUB_TOKEN}@github.com/${flathub_target_repo}" "$relname"
else
git push --force "https://github.com/${flathub_target_repo}" "$relname"
fi