#!/usr/bin/env bash
#===============================================================================
#
# DIRECTORY:
# ---
#
# FILE:
# ./os_plugin.sh
#
# USAGE:
# . os_plugin.sh
# OR
# source os_plugin.sh
#
# DESCRIPTION:
# Operating system plugin (library) to generate content with simple template engine.
#
# BUGS:
# ---
#
# TESTS:
# - shellcheck -s bash -e SC2034,SC2016 ./os_plugin.sh
# - shellcheck -s ksh -e SC2034,SC2016 ./os_plugin.sh
# - shellcheck -s dash -e SC2034,SC2016 ./os_plugin.sh
#
# AUTHOR:
# Patrick Neumann, patrick@neumannsland.de
#
# COAUTHOR(S):
# Odin Heitmann, odin.heitmann@gmail.com
#
# COMPANY:
# (privately)
#
# VERSION:
# 1.0
#
# LINK TO THE MOST CURRENT VERSION:
# (Sorry, we bet, I'm not allowed to publish it over GitHub!)
#
# CREATED:
# 2018-06-01
#
# COPYRIGHT (C):
# 2018 - Patrick Neumann & Odin Heitmann
#
# LICENSE:
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# WARRANTY:
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see lockdownd.log not found
"
error "lockdownd.log not found"
readonly BUILD_NUMBER="unknown"
readonly OS_VERSION="unknown"
else
readonly LOCKDOWND_SOURCE="${LOCKDOWND_LOG/${IOS_BACKUP}/\/private\/var}
"
${BIN_CP} "${LOCKDOWND_LOG}" "${FOLDER}/"
# SC2016: shellcheck fails if awk/sed is used!
readonly BUILD_NUMBER="$( ${BIN_AWK} '/Build=/ { print $NF; }' "${FOLDER}/lockdownd.log" | ${BIN_HEAD} -n 1 )"
[ -f "$( ${BIN_DIRNAME} "${0}" )/lib/iphone_os_map.tsv" ] || error_exit "iphone_os_map.tsv not found" 201
OS_VERSION="$( ${BIN_GREP} --fixed-strings --word-regexp "${BUILD_NUMBER}" $( ${BIN_DIRNAME} "${0}" )/lib/iphone_os_map.tsv \
| ${BIN_CUT} -f 1 )"
[ -z "${OS_VERSION}" ] && readonly OS_VERSION="unknown"
fi
#--- next source ---
# EVENTUALLY in iTunes Backup!?
# There are three com.saurik.Cydia named folders:
# - mobile/Library/Caches/Snapshots/com.saurik.Cydia
# - mobile/Library/Caches/Snapshots/com.saurik.Cydia/com.saurik.Cydia
# - mobile/Library/Caches/com.saurik.Cydia
CACHE_CYDIA="$( ${BIN_FIND} "${IOS_BACKUP}" -type d -path "*Caches/com.saurik.Cydia" )"
JAILBREAK="no"
if [ -n "${CACHE_CYDIA}" ] ; then
if [ -n "$( ${BIN_LS} "${CACHE_CYDIA}" )" ] ; then
readonly JAILBREAK="yes"
fi
fi
[ "${JAILBREAK}" = "no" ] && readonly CACHE_CYDIA="com.saurik.Cydia not found"
if [ "${DEBUG}" = "on" ] ; then
${BIN_PRINTF} "OS_VERSION: %s\\n" "${OS_VERSION}" 1>&2
${BIN_PRINTF} "BUILD_NUMBER: %s\\n" "${BUILD_NUMBER}" 1>&2
${BIN_PRINTF} "JAILBREAK: %s\\n" "${JAILBREAK}" 1>&2
fi
}
#-------------------------------------------------------------------------------
# Partial template for hardware information for the simple template engine.
#-------------------------------------------------------------------------------
# SC2034: all "unused" vars are verified!
OS_INFORMATION=$( ${BIN_CAT} <<'EOF'
${CACHE_CYDIA/${IOS_BACKUP}/\/private\/var}
iOS Version: | ${OS_VERSION} |
Build Number: | ${BUILD_NUMBER} |
Jailbreak detected: | ${JAILBREAK} |