Browse Source

Update for MC28

bryan 2 years ago
parent
commit
16fb94124f
3 changed files with 103 additions and 61 deletions
  1. 1 0
      .gitignore
  2. 16 20
      README.md
  3. 86 41
      installJRMC

+ 1 - 0
.gitignore

@@ -3,3 +3,4 @@
 testing.sh
 .lock
 tests
+test-container.sh

+ 16 - 20
README.md

@@ -11,36 +11,32 @@ This program will install [JRiver Media Center](https://www.jriver.com/) and ass
 
 `installJRMC [--option [ARGUMENT]]`
 
-Running `installJRMC` without any options will install the latest version of JRiver Media Center from the official JRiver repository (Ubuntu/Debian) or my [unofficial repository](https://repos.bryanroessler.com/jriver/) (Fedora/CentOS) using the system package manager. If any other option is specified then the default install method will need to be specified using `--repo` or `--rpm`. This makes it possible to install services, containers, repos, etc. independent of Media Center.
+Running `installJRMC` without any options will install the latest version of JRiver Media Center from the official JRiver repository (Ubuntu/Debian) or my [unofficial repository](https://repos.bryanroessler.com/jriver/) (Fedora/CentOS) using the system package manager. If any other option is specified, then the default install method will need to be specified using `--install`. This makes it possible to install services, containers, repos, etc. independent of Media Center.
 
 ## Options
 
 Here is a list of possible options that can be passed to the script. You can always find the latest supported options by running `installJRMC --help`.
 
 ```text
---repo
-    Install JRiver Media Center from repository using package manager
-    DEB-based OSes: Official package repository
-    RPM-based OSes: BryanC's unofficial repository
---rpm
-     Build RPM from source DEB and install it
---rpmbuild
-    Build RPM from source DEB but do not install
---outputdir PATH
-    Generate rpmbuild output in this directory (Default: $PWD/outputdir)
+--install, -i repo|rpm
+    repo: Install MC from repository, future updates will be handled by the system package manager
+    rpm: Build and install MC locally (RPM-based OSes only)
+--build
+    Build RPM from source DEB (no installation)
 --mcversion VERSION
-    Build or install a specific version (Default: install the latest version)
+    Build or install a specific MC version, ex. "28.0.25"
+--outputdir PATH
+    Generate rpmbuild output in this directory (Default: $PWD/output)
 --restorefile RESTOREFILE
-    Restore file location for registration (Default: skip registration)
+    Restore file location for automatic license registration (Default: skip registration)
 --betapass PASSWORD
     Enter beta team password for access to beta builds
 --service-user USER
-    Install systemd services and containers for USER
+    Install systemd services and containers for USER (Default: current user)
 --service, -s SERVICE
     See SERVICES section below for a list of possible services to install
---container, -c CONTAINER
+--container, -c CONTAINER (TODO: Under construction)
     See CONTAINERS section below for a list of possible services to install
-    TODO: Containers are a work-in-progress
 --createrepo
     Build rpm, copy to webroot, and run createrepo
 --createrepo-webroot PATH
@@ -105,11 +101,11 @@ It is possible to install multiple services at one time using multiple `--servic
 
     Installs the latest version of JRiver Media Center from the repository.
 
-* `installJRMC --repo --service jriver-mediaserver`
+* `installJRMC --install repo --service jriver-mediaserver`
 
     Installs JRiver Media Center from the repository and starts/enables the /MediaServer service.
 
-* `installJRMC --rpm --restorefile /path/to/license.mjr --mcversion 26.0.56`
+* `installJRMC --install rpm --restorefile /path/to/license.mjr --mcversion 26.0.56`
 
     Builds JRiver Media Center version 26.0.56 RPM from the source DEB, installs it (RPM distros only), and activates it using the specified .mjr license file.
 
@@ -121,11 +117,11 @@ It is possible to install multiple services at one time using multiple `--servic
 
     Installs the jriver-createrepo timer and service to build the RPM, move it to the webroot, and run createrepo as `www-user` hourly.
 
-* `installJRMC --repo --service jriver-x11vnc --service jriver-mediacenter --vncpass "letmein"`
+* `installJRMC --install repo --service jriver-x11vnc --service jriver-mediacenter --vncpass "letmein"`
 
     Installs services to share the existing local desktop via VNC and automatically run Media Center on startup.
 
-* `installJRMC --repo --service jriver-xvnc-mediacenter --display ":2"`
+* `installJRMC --install repo --service jriver-xvnc-mediacenter --display ":2"`
 
     Installs an Xvnc server on display ':2' that starts Media Center.
 

+ 86 - 41
installJRMC

@@ -12,8 +12,8 @@ shopt -s extglob
 #
 #######################################
 
-_scriptversion="0.9.6"
-_boardurl="https://yabb.jriver.com/interact/index.php/board,67.0.html"
+_scriptversion="1.0.0a1"
+_boardurl="https://yabb.jriver.com/interact/index.php/board,71.0.html"
 _outputdir="$PWD/output"
 _createrepo_webroot="/srv/jriver"
 _exec_user="$(whoami)"
@@ -25,23 +25,20 @@ _printHelpAndExit() {
 		USAGE:
 			installJRMC [[OPTION] [VALUE]]...
 
-			If no options (besides -d) are provided, the script will default to --repo
+			If no options (besides -d) are provided, the script will default to '--install repo'
 
 		OPTIONS
-			--repo
-				Install JRiver Media Center from repository using package manager
-				DEB-based OSes: JRiver official package repository
-				RPM-based OSes: BryanC unofficial repository
-			--rpm
-				Build RPM from source DEB and install it
-			--rpmbuild
+			--install, -i repo|rpm
+				repo: Install JRiver Media Center from repository ('repo'), future updates will be handled by the system package manager
+                rpm: Build and install rpm file locally ('rpm')
+			--build
 				Build RPM from source DEB (no installation)
-			--outputdir PATH
-				Generate rpmbuild output in this directory (Default: $PWD/outputdir)
 			--mcversion VERSION
 				Build or install a specific version (Default: install the latest version)
+            --outputdir PATH
+				Generate rpmbuild output in this directory (Default: $PWD/output)
 			--restorefile RESTOREFILE
-				Restore file location for registration (Default: skip registration)
+				Restore file location for automatic license registration (Default: skip registration)
 			--betapass PASSWORD
 				Enter beta team password for access to beta builds
 			--service-user USER
@@ -133,8 +130,8 @@ _init() {
 
     # Set defaults
     if [[ $# -eq 0 ]] || [[ $# -eq 1 && "$1" =~ ^(--debug|-d)$ ]]; then
-        debug "No options passed, defaulting to --repo installation method"
-        _repoinstall="true"
+        debug "No options passed, defaulting to repo installation method"
+        _install="repo"
     fi
 
     _service_user="${_service_user:-$_exec_user}"
@@ -169,7 +166,7 @@ _main() {
     fi
 
     # Install MC using package manager
-    if [[ -v _repoinstall ]]; then
+    if [[ -v _install && "$_install" == "repo" ]]; then
         _installMCFromRepo
         _symlinkCerts
         _restoreLicense
@@ -177,7 +174,7 @@ _main() {
     fi
 
     # Build RPM from source deb package
-    if [[ -v _rpmbuild ]]; then
+    if [[ -v _build ]]; then
         _acquireDeb
         _buildRPM
     fi
@@ -188,7 +185,7 @@ _main() {
     fi
 
     # Install the rpm
-    if [[ -v _rpminstall ]]; then
+    if [[ -v _install && "$_install" == "rpm" ]]; then
         _installPackage --noquery "$_mcrpm"
         _symlinkCerts
         _restoreLicense
@@ -256,22 +253,23 @@ _ifSudo() {
 _parseInput() {
     debug "Running: ${FUNCNAME[0]}"
 
-    if _input=$(getopt -o +vdhus:c: -l repo,rpm,rpmbuild,outputdir:,mcversion:,restorefile:,betapass:,service-user:,service:,version,debug,help,uninstall,createrepo,createrepo-webroot:,createrepo-user:,vncpass:,display:,container: -- "$@"); then
+    if _input=$(getopt -o +i:vdhus:c: -l install,rpmbuild,outputdir:,mcversion:,restorefile:,betapass:,service-user:,service:,version,debug,help,uninstall,createrepo,createrepo-webroot:,createrepo-user:,vncpass:,display:,container: -- "$@"); then
         eval set -- "$_input"
         while true; do
             case "$1" in
-                --repo)
-                    _repoinstall="true"
+                --install|-i)
+                    shift 
+                    _install="$1"
+                    if [[ "$_install" == "rpm" ]]; then
+                        if [[ ! "$ID" =~ ^(fedora|centos)$ ]]; then
+                            err "RPM install method not available on $ID"
+                            _printHelpAndExit 1
+                        fi
+                        _build="true"
+                    fi
                     ;;
-                --rpm)
-                    [[ ! "$ID" =~ ^(fedora|centos)$ ]] && \
-                        err "RPM installation not available on $ID" && \
-                        _printHelpAndExit 1
-                    _rpmbuild="true"
-                    _rpminstall="true"
-                    ;;
-                --rpmbuild)
-                    _rpmbuild="true"
+                --build)
+                    _build="true"
                     ;;
                 --outputdir)
                     shift && _outputdir="$1"
@@ -292,7 +290,7 @@ _parseInput() {
                     shift && _services+=("$1")
                     ;;
                 --createrepo)
-                    _rpmbuild="true"
+                    _build="true"
                     _createrepo="true"
                     ;;
                 --createrepo-webroot)
@@ -492,7 +490,7 @@ _installMCFromRepo() {
         elif [[ "$ID" =~ ^(debian|ubuntu|linuxmint)$ ]]; then
             _installPackage wget
             wget -q "http://dist.jriver.com/mediacenter@jriver.com.gpg.key" -O- | _ifSudo apt-key add - > /dev/null 2>&1
-            _ifSudo wget "http://dist.jriver.com/latest/mediacenter/mediacenter$mversion.list" -O "/etc/apt/sources.list.d/mediacenter$mversion.list"
+            _ifSudo wget "http://dist.jriver.com/latest/mediacenter/mediacenter$_mversion.list" -O "/etc/apt/sources.list.d/mediacenter$_mversion.list"
         fi
     }
     _addRepo
@@ -1206,19 +1204,66 @@ _service_jriver-createrepo() {
 #######################################
 # CONTAINERS
 #######################################
-_containerCreaterepo() {
-    :
-}
+# _containerCreaterepo() {
+#     :
+# }
 
 
-_containerVNC() {
-    :
-}
+# _containerVNC() {
+#     :
+# }
 
 
-_containerMC() {
-    :
-}
+# _containerMC() {
+#     _installPackage buildah podman
+#     cnt=$(buildah from docker.io/jlesage/baseimage-gui:debian-10)
+#     podman_create_cmd=("podman" "create" "--name" "$CNAME")
+#     buildah_config_cmd=("buildah" "config" \
+#         "--author" "bryanroessler@gmail.com" \
+#         "--label" "maintainer=$MAINTAINER" \
+#         "--env" "TZ=$TZ" \
+#         "--workingdir" "/app" \
+#         "--cmd" "mediacenter$_mversion")
+
+#     mkcdirs() {
+#         local dir
+#         for dir in "$@"; do
+#             if [[ ! -d "$dir" ]]; then 
+#                 if ! mkdir -p "$dir"; then
+#                     err "Could not create directory $dir, check your permissions"
+#                 fi
+#             fi
+#             if ! chcon -t container_file_t -R "$dir"; then
+#                 err "Could not set container_file_t attribute for $dir, check your permissions"
+#             fi
+#         done
+#     }
+
+#     mkcdirs "$HOME/.jriver"
+
+#     podman_create_cmd+=("-v" "$HOME/.jriver:/root/.jriver")
+#     podman_create_cmd+=("-v" "$DOWNLOAD_ROOT:/downloads:z")
+#     podman_create_cmd+=("-v" "$MONITOR_ROOT/nzbs:/nzbs")
+#     podman_create_cmd+=("-p" "${CONTAINER[HOST_PORT]}:${CONTAINER[CONTAINER_PORT]}")
+
+#     brc() { buildah run "$1" "${@:2}" || return 1; }
+
+#     brc add-pkg gnupg2 libxss1 wmctrl xdotool ca-certificates inotify-tools libgbm1
+
+#     brc add-pkg --virtual .build-deps wget
+
+#     brc sh -s <<- EOF
+# 		wget -q "http://dist.jriver.com/mediacenter@jriver.com.gpg.key" -O- | apt-key add - > /dev/null 2>&1
+# 	EOF
+
+#     brc wget "http://dist.jriver.com/latest/mediacenter/mediacenter$_mversion.list" -O "/etc/apt/sources.list.d/mediacenter$_mversion.list"
+
+#     brc apt-get update -y -q0
+
+#     brc add-pkg "mediacenter$_mversion"
+
+#     brc del-pkg .build-deps
+# }
 
 
 #######################################