File PKGBUILD of Package google-cloud-cli

# Maintainer: Josef Vybíhal <josef.vybihal@gmail.com>
# Contributor: Polarian <polarian@polarian.dev>
# Contributor: Benjamin Denhartog <ben@sudoforge.com>
# Contributor: Mansour Behabadi <mansour@oxplot.com>
# Contributor: Troy Engel <troyengel+arch@gmail.com>
# Contributor: Geoff Hill <geoff@geoffhill.org>
# Contributor: Sebastien Bariteau <numkem@numkem.org>
# Contributor: Justin Dray <justin@dray.be>
# Contributor: tobbik

_extracted_name='google-cloud-sdk'
pkgbase='google-cloud-cli'
pkgname=(
  'google-cloud-cli'
  'google-cloud-cli-bq'
  'google-cloud-cli-gsutil'
  'google-cloud-cli-bundled-python3-unix'
  'google-cloud-cli-component-gke-gcloud-auth-plugin'
)

pkgver=552.0.0
pkgrel=1
pkgdesc="A core set of command-line tools for the Google Cloud Platform. Includes only gcloud core (with beta and alpha commands), gcloud-crc32c and man pages"
url="https://cloud.google.com/cli/"
license=('Apache-2.0')
arch=('x86_64' 'aarch64')
depends=('python>=3.9')
makedepends=('jq')
options=('!strip' 'staticlibs' '!zipman' '!debug' '!lto')

export _force_budled_python=false
export _package_bundled_python=false

source=(
  "$pkgbase.sh"
  "$pkgbase.install"
"https://dl.google.com/dl/cloudsdk/release/downloads/for_packagers/linux/${pkgbase}_${pkgver}.orig_amd64.tar.gz")

sha256sums=('6e88b535c020b0f28c986fdb66918f8c07e4d337e813b77ec2068068f03457f8'
            '6ac95bcc5afa06e9c1e3bd402ecbe1a2092b963d70a8f314215dd4be27e16fc6'
'cd12950b231313cbbb984dc586e3f639958803845b8e4bb03e517587107a772d')
prepare() {
  cd "$_extracted_name"

  if [ "$_package_bundled_python" = false ]; then
    # relax forced 'core' dependency on bundled-python3-unix
    sed -i '/bundled-python3-unix/d' .install/core*.snapshot.json
    if ls .install/bundled-python3-* 1> /dev/null 2>&1; then
      mkdir -p "$srcdir/bundledpython/.install"
      mv platform/bundledpythonunix     $srcdir/bundledpython/
      mv .install/bundled-python3-unix* $srcdir/bundledpython/.install/
    fi
  fi

  find "$srcdir" -name '__pycache__' -type d -exec rm -rf {} +
}

package_google-cloud-cli() {
  # Conflict the old package name to force migration
  conflicts=('google-cloud-sdk')
  provides=('google-cloud-sdk' 'google-cloud-cli-alpha' 'google-cloud-cli-beta')
  replaces=('google-cloud-sdk')
  optdepends=(
    'google-cloud-cli-bq: BigQuery Command Line Tool'
    'google-cloud-cli-gsutil: Cloud Storage Command Line Tool. Not the recommended CLI for Cloud Storage')
  install=$pkgbase.install
  backup=( 'etc/profile.d/google-cloud-cli.sh' )

  sdir="${srcdir}/${_extracted_name}"
  ddir="${pkgdir}/opt/${pkgbase}"

  # _install_path="${pkgdir}/opt/${pkgbase}"
  _bundled_py_bin="${ddir:${#pkgdir}}/platform/bundledpythonunix/bin/python3"

  install -d -m 0755 \
    "${pkgdir}/opt" \
    "${pkgdir}/etc/bash_completion.d" \
    "${pkgdir}/usr/share/zsh/site-functions"

  cp -r "${sdir}" "${ddir}"

  # remove components
  rm -rf "$ddir/platform/gsutil"
  rm -f  "$ddir/.install/gsutil"*
  rm -f  "$ddir/bin/gsutil"
  rm -f  "$ddir/data/cli/gsutil.json"

  rm -rf "$ddir/platform/bq"
  rm -f  "$ddir/.install/bq"*
  rm -f  "$ddir/bin/bq"
  rm -f  "$ddir/data/cli/bq.json"

  install -D -m 0644 "${srcdir}/${source[0]}" \
    "${pkgdir}/etc/profile.d/google-cloud-cli.sh"

  if [ "$_force_budled_python" = true ]; then
    { echo "export CLOUDSDK_PYTHON=${_bundled_py_bin}"
      echo "export CLOUDSDK_GSUTIL_PYTHON=${_bundled_py_bin}"
      echo "export CLOUDSDK_BQ_PYTHON=${_bundled_py_bin}"
    } >> "${pkgdir}/etc/profile.d/google-cloud-cli.sh"
  fi

  ln -rsT "${ddir}/completion.bash.inc" \
    "${pkgdir}/etc/bash_completion.d/google-cloud-cli"

  for cmd in gcloud gsutil bq; do
    ln -rsT "${ddir}/completion.zsh.inc" \
      "${pkgdir}/usr/share/zsh/site-functions/_${cmd}"
  done

  install -d -m 0755 "${pkgdir}/usr/bin"
  for bin in gcloud \
             gcloud-crc32c \
             docker-credential-gcloud \
             git-credential-gcloud.sh \
             ; do
    ln -rsT "${ddir}/bin/${bin}" \
      "${pkgdir}/usr/bin/${bin}"
  done

  install -d -m 0755 "${pkgdir}/usr/share"
  mv -f "${pkgdir}/opt/${pkgbase}/help/man" "${pkgdir}/usr/share/"
  rm -rf "$ddir"/{deb,rpm,help}
}

