07070100000000000081a400000000000000000000000169aaa2e70000001e000000000000000000000000000000000000000b00000000.gitignore    .osc
node_modules.sums
_build*  07070100000001000081ed00000000000000000000000169aaa2e800000cfb000000000000000000000000000000000000001200000000update_version.sh #!/usr/bin/bash

set -e

curVersion=$(grep Version: cockpit.spec | sed -e 's,^\(\s*Version:\s*\)\(.*\)\s*$,\2,')

if [[ ! "$curVersion" =~ ^[0-9]+(.[0-9]+)?$ ]]; then
  echo "Error: curVersion is not a valid integer"
  exit 1
fi

if [[ "$curVersion" =~ '.' ]]; then
    curMajor=$(echo ${curVersion} | cut -d'.' -f1)
    curMinor=$(echo ${curVersion} | cut -d'.' -f2)
else
    curMajor=$curVersion
    curMinor='0'
fi

###
### Fetch latest soruces
###

# fetch latest theme
if [ ! -d cockpit-suse-theme ]; then
    git clone https://github.com/dgdavid/cockpit-suse-theme.git
else
	git -C cockpit-suse-theme pull --ff-only
fi
git -C cockpit-suse-theme archive --format=tar --prefix=cockpit-suse-theme/ -o ../cockpit-suse-theme.tar HEAD

# fetch latest cockpit
if [ ! -d cockpit ]; then
	git clone https://github.com/cockpit-project/cockpit.git cockpit
else
    git -C cockpit checkout main
	git -C cockpit fetch
fi

newVersion=$(git -C cockpit tag | grep '^[0-9.]\+$' | sort -rn | head -1)

if [[ ! "$newVersion" =~ ^[0-9]+(.[0-9]+)?$ ]]; then
  echo "Error: newVersion cannot be determined"
  exit 1
fi

if [[ "$newVersion" =~ '.' ]]; then
    newMajor=$(echo ${newVersion} | cut -d'.' -f1)
    newMinor=$(echo ${newVersion} | cut -d'.' -f2)
else
    newMajor=$newVersion
    newMinor='0'
fi

if [ "$curMajor" -gt "$newMajor" ]; then
	echo "Nothing to do."
	exit 0
elif [[ "$curMajor" -eq "$newMajor"  && "$curMinor" -ge "$newMinor" ]]; then
	echo "Nothing to do."
	exit 0
fi

###
### UPDATE
###
git -C cockpit checkout $newVersion
pushd $PWD
cd cockpit
npm install --include optional
rm -rf node_modules
popd
cp "cockpit/package-lock.json" .
# update node_modules
osc service mr
rm --verbose *.tgz || true

# # initialize all submodules
git -C cockpit submodule update --init --depth 1
# remove node_modules and tests
git -C cockpit submodule deinit node_modules test/reference

# update tarballs
CockpitPath="cockpit-$newVersion/"
MainTarball="cockpit.tar"
D=$PWD

git -C cockpit archive --format=tar --prefix=$CockpitPath -o "$D/$MainTarball" $newVersion

# append each initialized submodule
git -C cockpit submodule foreach "n=\$(basename \$sm_path)
git archive --format=tar --prefix=${CockpitPath}\${sm_path}/ -o \"$D/\$n.tar\" HEAD
"
SubmoduleTarballs=$(git -C cockpit submodule foreach --quiet "echo \$(basename \$sm_path.tar)")

# need to unpack and pack again, because OBS can't deal with concatenated tarballs :(
rm -f "cockpit-$newVersion.tar"
rm -rf cockpit-$newVersion/
for i in $MainTarball $SubmoduleTarballs; do
	tar xf $i
done
rm $MainTarball $SubmoduleTarballs
tar zcf cockpit-$newVersion.tar.gz cockpit-$newVersion/

echo "Archive created: cockpit-$newVersion.tar"

# Update spec file
git -C cockpit remote show suse || git -C cockpit remote add suse git@github.com:openSUSE/cockpit.git
git -C cockpit fetch suse opensuse-$curVersion
git -C cockpit checkout -b opensuse-$newVersion suse/opensuse-$curVersion
git -C cockpit rebase -i $newVersion || true

echo "Don't forget to:"
echo "  1. finish rebase"
echo "  2. push new branch"
echo "  3. update cockpit.spec, and"
echo "  4. set new default branch on GitHub"

# Updating version in spec file
sed -i -e "s,^\(\s*Version:\s*\)\(.*\)\s*$,\1${newVersion}," cockpit/tools/cockpit.spec
git rm cockpit-$curVersion.tar.gz
git add cockpit-$newVersion.tar.gz
 07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000b00000000TRAILER!!!    