Browse Source

Global source engine FastDL & remove non bz2 files

Fixes #1322 and #721
UltimateByte 9 years ago
parent
commit
6f085b28c3
1 changed files with 129 additions and 30 deletions
  1. 129 30
      lgsm/functions/command_fastdl.sh

+ 129 - 30
lgsm/functions/command_fastdl.sh

@@ -6,11 +6,18 @@
 # Description: Creates a FastDL directory.
 # Description: Creates a FastDL directory.
 
 
 local commandname="FASTDL"
 local commandname="FASTDL"
-local commandaction="FastDL"
+local commandaction="FastDL Generator"
 local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
 local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
 
 
 check.sh
 check.sh
 
 
+# Only Source supports FastDL
+if [ "${engine}" != "source" ]; then
+	fn_print_error "${gamename} does not support FastDL"
+	fn_script_log_error "${gamename} does not support FastDL"
+	core_exit.sh
+fi
+
 # Directories
 # Directories
 webdir="${rootdir}/public_html"
 webdir="${rootdir}/public_html"
 fastdldir="${webdir}/fastdl"
 fastdldir="${webdir}/fastdl"
@@ -24,25 +31,27 @@ fn_check_bzip2(){
 	# Returns true if not installed
 	# Returns true if not installed
 	if [ -z "$(command -v bzip2)" ]; then
 	if [ -z "$(command -v bzip2)" ]; then
 		bzip2installed="0"
 		bzip2installed="0"
-		fn_print_info "bzip2 is not installed !"
-		fn_script_log_info "bzip2 is not installed"
+		fn_print_info "bzip2 is not installed! Install it to enable file compression"
+		fn_script_log_info "bzip2 is not installed. Install it to enable file compression."
+		fn_script_log_info "https://github.com/GameServerManagers/LinuxGSM/wiki/FastDL#bzip2-compression"
 		echo -en "\n"
 		echo -en "\n"
 		sleep 1
 		sleep 1
-		echo "We advise using it"
-		echo "For more information, see https://github.com/GameServerManagers/LinuxGSM/wiki/FastDL#bzip2-compression"
+		echo " * https://github.com/GameServerManagers/LinuxGSM/wiki/FastDL#bzip2-compression"
 		sleep 2
 		sleep 2
+		echo ""
 	else
 	else
 		bzip2installed="1"
 		bzip2installed="1"
 	fi
 	fi
 }
 }
 
 
 fn_fastdl_init(){
 fn_fastdl_init(){
-	# User confirmation
-	fn_print_ok "Welcome to LGSM's FastDL generator"
+	fn_print_header
+	fn_script_log "Started FastDL Generator"
 	sleep 1
 	sleep 1
 	echo -en "\n"
 	echo -en "\n"
-	fn_script_log "Started FastDL creation"
-	if ! fn_prompt_yn "Continue?" Y; then
+	fn_check_bzip2
+	# User confirmation
+	if ! fn_prompt_yn "Build FastDL directory?" Y; then
 		exit
 		exit
 	fi
 	fi
 	fn_script_log "Initiating FastDL creation"
 	fn_script_log "Initiating FastDL creation"
@@ -105,7 +114,7 @@ fn_fastdl_config(){
 	fi
 	fi
 }
 }
 
 
-fn_fastdl_gmod_config(){
+fn_fastdl_gmod_luaenforcer(){
 	# Prompt for download enforcer, that is using a .lua addfile resource generator
 	# Prompt for download enforcer, that is using a .lua addfile resource generator
 	fn_print_dots
 	fn_print_dots
 	if fn_prompt_yn "Use client download enforcer?" Y; then
 	if fn_prompt_yn "Use client download enforcer?" Y; then
@@ -130,7 +139,7 @@ fn_clear_old_fastdl(){
 	fi
 	fi
 }
 }
 
 
-fn_gmod_fastdl(){
+fn_fastdl_gmod(){
 	# Copy all needed files for FastDL
 	# Copy all needed files for FastDL
 	echo ""
 	echo ""
 	fn_print_dots "Starting gathering all needed files"
 	fn_print_dots "Starting gathering all needed files"
@@ -213,7 +222,7 @@ fn_gmod_fastdl(){
 		fn_script_log "Adjusting addon's file structure"
 		fn_script_log "Adjusting addon's file structure"
 		sleep 1
 		sleep 1
 		cp -Rf "${fastdldir}"/addons/*/* "${fastdldir}"
 		cp -Rf "${fastdldir}"/addons/*/* "${fastdldir}"
-	#Don't remove yet	rm -R "${fastdldir:?}/addons"
+	# Don't remove yet	rm -R "${fastdldir:?}/addons"
 		fn_print_ok "Adjusted addon's file structure"
 		fn_print_ok "Adjusted addon's file structure"
 		sleep 1
 		sleep 1
 		echo -en "\n"
 		echo -en "\n"
@@ -221,7 +230,7 @@ fn_gmod_fastdl(){
 
 
 	# Correct content that may be into a lua directory by mistake like some darkrpmodification addons
 	# Correct content that may be into a lua directory by mistake like some darkrpmodification addons
 	if [ -d "${fastdldir}/lua" ]; then
 	if [ -d "${fastdldir}/lua" ]; then
-		fn_print_dots "Typical DarkRP shit detected, fixing"
+		fn_print_dots "Typical DarkRP files detected, fixing"
 		sleep 2
 		sleep 2
 		cp -Rf "${fastdldir}/lua/"* "${fastdldir}"
 		cp -Rf "${fastdldir}/lua/"* "${fastdldir}"
 		fn_print_ok "Stupid DarkRP file structure fixed"
 		fn_print_ok "Stupid DarkRP file structure fixed"
@@ -230,8 +239,80 @@ fn_gmod_fastdl(){
 	fi
 	fi
 }
 }
 
 
+fn_fastdl_source(){
+	# Copy all needed files for FastDL
+	echo ""
+	fn_print_dots "Starting gathering all needed files"
+	fn_script_log "Starting gathering all needed files"
+	sleep 1
+	echo -en "\n"
+
+	# Map Files
+	fn_print_dots "Copying map files..."
+	fn_script_log "Copying map files"
+	sleep 0.5
+	mkdir "${fastdldir}/maps"
+	find "${systemdir}/maps" -name '*.bsp' -exec cp {} "${fastdldir}/maps" \;
+	find "${systemdir}/maps" -name '*.ain' -exec cp {} "${fastdldir}/maps" \;
+	find "${systemdir}/maps" -name '*.nav' -exec cp {} "${fastdldir}/maps" \;
+	find "${systemdir}/maps" -name '*.jpg' -exec cp {} "${fastdldir}/maps" \;
+	find "${systemdir}/maps" -name '*.txt' -exec cp {} "${fastdldir}/maps" \;
+	fn_print_ok "Map files copied"
+	sleep 0.5
+	echo -en "\n"
+
+	# Materials
+	fn_print_dots "Copying materials..."
+	fn_script_log "Copying materials"
+	sleep 0.5
+	mkdir "${fastdldir}/materials"
+	find "${systemdir}/materials" -name '*.vtf' -exec cp {} "${fastdldir}/materials" \;
+	find "${systemdir}/materials" -name '*.vmt' -exec cp {} "${fastdldir}/materials" \;
+	find "${systemdir}/materials" -name '*.vbf' -exec cp {} "${fastdldir}/materials" \;
+	fn_print_ok "Materials copied"
+	sleep 0.5
+	echo -en "\n"
+
+	# Models
+	fn_print_dots "Copying models..."
+	fn_script_log "Copying models"
+	sleep 1
+	mkdir "${fastdldir}/models"
+	find "${systemdir}/models" -name '*.vtx' -exec cp {} "${fastdldir}/models" \;
+	find "${systemdir}/models" -name '*.vvd' -exec cp {} "${fastdldir}/models" \;
+	find "${systemdir}/models" -name '*.mdl' -exec cp {} "${fastdldir}/models" \;
+	find "${systemdir}/models" -name '*.phy' -exec cp {} "${fastdldir}/models" \;
+	find "${systemdir}/models" -name '*.jpg' -exec cp {} "${fastdldir}/models" \;
+	find "${systemdir}/models" -name '*.png' -exec cp {} "${fastdldir}/models" \;
+	fn_print_ok "Models copied"
+	sleep 0.5
+	echo -en "\n"
+
+	# Particles
+	fn_print_dots "Copying particles..."
+	fn_script_log "Copying particles"
+	sleep 0.5
+	mkdir "${fastdldir}/particles"
+	find "${systemdir}" -name '*.pcf' -exec cp {} "${fastdldir}/particles" \;
+	fn_print_ok "Particles copied"
+	sleep 0.5
+	echo -en "\n"
+
+	# Sounds
+	fn_print_dots "Copying sounds..."
+	fn_script_log "Copying sounds"
+	sleep 0.5
+	mkdir "${fastdldir}/sound"
+	find "${systemdir}" -name '*.wav' -exec cp {} "${fastdldir}/sound" \;
+	find "${systemdir}" -name '*.mp3' -exec cp {} "${fastdldir}/sound" \;
+	find "${systemdir}" -name '*.ogg' -exec cp {} "${fastdldir}/sound" \;
+	fn_print_ok "Sounds copied"
+	sleep 0.5
+	echo -en "\n"
+}
+
 # Generate lua file that will force download any file into the FastDL directory
 # Generate lua file that will force download any file into the FastDL directory
-fn_lua_fastdl(){
+fn_fastdl_gmod_lua(){
 	# Remove lua file if luaressource is turned off and file exists
 	# Remove lua file if luaressource is turned off and file exists
 	echo ""
 	echo ""
 	if [ "${luaressource}" == "off" ]; then
 	if [ "${luaressource}" == "off" ]; then
@@ -286,36 +367,54 @@ fn_fastdl_bzip2(){
 		fn_script_log "bzip2 compression done"
 		fn_script_log "bzip2 compression done"
 		sleep 1
 		sleep 1
 		echo -en "\n"
 		echo -en "\n"
+		# Prompt for clearing uncompressed files, can save some space but might cause issues for gmod
+		fn_print_dots
+		if [ "${gamename}" == "Garry's Mod" ]; then
+			if fn_prompt_yn "Keep original/uncompressed FastDL files?" N; then
+				fn_print_info "Keeping uncompressed FastDL files"; fn_script_log fn_print_info "Keeping uncompressed FastDL files"
+			else
+				find "${fastdldir}" \( -type f ! -name "*.bz2" \) -exec rm {} \; fn_print_dots "Clearing uncompressed FastDL files..."; sleep 1; fn_print_ok "Cleared uncompressed FastDL files"; fn_script_log "Cleared uncompressed FastDL files."
+			fi
+			echo -en "\n"
+		else
+			fn_print_dots "Clearing uncompressed FastDL files..."
+			sleep 1
+			find "${fastdldir}" \( -type f ! -name "*.bz2" \) -exec rm {} \
+			fn_print_ok "Cleared uncompressed FastDL files."
+			fn_script_log "Cleared uncompressed FastDL files."
+		fi	
 	fi
 	fi
 }
 }
 
 
 fn_fastdl_completed(){
 fn_fastdl_completed(){
 	# Finished message
 	# Finished message
 	echo ""
 	echo ""
-	fn_print_ok "Congratulations, it's done!"
+	fn_print_ok "FastDL created!"
 	fn_script_log "FastDL job done"
 	fn_script_log "FastDL job done"
 	sleep 2
 	sleep 2
 	echo -en "\n"
 	echo -en "\n"
 	echo ""
 	echo ""
-	fn_print_info "Need more documentation? See https://github.com/GameServerManagers/LinuxGSM/wiki/FastDL"
+	fn_print_info_nl "Need more documentation? 
+	echo " * https://github.com/GameServerManagers/LinuxGSM/wiki/FastDL"
 	echo -en "\n"
 	echo -en "\n"
 	if [ "$bzip2installed" == "0" ]; then
 	if [ "$bzip2installed" == "0" ]; then
-	echo "By the way, you'd better install bzip2 and re-run this command!"
+		echo "By the way, you'd better install bzip2 and re-run this command!"
 	fi
 	fi
-	echo "Credits : UltimateByte"
+	echo "Credits: UltimateByte"
 }
 }
 
 
-# Game checking and functions running
-# Garry's Mod
+# Run functions
+fn_check_bzip2
+fn_fastdl_init
+fn_fastdl_config
+fn_clear_old_fastdl
 if [ "${gamename}" == "Garry's Mod" ]; then
 if [ "${gamename}" == "Garry's Mod" ]; then
-	fn_check_bzip2
-	fn_fastdl_init
-	fn_fastdl_config
-	fn_fastdl_gmod_config
-	fn_clear_old_fastdl
-	fn_gmod_fastdl
-	fn_lua_fastdl
-	fn_fastdl_bzip2
-	fn_fastdl_completed
-	exit
+	fn_fastdl_gmod_luaenforcer
+	fn_fastdl_gmod
+	fn_fastdl_gmod_lua
+else
+	fn_fastdl_source
 fi
 fi
+fn_fastdl_bzip2
+fn_fastdl_completed
+core_exit.sh