#!/bin/bash BUILD_DIR="$(realpath $(dirname "${BASH_SOURCE[0]}"))" REPO_DIR="$(dirname "${BUILD_DIR}")" INSTALL_ROOT="${BUILD_DIR}/install_root" PKGNAME='web-greeter' DESTDIR='' _handle_error() { LASTLINE="$1" LASTERR="$2" echo "${BASH_SOURCE[0]}: line ${LASTLINE}: exit status of last command: ${LASTERR}" exit 1 } clean_build_dir() { find "${BUILD_DIR}" -type f ! -path '*/ci/*' ! -name utils.sh -delete find "${BUILD_DIR}" -type d ! -name build ! -path '*/ci' -delete } combine_javascript_sources() { cd "${BUILD_DIR}/${PKGNAME}/resources/js" cat _vendor/moment-with-locales.min.js \ ThemeUtils.js \ bootstrap.js > bundle.js } do_build() { cd "${BUILD_DIR}" # Compile Resources (combine_javascript_sources \ && pyrcc5 -o ../../resources.py ../resources.qrc) # Create "Zip Application" (cd "${PKGNAME}" \ && mv greeter.py __main__.py \ && zip -rq ../"${PKGNAME}.zip" . -x '**__pycache__**' 'resources/*' \ && cd - >/dev/null \ && mkdir -p "${INSTALL_ROOT}"/usr/{bin,share} \ && echo '#!/bin/python' >> "${INSTALL_ROOT}/usr/bin/web-greeter" \ && cat web-greeter.zip >> "${INSTALL_ROOT}/usr/bin/web-greeter" \ && chmod +x "${INSTALL_ROOT}/usr/bin/web-greeter") } do_install() { cd "${BUILD_DIR}" mkdir -p \ "${INSTALL_ROOT}"/usr/share/{man/man1,metainfo,web-greeter,xgreeters} \ "${INSTALL_ROOT}/etc/lightdm" # Themes (cp -R "${REPO_DIR}/themes" "${INSTALL_ROOT}/usr/share/web-greeter" \ && cd "${INSTALL_ROOT}/usr/share/web-greeter" \ && mv themes/_vendor .) # Man Page cp "${REPO_DIR}/dist/${PKGNAME}.1" "${INSTALL_ROOT}/usr/share/man/man1" # Greeter Config cp "${REPO_DIR}/dist/${PKGNAME}.conf" "${INSTALL_ROOT}/etc/lightdm" # AppData File cp "${REPO_DIR}/dist/com.antergos.${PKGNAME}.appdata.xml" "${INSTALL_ROOT}/usr/share/metainfo" # Desktop File cp "${REPO_DIR}/dist/com.antergos.${PKGNAME}.desktop" "${INSTALL_ROOT}/usr/share/xgreeters" # Do Install! [[ -e "${DESTDIR}" ]] || mkdir -p "${DESTDIR}" cp -R "${INSTALL_ROOT}"/* "${DESTDIR}" # Fix Permissions chown -R "${SUDO_UID}:${SUDO_GID}" "${BUILD_DIR}" } do_success() { NO_COLOR=\x1b[0m SUCCESS_COLOR=\x1b[32;01m SUCCESS="${SUCCESS_COLOR}[SUCCESS!]${NO_COLOR}" echo "${SUCCESS}" } generate_pot_file() { REPO_ROOT="$(dirname "${REPO_DIR}")" xgettext --from-code UTF-8 -o "${REPO_ROOT}/po/lightdm-webkit2-greeter.pot" -d lightdm-webkit2-greeter "${REPO_ROOT}"/src/*.c } init_build_dir() { [[ -e "${BUILD_DIR}/web-greeter" ]] && return 0 cp -R "${REPO_DIR}/web-greeter" "${BUILD_DIR}" } set_config() { ( [[ -z "$1" ]] || [[ -z "$2" && -z "$3" ]] ) && return 1 local KEY VALUE KEY="$1" [[ '' != "$2" ]] && VALUE="$2" || VALUE="$3" sed -i "s|@${KEY}@|@${VALUE}@|g" "${BUILD_DIR}/web-greeter/whither.yml" } # Catch Command Errors trap '_handle_error ${LINENO} ${$?}' ERR cd "${REPO_DIR}/build" >/dev/null case "$1" in combine-js) combine_javascript_sources ;; clean) clean_build_dir ;; build) do_build ;; build-init) init_build_dir ;; gen-pot) generate_pot_file ;; install) DESTDIR="$2" do_install ;; set-config) set_config "$2" "$3" "$4" ;; esac