_package_helper() {
  # local -r s=$1
  # local -r p=$2
  # local -r c=$3
  sdir="${srcdir}/${_extracted_name}"
  ddir="${pkgdir}/opt/${pkgbase}"
  install -d -m 0755 "${ddir}/"{bin,.install,platform}
  install -d -m 0755 "${pkgdir}/usr/bin"
  cp -r              "${sdir}/platform/${c}"         "${ddir}/platform/"
  install -D -m 0644 "${sdir}/.install/${c}"*     -t "${ddir}/.install"
  install -D -m 0755 "${sdir}/bin/${c}"              "${ddir}/bin/${c}"
  install -D -m 0644 "${sdir}/data/cli/${c}.json" -t "${ddir}/data/cli"
  ln -rsT "${ddir}/bin/${c}" \
        "${pkgdir}/usr/bin/${c}"
}

package_google-cloud-cli-bq() {
  pkgdesc='BigQuery Command Line Tool'
  provides=('google-cloud-cli-bq')
  c=${pkgname#google-cloud-cli-} # component
  _package_helper
}

# pkgver_google-cloud-cli-gsutil() {
#   cat "${sdir}/platform/gsutil/VERSION"
# }

package_google-cloud-cli-gsutil() {
  pkgdesc='Cloud Storage Command Line Tool: gsutil is not the recommended CLI for Cloud Storage'
  provides=('google-cloud-cli-gsutil' 'gsutil')
  conflicts=('gsutil')
  #depends+=('google-cloud-cli-bundled-python3-unix')
  optdepends=("python-crcmod: verify the integrity of GCS object contents"
  "google-cloud-cli-bundled-python3-unix: bundled python to use if system python is not compatible")
  c=${pkgname#google-cloud-cli-} # component
  backup=( "etc/profile.d/google-cloud-cli-gsutil.sh" )
  _package_helper

  # _bundled_py_bin="${ddir:${#pkgdir}}/platform/bundledpythonunix/bin/python3"
  # install -d -m 0755 "${pkgdir}/etc/profile.d"
  # echo "export CLOUDSDK_GSUTIL_PYTHON=${_bundled_py_bin}" >> \
  # "${pkgdir}/etc/profile.d/google-cloud-cli-${c}.sh"
}

package_google-cloud-cli-bundled-python3-unix() {
  arch=('x86_64')
  pkgdesc='gcloud Bundled Python 3.12'
  ddir="${pkgdir}/opt/${pkgbase}"
  c=${pkgname#google-cloud-cli-} # component
  install -d -m 0755 "${ddir}"/{.install,platform} && cd "${ddir}"
  mv "$srcdir"/bundledpython/bundledpythonunix platform/
  mv "$srcdir"/bundledpython/.install/"${c}"*  .install/
}

package_google-cloud-cli-component-gke-gcloud-auth-plugin() {
  pkgdesc='gke-gcloud-auth-plugin'
  provides=('google-cloud-cli-gke-gcloud-auth-plugin')
  conflicts=('google-cloud-cli-gke-gcloud-auth-plugin')
  c=${pkgname#google-cloud-cli-component-}
  ddir="${pkgdir}/opt/${pkgbase}"
  install -d -m 0755 "${ddir}/"{.install,bin} "${pkgdir}/usr/bin"

  cd "$_extracted_name"

  # allow updater for component
  cat <<< "$(jq '.disable_updater = false' < lib/googlecloudsdk/core/config.json)" > lib/googlecloudsdk/core/config.json

  bin/gcloud -q components install "${c}" > /dev/null 2>&1

  mv .install/"${c}"*  "${ddir}/.install"
  mv bin/"${c}"*       "${ddir}/bin"
  ln -rsT "${ddir}/bin/${c}" \
        "${pkgdir}/usr/bin/${c}"

  # turn off updater
  cat <<< "$(jq '.disable_updater = true' < lib/googlecloudsdk/core/config.json)" > lib/googlecloudsdk/core/config.json

}
openSUSE Build Service is sponsored by