diff --git a/installJRMC b/installJRMC index daa79fa..a7655ad 100755 --- a/installJRMC +++ b/installJRMC @@ -47,7 +47,7 @@ OPTIONS --outputdir PATH Generate rpmbuild output in this directory (Default: $PWD/outputdir) --mcversion VERSION - Build or install a specific version (Default: scrape the latest version from Interact) + Build or install a specific version (Default: install the latest version) --restorefile RESTOREFILE Restore file location for registration (Default: skip registration) --betapass PASSWORD @@ -604,26 +604,28 @@ EOF debug "Running: ${FUNCNAME[0]}" - echo "Installing latest JRiver Media Center from repo..." + echo "Installing JRiver Media Center from repo..." local _mcpkg - # Add repositories to OS-specific package managers - if [[ "$ID" =~ ^(fedora|centos)$ ]]; then - - _bash_cmd 'cat <<-EOF > /etc/yum.repos.d/jriver.repo + # Add repository files + _addRepo() { + # Add repositories to OS-specific package managers + if [[ "$ID" =~ ^(fedora|centos)$ ]]; then + _bash_cmd 'cat <<-EOF > /etc/yum.repos.d/jriver.repo [jriver] name=JRiver Media Center repo by BryanC baseurl=https://repos.bryanroessler.com/jriver gpgcheck=0 EOF' - _mcpkg="MediaCenter" - elif [[ "$ID" =~ ^(ubuntu|debian)$ ]]; then - wget -q "http://dist.jriver.com/mediacenter@jriver.com.gpg.key" -O- | _ifSudo apt-key add - > /dev/null 2>&1 - _bash_cmd 'cat <<-EOF > /etc/apt/sources.list.d/jriver.list + elif [[ "$ID" =~ ^(ubuntu|debian)$ ]]; then + wget -q "http://dist.jriver.com/mediacenter@jriver.com.gpg.key" -O- | _ifSudo apt-key add - > /dev/null 2>&1 + _bash_cmd 'cat <<-EOF > /etc/apt/sources.list.d/jriver.list deb [arch=amd64,i386,armhf] http://dist.jriver.com/latest/mediacenter/ jessie main EOF' - fi + fi + } + _addRepo # Update package list if ! _pkg_update > /dev/null 2>&1; then @@ -631,25 +633,50 @@ EOF' exit 1 fi - # Find latest mversion to install on Ubuntu/Debian - if [[ "$ID" =~ ^(ubuntu|debian)$ ]]; then - # Try parsing the latest mediacenter?? version from the repo - if _mcpkg=$(apt-get install mediacenter?? -s -q0 | grep "selecting" | tail -1| awk '{print $3}'); then - _mcpkg="${_mcpkg%\'}" - _mcpkg="${_mcpkg#\'}" - fi - # If that fails, fall back to scraping Interact - if ! [[ "$_mcpkg" =~ ^[0-9][0-9]\.[0-9]\.[0-9]\+$ ]]; then + # If user specifies a version, use that + if [[ -n $_mcversion ]]; then + _setVersion + _specific_version="$_mcversion" + fi + + # Fedora/CentOS use a universal package name -- easy + if [[ "$ID" =~ ^(fedora|centos)$ ]]; then + _mcpkg="MediaCenter" + fi + + # Ubuntu/Debian incorporate the mversion into the package name -- more fun! + if [[ "$ID" =~ ^(ubuntu|debian)$ ]] && [[ -z $_mversion ]]; then + # Try parsing the latest mversion from the repo + _mcpkg=$(apt-get install mediacenter?? -s -q0 | grep "selecting" | tail -1| awk '{print $3}') + _mcpkg="${_mcpkg%\'}" + _mcpkg="${_mcpkg#\'}" + # If the version is missing or bad then fall back to scraping Interact + if [[ ! "$_mcpkg" =~ ^mediacenter[0-9][0-9]$ ]]; then _setVersion _mcpkg="mediacenter$_mversion" fi fi - - if [[ -n $_debug ]]; then - _installPackage "$_mcpkg" + if [[ -n $_specific_version ]]; then + if [[ "$ID" =~ ^(fedora|centos)$ ]]; then + if [[ -n $_debug ]]; then + _installPackage "$_mcpkg-$_mcversion" + else + _installPackage "$_mcpkg-$_mcversion" > /dev/null 2>&1 + fi + elif [[ "$ID" =~ ^(ubuntu|debian)$ ]]; then + if [[ -n $_debug ]]; then + _installPackage "$_mcpkg=$_mcversion" + else + _installPackage "$_mcpkg=$_mcversion" > /dev/null 2>&1 + fi + fi else - _installPackage "$_mcpkg" > /dev/null 2>&1 + if [[ -n $_debug ]]; then + _installPackage "$_mcpkg" + else + _installPackage "$_mcpkg" > /dev/null 2>&1 + fi fi # shellcheck disable=SC2181