From c91831a133e25d8e89c8750c5505e8e298825e04 Mon Sep 17 00:00:00 2001
From: UltimateByte <robin.labadie@gmail.com>
Date: Sun, 15 Jan 2017 03:32:12 +0100
Subject: [PATCH] moving mods core functions away

---
 lgsm/functions/mods_core.sh | 114 ++++++++++++++++++++++++++++++++++++
 1 file changed, 114 insertions(+)
 create mode 100644 lgsm/functions/mods_core.sh

diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh
new file mode 100644
index 000000000..17bce6f30
--- /dev/null
+++ b/lgsm/functions/mods_core.sh
@@ -0,0 +1,114 @@
+176 lines (161 sloc)  5.27 KB
+#!/bin/bash
+# LGSM command_mods_install.sh function
+# Author: Daniel Gibbs
+# Contributor: UltimateByte
+# Website: https://gameservermanagers.com
+# Description: List and installs available mods along with mods_list.sh.
+
+local commandname="MODS"
+local commandaction="Core functions for mods"
+local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
+
+## Useful variables
+# Files and Directories
+modstmpdir="${tmpdir}/mods"
+modsdatadir="${lgsmdir}/data/mods"
+modslockfile="installed-mods-listing"
+modslockfilefullpath="${modsdatadir}/${modslockfile}"
+
+# Create mods directory if it doesn't exist
+# Assuming the game is already installed as mods_list.sh checked for it.
+fn_mods_dir(){
+	if [ ! -d "${modinstalldir}" ]; then
+		fn_script_log_info "Creating mods directory: ${modinstalldir}"
+		fn_print_dots "Creating mods directory"
+		sleep 1
+		mkdir -p "${modinstalldir}"
+		fn_print_ok_nl "Created mods directory"
+	fi
+}
+
+# Clear mod download directory so that there is only one file in it since we don't the file name and extention
+fn_clear_tmp_mods(){
+	if [ -d "${modstmpdir}" ]; then
+		rm -r "${modstmpdir}"
+		fn_script_log "Clearing temp mod download directory: ${modstmpdir}"
+	fi
+}
+
+# Create tmp download mod directory
+fn_mods_tmpdir(){
+	if [ ! -d "${modstmpdir}" ]; then
+			mkdir -p "${modstmpdir}"
+			fn_script_log "Creating temp mod download directory: ${modstmpdir}"
+	fi
+}
+
+fn_mod_dl(){
+	# fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}"
+	fileurl="${modurl}"
+	filedir="${modstmpdir}"
+	filename="${modfilename}" 
+	fn_script_log "Downloading mods to ${modstmpdir}"
+	fn_fetch_file "${fileurl}" "${filedir}" "${filename}"
+	# Check if variable is valid checking if file has been downloaded and exists
+	if [ ! -f "${modstmpdir}/${modfilename}" ]; then
+		fn_print_fail "An issue occurred upon downloading ${modprettyname}"
+		core_exit.sh
+	fi
+}
+
+fn_mod_extract(){
+	# fn_dl_extract "${filedir}" "${filename}" "${extractdir}"
+	filename="${modfilename}"
+	extractdir="${modstmpdir}/extracted"
+	if [ ! -d "${extractdir}" ]; then
+		mkdir -p "${extractdir}"
+	fi
+	fn_script_log "Extracting ${modprettyname} to ${extractdir}"
+	fn_dl_extract "${filedir}" "${filename}" "${extractdir}"
+}
+
+fn_mod_fileslist(){
+	# ${modsdatadir}/${modcommand}-files.list
+	find "${extractdir}" -mindepth 1 -printf '%P\n' >> ${modsdatadir}/${modcommand}-files.list
+	fn_script_log "Writing file list: ${modsdatadir}/${modcommand}-files.list}"
+}
+
+fn_mod_copy_destination(){
+	# Destination directory: ${modinstalldir}
+	fn_script_log "Copying ${modprettyname} to ${modinstalldir}"
+	cp -Rf "${extractdir}/." "${modinstalldir}/"
+}
+
+# Check if the mod is already installed and warn the user
+fn_mod_already_installed(){
+	if [ -f "${modslockfilefullpath}" ]; then
+		if [ -n "$(cat "${modslockfilefullpath}" | grep "${modcommand}")" ]; then
+			echo ""
+			fn_print_warning_nl "${modprettyname} has already been installed."
+			echo " * Mod files will be overwritten."
+			sleep 4
+		fi
+	fi
+}
+
+# Add the mod to the installed mods list
+fn_mod_add_list(){
+	# Create lgsm/data directory
+	if [ ! -d  "${modsdatadir}" ]; then
+		mkdir -p "${modsdatadir}"
+		fn_script_log "Created ${modsdatadir}"
+	fi
+	# Create lgsm/data/${modslockfile}
+	if [ ! -f "${modslockfilefullpath}" ]; then
+		touch "${modslockfilefullpath}"
+		fn_script_log "Created ${modslockfilefullpath}"
+	fi
+	# Input mod name to lockfile
+	if [ ! -n "$(cat "${modslockfilefullpath}" | grep "${modcommand}")" ]; then
+		echo "${modcommand}" >> "${modslockfilefullpath}"
+		fn_script_log "${modcommand} added to ${modslockfile}"
+	fi
+}