80 lines
2.5 KiB
Bash
80 lines
2.5 KiB
Bash
|
# Copyright 2020-2020 Gentoo Foundation
|
||
|
# Distributed under the terms of the GNU General Public License v2
|
||
|
|
||
|
# @ECLASS: gog.eclass
|
||
|
# @MAINTAINER:
|
||
|
# moog621@gmail.com
|
||
|
# @AUTHOR:
|
||
|
# moog621@gmail.com
|
||
|
# @SUPPORTED_EAPIS: 7
|
||
|
# @BLURB: Functions for interacting with GOG API.
|
||
|
# @DESCRIPTION:
|
||
|
# Sets GOG_GAME_* variables for use with games that can be obtained from GOG.
|
||
|
# Additionally, some games are not available on all platforms. ebuilds are
|
||
|
# allowed to prefer a platform that works best with the host platform.
|
||
|
# However, GOG probably supplies only x86 binaries for Linux, Mac and Windows.
|
||
|
# It is up to the ebuild to enable and offer other alternate avenues to support
|
||
|
# a particular game.
|
||
|
|
||
|
# @ECLASS-VARIABLE: GOG_GAME_NAME
|
||
|
# @DESCRIPTION:
|
||
|
# Name of the game as it appears in lgogdownloader list.
|
||
|
: ${GOG_GAME_NAME:=}
|
||
|
|
||
|
# @ECLASS-VARIABLE: GOG_GAME_L10N
|
||
|
# @DESCRIPTION:
|
||
|
# Languages available for the game.
|
||
|
: ${GOG_GAME_L10N:=()}
|
||
|
|
||
|
# @ECLASS-VARIABLE: GOG_GAME_PLATFORM
|
||
|
# @DESCRIPTION:
|
||
|
# This choice specifies which binaries, for which platform, will be downloaded from GOG.
|
||
|
# Sometimes, this can be irrelevant, as unofficial platform binaries may come from 3rd
|
||
|
# party sources.
|
||
|
: ${GOG_GAME_PLATFORM:=}
|
||
|
|
||
|
# @ECLASS-VARIABLE: GOG_GAME_INSTALLER
|
||
|
# @DESCRIPTION:
|
||
|
# Filename of the installer. There can be many, as some games support each language
|
||
|
# through separate installers.
|
||
|
: ${GOG_GAME_INSTALLER:=()}
|
||
|
|
||
|
RESTRICT="network-sandbox"
|
||
|
LICENSE="GOG_EULA"
|
||
|
BDEPEND+="
|
||
|
games-util/lgogdownloader[portage]
|
||
|
app-arch/innoextract"
|
||
|
|
||
|
gog_sanity_check() {
|
||
|
if [ $(echo ${FEATURES} | tr ' ' '\n' | grep -c network\-sandbox) -ne 0 ]; then
|
||
|
die "This ebuild requires network-sandbox to be removed from FEATURES."
|
||
|
fi
|
||
|
portageq envvar GOG_CONFIG >/dev/null 2>/dev/null
|
||
|
if [ $? -ne 0 ]; then
|
||
|
die "Please define GOG_CONFIG in /etc/portage/make.conf as the output of export_gog_to_portage."
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
gog_initialize() {
|
||
|
gog_sanity_check
|
||
|
mkdir -p ~/.config
|
||
|
echo ${GOG_CONFIG} | base64 -d | tar -Jxf - -C ~
|
||
|
}
|
||
|
|
||
|
# @FUNCTION: gog_download_installer
|
||
|
# @DESCRIPTION:
|
||
|
# Downloads the offline installer of a specified game, with specified language, for the specified platform.
|
||
|
gog_download_installer() {
|
||
|
lgogdownloader --no-platform-detection --download --game ${GOG_GAME_NAME} --exclude extras --language ${GOG_GAME_L10N} --platform ${GOG_GAME_PLATFORM} >/dev/null 2>/dev/null
|
||
|
if [ $? -ne 0 ]; then
|
||
|
die "lgogdownloader failed. Please make sure it works."
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
# @FUNCTION: gog_extract_installer
|
||
|
# @DESCRIPTION:
|
||
|
# Extracts the installer of specified filename.
|
||
|
gog_extract_installer() {
|
||
|
innoextract -e ${GOG_GAME_INSTALLER}
|
||
|
}
|