summarylogtreecommitdiffstats
path: root/autoUpdate
blob: 41ce9add65ab26c9c337d77b0af2f348ab4f9474 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#!/bin/bash
# A script for automatically updating the kibana AUR package by checking the project's releases on github.
# Improved for non-source building and support for different checksum methods.
# Jared Johnstone
# Sun 25 Feb 2024 18:47:34 AEDT

set -o pipefail
files=(PKGBUILD .SRCINFO)

. PKGBUILD || { echo "This script must be placed and run in the AUR package dir" ; exit 1;}

githubProject="elastic/${_relpkgname}"
hashtool=$(grep -Po '.*sum(?=s=)' PKGBUILD)
targetHashes=$(grep -Po '.*sums(?==)' PKGBUILD)
declare -n checksums=${targetHashes}

if [ -z "${hashtool}" ]
then
  echo "Failed to determine hash tool used for this package."
  exit 1
elif [ -z "${checksums}" ]
then
  echo "Failed to get checksums for this package."
  exit 1
fi

if ! git status >/dev/null 2>&1
then
  echo "This script is not suitable for running outside of a git repository."
  exit 1
fi

githubBaseurl="https://api.github.com/repos"
githubLatestRelease="$(curl -Ss ${githubBaseurl}/${githubProject}/releases/latest)" || { echo "Failed fetching latest release info from github" ; exit 1;}
latestRel=$(jq -r .tag_name <<< ${githubLatestRelease} | tr -d [a-z]) || { echo "Failed to read latest version" ; exit 1;}

# Check if latest tag is equal or greater to the current version
compareString="(pkgver=${pkgver}, latestRel=${latestRel})"
if printf '%s\n%s\n' "${latestRel}" "${pkgver}" | sort --check=quiet --version-sort 
then
  echo "No newer version detected. ${compareString}"
  exit
else
  echo "New version detected. ${compareString}"
  echo "Downloading latest files to generate replacement hashes with ${hashtool}..."

  for sourceIndex in ${!source[*]}
  do
    oldChecksum="${checksums[${sourceIndex}]}"
    echo old checksum is $oldChecksum
    if [[ ${oldChecksum} == SKIP ]]
    then
      continue
    fi
    currentSource=${source[${sourceIndex}]/${pkgver}/${latestRel}}
    echo "Getting: ${currentSource}"
    if [[ ${currentSource} =~ ^http ]]
    then
      echo "Fetching $(basename ${currentSource})"
      #newChecksum="$(curl -L --progress-meter "${currentSource/${pkgver}/${latestRel}}" | ${hashtool} | cut -f1 -d' ')" || { echo "Failed to download source for checksumming: ${source}" ; exit 1;}
      newChecksum="$(cat kibana-8.12.2-linux-x86_64.tar.gz | ${hashtool} | cut -f1 -d' ')" || { echo "Failed to download source for checksumming: ${source}" ; exit 1;}
      echo new checksum is: ${newChecksum}

    # Update version vars, B2sums and pkgrel
  sed -i -E -e "s/${pkgver//./\\.}/${latestRel}/g" \
            -e "s/${oldChecksum}/${newChecksum}/g" \
            -e 's/pkgrel=[0-9]+/pkgrel=1/g' \
            -e 's/pkgrel = [0-9]+/pkgrel = 1/g' \
            ${files[@]}
    fi
  done

  makepkg --verifysource || { echo "Unable to verify sources, please verify checksums."; exit 1;}
  git add ${files[@]}
  echo 'Committing...'
  git commit -m "Version bump to ${latestRel}"
  echo 'Pushing...'
  git push || { echo "Failed to push version bump." ; exit 1;}
fi