feat: modpack-create can select individual mods (#26)
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
VERSION="0.3.14"
|
VERSION="0.3.15"
|
||||||
|
|
||||||
# --- Globals ---
|
# --- Globals ---
|
||||||
|
|
||||||
@@ -44,6 +44,10 @@ function get_files_by_entry_from_db() {
|
|||||||
echo "$1" | cut -d',' -f4- | tr ',' ' ' | head -1
|
echo "$1" | cut -d',' -f4- | tr ',' ' ' | head -1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function get_name_by_entry_from_db() {
|
||||||
|
echo "$1" | awk -F, '{print $3}'
|
||||||
|
}
|
||||||
|
|
||||||
function disable_all_modpacks() {
|
function disable_all_modpacks() {
|
||||||
sed -i 's/ENABLED/DISABLED/' "$MODPACKS_DB_FILE"
|
sed -i 's/ENABLED/DISABLED/' "$MODPACKS_DB_FILE"
|
||||||
}
|
}
|
||||||
@@ -79,9 +83,12 @@ function remove_disabled_prefix() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function get_mod_name_and_index() {
|
function get_mod_name_and_index() {
|
||||||
|
# if calling install multiple times in the same call of h2mm, the mod_index needs to be reset if it was -1
|
||||||
|
[[ $mod_index -eq -1 ]] && unset mod_index
|
||||||
|
|
||||||
if [[ -n "$mod_index" ]]; then # if mod index exists
|
if [[ -n "$mod_index" ]]; then # if mod index exists
|
||||||
entry=$(grep "^${mod_index}," "$DB_FILE")
|
entry=$(grep "^${mod_index}," "$DB_FILE")
|
||||||
mod_name=$(echo "$entry" | awk -F, '{print $3}')
|
mod_name=$(get_name_by_entry_from_db "$entry")
|
||||||
elif [[ -n "$mod_name" ]]; then # if mod name exists
|
elif [[ -n "$mod_name" ]]; then # if mod name exists
|
||||||
entry=$(grep -F ",$mod_name," "$DB_FILE")
|
entry=$(grep -F ",$mod_name," "$DB_FILE")
|
||||||
mod_index=$(echo "$entry" | awk -F, '{print $1}' | head -1)
|
mod_index=$(echo "$entry" | awk -F, '{print $1}' | head -1)
|
||||||
@@ -102,7 +109,7 @@ function get_mod_name_and_index() {
|
|||||||
function get_modpack_name_and_index() {
|
function get_modpack_name_and_index() {
|
||||||
if [[ -n "$modpack_index" ]]; then # if modpack index exists
|
if [[ -n "$modpack_index" ]]; then # if modpack index exists
|
||||||
entry=$(grep "^${modpack_index}," "$MODPACKS_DB_FILE")
|
entry=$(grep "^${modpack_index}," "$MODPACKS_DB_FILE")
|
||||||
modpack_name=$(echo "$entry" | awk -F, '{print $3}')
|
modpack_name=$(get_name_by_entry_from_db "$entry")
|
||||||
elif [[ -n "$modpack_name" ]]; then # if modpack name exists
|
elif [[ -n "$modpack_name" ]]; then # if modpack name exists
|
||||||
entry=$(grep ",$modpack_name$" "$MODPACKS_DB_FILE")
|
entry=$(grep ",$modpack_name$" "$MODPACKS_DB_FILE")
|
||||||
modpack_index=$(echo "$entry" | awk -F, '{print $1}' | head -1)
|
modpack_index=$(echo "$entry" | awk -F, '{print $1}' | head -1)
|
||||||
@@ -185,7 +192,7 @@ function initialize_modpack_directories() {
|
|||||||
function display_help() {
|
function display_help() {
|
||||||
cat << EOF
|
cat << EOF
|
||||||
Helldivers 2 Mod Manager v${VERSION}
|
Helldivers 2 Mod Manager v${VERSION}
|
||||||
Usage: h2mm [OPTION] <COMMAND>
|
Usage: h2mm [OPTION] COMMAND
|
||||||
Commands:
|
Commands:
|
||||||
i, install Install a mod by the file provided (directory, zip, patch).
|
i, install Install a mod by the file provided (directory, zip, patch).
|
||||||
u, uninstall Uninstall a mod by name (or index).
|
u, uninstall Uninstall a mod by name (or index).
|
||||||
@@ -213,10 +220,10 @@ EOF
|
|||||||
|
|
||||||
function display_install_help() {
|
function display_install_help() {
|
||||||
cat << EOF
|
cat << EOF
|
||||||
Usage: h2mm install [OPTIONS] <MOD_FILES|MOD_DIRECTORIES|MOD_ZIPS>
|
Usage: h2mm install [OPTIONS] MOD_FILES|MOD_DIRECTORIES|MOD_ZIPS
|
||||||
Install a mod with any combination of mod files, directories, and zip files.
|
Install a mod with any combination of mod files, directories, and zip files.
|
||||||
Options:
|
Options:
|
||||||
-n \"<MOD_NAME>\" Name the mod yourself, inside double quotes.
|
-n "<MOD_NAME>" Name the mod yourself, inside double quotes.
|
||||||
<MOD_FILES> Multiple mod files, accepts wildcards.
|
<MOD_FILES> Multiple mod files, accepts wildcards.
|
||||||
<MOD_DIRECTORIES> Directory/directories containing mod files.
|
<MOD_DIRECTORIES> Directory/directories containing mod files.
|
||||||
<MOD_ZIPS> Zip file(s) containing mod files.
|
<MOD_ZIPS> Zip file(s) containing mod files.
|
||||||
@@ -224,42 +231,42 @@ Example:
|
|||||||
h2mm install /path/to/mod.zip
|
h2mm install /path/to/mod.zip
|
||||||
h2mm install /path/to/mod/files
|
h2mm install /path/to/mod/files
|
||||||
h2mm install /path/to/mod.zip /path/to/mod2.zip /path/to/mod/files
|
h2mm install /path/to/mod.zip /path/to/mod2.zip /path/to/mod/files
|
||||||
h2mm install -n \"Example mod\" mod.patch_0 mod.patch_0.stream
|
h2mm install -n "Example mod" mod.patch_0 mod.patch_0.stream
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
function display_uninstall_help() {
|
function display_uninstall_help() {
|
||||||
cat << EOF
|
cat << EOF
|
||||||
Usage: h2mm uninstall [OPTIONS] \"<MOD_NAME>\"
|
Usage: h2mm uninstall [OPTIONS] "MOD_NAME"
|
||||||
Uninstall a mod by name or index.
|
Uninstall a mod by name or index.
|
||||||
Options:
|
Options:
|
||||||
-i <index> Index of the mod to uninstall.
|
-i <index> Index of the mod to uninstall.
|
||||||
Usage:
|
Usage:
|
||||||
h2mm uninstall \"Example mod\"
|
h2mm uninstall "Example mod"
|
||||||
h2mm uninstall -i 1 # uninstall mod with index 1
|
h2mm uninstall -i 1 # uninstall mod with index 1
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
function display_enable_help() {
|
function display_enable_help() {
|
||||||
cat << EOF
|
cat << EOF
|
||||||
Usage: h2mm enable [OPTIONS] \"<MOD_NAME>\"
|
Usage: h2mm enable [OPTIONS] "MOD_NAME"
|
||||||
Enable a mod by name or index.
|
Enable a mod by name or index.
|
||||||
Options:
|
Options:
|
||||||
-i <index> Index of the mod to enable.
|
-i <index> Index of the mod to enable.
|
||||||
Usage:
|
Usage:
|
||||||
h2mm enable \"Example mod\"
|
h2mm enable "Example mod"
|
||||||
h2mm enable -i 1 # enable mod with index 1
|
h2mm enable -i 1 # enable mod with index 1
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
function display_disable_help() {
|
function display_disable_help() {
|
||||||
cat << EOF
|
cat << EOF
|
||||||
Usage: h2mm disable [OPTIONS] \"<MOD_NAME>\"
|
Usage: h2mm disable [OPTIONS] "MOD_NAME"
|
||||||
Disable a mod by name or index.
|
Disable a mod by name or index.
|
||||||
Options:
|
Options:
|
||||||
-i <index> Index of the mod to disable.
|
-i <index> Index of the mod to disable.
|
||||||
Usage:
|
Usage:
|
||||||
h2mm disable \"Example mod\"
|
h2mm disable "Example mod"
|
||||||
h2mm disable -i 1 # disable mod with index 1
|
h2mm disable -i 1 # disable mod with index 1
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
@@ -308,14 +315,14 @@ EOF
|
|||||||
|
|
||||||
function display_modpack_create_help() {
|
function display_modpack_create_help() {
|
||||||
cat << EOF
|
cat << EOF
|
||||||
Usage: h2mm modpack-create \"<MODPACK_NAME>\"
|
Usage: h2mm modpack-create "MODPACK_NAME"
|
||||||
Create a modpack from the currently installed mods.
|
Create a modpack from a range of mods specified after command is called.
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
function display_modpack_switch_help() {
|
function display_modpack_switch_help() {
|
||||||
cat << EOF
|
cat << EOF
|
||||||
Usage: h2mm modpack-switch [OPTIONS] \"<MODPACK_NAME>\"
|
Usage: h2mm modpack-switch [OPTIONS] "MODPACK_NAME"
|
||||||
Switch to a modpack by name or index.
|
Switch to a modpack by name or index.
|
||||||
Options:
|
Options:
|
||||||
-i <index> Index of the modpack to switch to.
|
-i <index> Index of the modpack to switch to.
|
||||||
@@ -334,7 +341,7 @@ EOF
|
|||||||
|
|
||||||
function display_modpack_delete_help() {
|
function display_modpack_delete_help() {
|
||||||
cat << EOF
|
cat << EOF
|
||||||
Usage: h2mm modpack-delete [OPTIONS] \"<MODPACK_NAME>\"
|
Usage: h2mm modpack-delete [OPTIONS] "MODPACK_NAME"
|
||||||
Options:
|
Options:
|
||||||
-i <index> Index of the modpack to delete.
|
-i <index> Index of the modpack to delete.
|
||||||
Delete a modpack by name or index.
|
Delete a modpack by name or index.
|
||||||
@@ -343,7 +350,7 @@ EOF
|
|||||||
|
|
||||||
function display_modpack_overwrite_help() {
|
function display_modpack_overwrite_help() {
|
||||||
cat << EOF
|
cat << EOF
|
||||||
Usage: h2mm modpack-overwrite [OPTIONS] \"<MODPACK_NAME>\"
|
Usage: h2mm modpack-overwrite [OPTIONS] "MODPACK_NAME"
|
||||||
Options:
|
Options:
|
||||||
-i <index> Index of the modpack to overwrite.
|
-i <index> Index of the modpack to overwrite.
|
||||||
Overwrite a modpack (the mods that it uses) by name or index.
|
Overwrite a modpack (the mods that it uses) by name or index.
|
||||||
@@ -537,7 +544,7 @@ function mod_disable() {
|
|||||||
sed -i "/^$mod_index,/s/ENABLED/DISABLED/" "$DB_FILE"
|
sed -i "/^$mod_index,/s/ENABLED/DISABLED/" "$DB_FILE"
|
||||||
|
|
||||||
[[ $? -ne 0 ]] && { log ERROR "Could not disable mod."; exit 1; }
|
[[ $? -ne 0 ]] && { log ERROR "Could not disable mod."; exit 1; }
|
||||||
log INFO "Mod $mod_name ${ORANGE}disabled${NC} successfully."
|
log INFO "Mod $mod_name ${GREEN}successfully${NC} disabled."
|
||||||
}
|
}
|
||||||
|
|
||||||
function mod_enable() {
|
function mod_enable() {
|
||||||
@@ -594,7 +601,7 @@ function mod_enable() {
|
|||||||
sed -i "/^$mod_index,/s/DISABLED/ENABLED/" "$DB_FILE"
|
sed -i "/^$mod_index,/s/DISABLED/ENABLED/" "$DB_FILE"
|
||||||
|
|
||||||
[[ $? -ne 0 ]] && { log ERROR "Could not enable mod."; exit 1; }
|
[[ $? -ne 0 ]] && { log ERROR "Could not enable mod."; exit 1; }
|
||||||
log INFO "Mod $mod_name ${GREEN}enabled${NC} successfully."
|
log INFO "Mod $mod_name ${GREEN}successfully${NC} enabled."
|
||||||
}
|
}
|
||||||
|
|
||||||
function mod_reset() {
|
function mod_reset() {
|
||||||
@@ -603,16 +610,19 @@ function mod_reset() {
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
local modpack=false
|
||||||
|
[[ "$1" == "--modpack" ]] && modpack=true
|
||||||
|
|
||||||
log PROMPT "Are you sure you want to ${RED}reset${NC} all installed mods? (Y/n): "
|
log PROMPT "Are you sure you want to ${RED}reset${NC} all installed mods? (Y/n): "
|
||||||
read confirm
|
read confirm
|
||||||
if [[ "$confirm" == "y" || "$confirm" == "Y" || "$confirm" = "" ]]; then
|
if [[ "$confirm" == "y" || "$confirm" == "Y" || "$confirm" = "" ]]; then
|
||||||
rm -f "$MODS_DIR"/*.patch_*
|
rm -f "$MODS_DIR"/*.patch_*
|
||||||
rm -f "$DB_FILE"
|
rm -f "$DB_FILE"
|
||||||
rm -f "$H2PATH"
|
[[ $modpack == false ]] && rm -f "$H2PATH"
|
||||||
log INFO "Mods and related database file deleted."
|
log INFO "Mods ${GREEN}successfully${NC} reset."
|
||||||
else
|
else
|
||||||
log INFO "Reset cancelled."
|
log INFO "Reset cancelled."
|
||||||
exit 1
|
exit 0
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -793,7 +803,7 @@ function mod_install() {
|
|||||||
# add entry to database
|
# add entry to database
|
||||||
next_id=$(awk -F, 'NR > 1 {last_id = $1} END {print last_id + 1}' "$DB_FILE")
|
next_id=$(awk -F, 'NR > 1 {last_id = $1} END {print last_id + 1}' "$DB_FILE")
|
||||||
echo "$next_id,ENABLED,$mod_name,${target_files[*]}" >> "$DB_FILE"
|
echo "$next_id,ENABLED,$mod_name,${target_files[*]}" >> "$DB_FILE"
|
||||||
log INFO "Mod $mod_name ($base_name) ${GREEN}installed${NC} successfully."
|
log INFO "Mod ${GREEN}successfully${NC} installed: $mod_name."
|
||||||
|
|
||||||
# disable any modpack
|
# disable any modpack
|
||||||
disable_all_modpacks
|
disable_all_modpacks
|
||||||
@@ -849,7 +859,7 @@ function mod_uninstall() {
|
|||||||
sed -i "s/^$idx,/$(($idx - 1)),/" "$DB_FILE"
|
sed -i "s/^$idx,/$(($idx - 1)),/" "$DB_FILE"
|
||||||
done
|
done
|
||||||
|
|
||||||
log INFO "Mod $mod_name ${ORANGE}uninstalled${NC} successfully."
|
log INFO "Mod ${GREEN}successfully${NC} uninstalled: $mod_name."
|
||||||
|
|
||||||
# disable any modpack
|
# disable any modpack
|
||||||
disable_all_modpacks
|
disable_all_modpacks
|
||||||
@@ -905,19 +915,25 @@ function mod_export() {
|
|||||||
archive_name="$3"
|
archive_name="$3"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[[ $(wc -l < "$DB_FILE") -le 1 ]] && { log INFO "No modpacks saved."; exit 1; }
|
[[ $(wc -l < "$DB_FILE") -le 1 ]] && { log INFO "No mods installed."; exit 1; }
|
||||||
|
|
||||||
if [[ $modpack_export == false ]]; then
|
if [[ $modpack_export == false ]]; then
|
||||||
log PROMPT "Archive file will be saved to ${save_dir}/${archive_name}. Make? (Y/n): "
|
log PROMPT "Archive file will be saved to ${save_dir}/${archive_name}. Make? (Y/n): "
|
||||||
read -r confirm
|
read -r confirm
|
||||||
fi
|
fi
|
||||||
if [[ silent == true || "$confirm" == "y" || "$confirm" == "Y" || "$confirm" = "" ]]; then
|
if [[ $modpack_export == true || "$confirm" == "y" || "$confirm" == "Y" || "$confirm" = "" ]]; then
|
||||||
# create a temporary directory to store the mods
|
# create a temporary directory to store the mods
|
||||||
OUT_DIR=$(mktemp -d)
|
OUT_DIR=$(mktemp -d)
|
||||||
MODS_EXPORT_DIR="$OUT_DIR/Helldivers 2 Mods"
|
MODS_EXPORT_DIR="$OUT_DIR/Helldivers 2 Mods"
|
||||||
mkdir -p "$MODS_EXPORT_DIR"
|
mkdir -p "$MODS_EXPORT_DIR"
|
||||||
cp "$DB_FILE" "$MODS_EXPORT_DIR"
|
cp "$DB_FILE" "$MODS_EXPORT_DIR"
|
||||||
|
|
||||||
|
# copy modpacks if modpack_export is false
|
||||||
|
if [[ $modpack_export == false ]]; then
|
||||||
|
mkdir -p "$MODS_EXPORT_DIR/modpacks"
|
||||||
|
cp "$MODPACKS_FOLDER"/* "$MODS_EXPORT_DIR/modpacks"
|
||||||
|
fi
|
||||||
|
|
||||||
[[ $? -ne 0 ]] && { log ERROR "Could not copy mods to target directory."; exit 1; }
|
[[ $? -ne 0 ]] && { log ERROR "Could not copy mods to target directory."; exit 1; }
|
||||||
|
|
||||||
# copy all mod files to the export directory
|
# copy all mod files to the export directory
|
||||||
@@ -932,21 +948,25 @@ function mod_export() {
|
|||||||
tar -czf "$save_dir/${archive_name}.tar.gz" -C "$OUT_DIR" "Helldivers 2 Mods"
|
tar -czf "$save_dir/${archive_name}.tar.gz" -C "$OUT_DIR" "Helldivers 2 Mods"
|
||||||
|
|
||||||
[[ $? -ne 0 ]] && { log ERROR "Failed to export mods."; exit 1; }
|
[[ $? -ne 0 ]] && { log ERROR "Failed to export mods."; exit 1; }
|
||||||
[[ "$modpack_export" == false ]] && log INFO "Mods ${GREEN}exported${NC} to $save_dir/${archive_name}.tar.gz."
|
[[ "$modpack_export" == false ]] && log INFO "Mods ${GREEN}successfully${NC} exported."
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function mod_import() {
|
function mod_import() {
|
||||||
[[ "$1" == "--help" || "$1" == "-h" ]] && { display_import_help; exit 0; }
|
[[ "$1" == "--help" || "$1" == "-h" ]] && { display_import_help; exit 0; }
|
||||||
|
|
||||||
local modpack_export=false
|
local modpack=false
|
||||||
[[ "$1" == "--modpack" ]] && { modpack_export=true; shift 1; }
|
[[ "$1" == "--modpack" ]] && { modpack=true; shift 1; }
|
||||||
|
|
||||||
[[ ! -f "$1" ]] && { log ERROR "File $1 does not exist."; exit 1; }
|
[[ ! -f "$1" ]] && { log ERROR "File $1 does not exist."; exit 1; }
|
||||||
|
|
||||||
# reset mods before importing
|
# reset mods before importing
|
||||||
[[ modpack_export == false ]] && log INFO "Importing mods will ${RED}reset${NC} your mods."
|
if [[ $modpack == false ]]; then
|
||||||
|
log INFO "Importing mods will ${RED}reset${NC} your mods."
|
||||||
mod_reset
|
mod_reset
|
||||||
|
else
|
||||||
|
mod_reset --modpack
|
||||||
|
fi
|
||||||
|
|
||||||
# extract in temp directory
|
# extract in temp directory
|
||||||
OUT_DIR=$(mktemp -d)
|
OUT_DIR=$(mktemp -d)
|
||||||
@@ -962,7 +982,7 @@ function mod_import() {
|
|||||||
|
|
||||||
[[ $? -ne 0 ]] && { log ERROR "Failed to import mods."; exit 1; }
|
[[ $? -ne 0 ]] && { log ERROR "Failed to import mods."; exit 1; }
|
||||||
|
|
||||||
log INFO "Mods imported ${GREEN}successfully${NC}."
|
log INFO "Mods ${GREEN}successfully${NC} imported."
|
||||||
}
|
}
|
||||||
|
|
||||||
# --- Modpacks management ---
|
# --- Modpacks management ---
|
||||||
@@ -987,16 +1007,61 @@ function modpack_create() {
|
|||||||
# if no mods are installed, exit
|
# if no mods are installed, exit
|
||||||
[[ $(wc -l < "$DB_FILE") -le 1 ]] && { log ERROR "No mods installed."; exit 1; }
|
[[ $(wc -l < "$DB_FILE") -le 1 ]] && { log ERROR "No mods installed."; exit 1; }
|
||||||
|
|
||||||
|
# if the same modpack name already exists, exit
|
||||||
|
[[ -f "$MODPACKS_FOLDER/$1.tar.gz" ]] && { log ERROR "Modpack $1 already exists."; exit 1; }
|
||||||
|
|
||||||
|
# let user select mods to save
|
||||||
|
mod_list
|
||||||
|
log PROMPT "Enter the mod indices to use for modpack (separated by space) or press Enter to select all: "
|
||||||
|
read -a mod_indices
|
||||||
|
if [[ -n "${mod_indices[0]}" ]]; then
|
||||||
|
# get the mod entries from the indices
|
||||||
|
mod_entries=()
|
||||||
|
|
||||||
|
# grab all the entries from the database from the indices
|
||||||
|
for index in "${mod_indices[@]}"; do
|
||||||
|
[[ ! "$index" =~ ^[0-9]+$ ]] && { log ERROR "Invalid mod index."; exit 1; }
|
||||||
|
[[ $index -lt 1 || $index -gt $(awk -F, 'END {print $1}' "$DB_FILE" ) ]] && { log ERROR "Mod index out of range."; exit 1; }
|
||||||
|
|
||||||
|
IFS= mod_entries+=($(awk -v idx=$index -F, 'NR > 1 && $1 == idx {print $0}' "$DB_FILE")); unset IFS
|
||||||
|
done
|
||||||
|
|
||||||
|
# overwrite all paths to create a custom folder that will hold the mods specified, the mods will be "installed" there
|
||||||
|
OLD_MODS_DIR="$MODS_DIR"
|
||||||
|
MODS_DIR="$(mktemp -d)"
|
||||||
|
DB_FILE="$MODS_DIR/mods.csv"
|
||||||
|
echo "$VERSION" > "$DB_FILE"
|
||||||
|
|
||||||
|
# install selected mods to temp directory
|
||||||
|
for entry in "${mod_entries[@]}"; do
|
||||||
|
mod_name=$(get_name_by_entry_from_db "$entry")
|
||||||
|
IFS= _mod_files=$(get_files_by_entry_from_db "$entry"); unset IFS
|
||||||
|
mod_files=()
|
||||||
|
|
||||||
|
# add the OLD_MODS_DIR prefix to every entry from mod_files
|
||||||
|
for file in $_mod_files; do
|
||||||
|
mod_files+=("$OLD_MODS_DIR/$file")
|
||||||
|
done
|
||||||
|
|
||||||
|
silent=true
|
||||||
|
mod_install -n "$mod_name" "${mod_files[@]}"
|
||||||
|
silent=false
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
# use built-in export function
|
# use built-in export function
|
||||||
modpack_name="$1"
|
modpack_name="$1"
|
||||||
mod_export --modpack "$MODPACKS_FOLDER" "$modpack_name"
|
mod_export --modpack "$MODPACKS_FOLDER" "$modpack_name"
|
||||||
|
|
||||||
log INFO "Modpack ${GREEN}created${NC}: \$MODPACKS_FOLDER/$modpack_name.tar.gz"
|
log INFO "Modpack ${GREEN}successfully${NC} created: \$MODPACKS_FOLDER/$modpack_name.tar.gz"
|
||||||
|
log INFO "Switch to the modpack with 'h2mm modpack-switch $modpack_name'."
|
||||||
|
|
||||||
|
# warn user to create a modpack with his main mods
|
||||||
|
[[ $(wc -l < "$MODPACKS_DB_FILE") -le 1 ]] && log INFO "If this is your first modpack, it is ${ORANGE}recommended${NC} to create a separate modpack with your main mods."
|
||||||
|
|
||||||
# add entry to database
|
# add entry to database
|
||||||
next_id=$(awk -F, 'NR > 1 {last_id = $1} END {print last_id + 1}' "$MODPACKS_DB_FILE")
|
next_id=$(awk -F, 'NR > 1 {last_id = $1} END {print last_id + 1}' "$MODPACKS_DB_FILE")
|
||||||
sed -i "s/ENABLED/DISABLED/" "$MODPACKS_DB_FILE"
|
echo "$next_id,DISABLED,$modpack_name" >> "$MODPACKS_DB_FILE"
|
||||||
echo "$next_id,ENABLED,$modpack_name" >> "$MODPACKS_DB_FILE"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function modpack_switch() {
|
function modpack_switch() {
|
||||||
@@ -1028,7 +1093,7 @@ function modpack_switch() {
|
|||||||
log INFO "Switching modpacks mods will ${RED}reset${NC} your mods."
|
log INFO "Switching modpacks mods will ${RED}reset${NC} your mods."
|
||||||
mod_import --modpack "$MODPACKS_FOLDER/$modpack_name.tar.gz"
|
mod_import --modpack "$MODPACKS_FOLDER/$modpack_name.tar.gz"
|
||||||
|
|
||||||
log INFO "Modpack ${GREEN}switched${NC}: \$MODPACKS_FOLDER/$modpack_name.tar.gz"
|
log INFO "Modpack ${GREEN}successfully${NC} switched: $modpack_name."
|
||||||
|
|
||||||
# save status to db
|
# save status to db
|
||||||
sed -i "s/ENABLED/DISABLED/" "$MODPACKS_DB_FILE"
|
sed -i "s/ENABLED/DISABLED/" "$MODPACKS_DB_FILE"
|
||||||
@@ -1041,19 +1106,13 @@ function modpack_reset() {
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local force=false
|
|
||||||
|
|
||||||
[[ "$1" == "--force" ]] && force=true
|
|
||||||
|
|
||||||
if [[ force == false ]]; then
|
|
||||||
log PROMPT "Are you sure you want to ${RED}reset${NC} all installed modpacks? (Y/n): "
|
log PROMPT "Are you sure you want to ${RED}reset${NC} all installed modpacks? (Y/n): "
|
||||||
read confirm
|
read confirm
|
||||||
fi
|
if [[ "$confirm" == "y" || "$confirm" == "Y" || "$confirm" = "" ]]; then
|
||||||
if [[ force == true || "$confirm" == "y" || "$confirm" == "Y" || "$confirm" = "" ]]; then
|
|
||||||
rm -f "$MODPACKS_FOLDER"/*.tar.gz
|
rm -f "$MODPACKS_FOLDER"/*.tar.gz
|
||||||
rm -f "$MODPACKS_DB_FILE"
|
rm -f "$MODPACKS_DB_FILE"
|
||||||
rmdir "$MODPACKS_FOLDER"
|
rmdir "$MODPACKS_FOLDER"
|
||||||
log INFO "Modpacks and related database file deleted."
|
log INFO "Modpacks ${GREEN}successfully${NC} reset."
|
||||||
else
|
else
|
||||||
log INFO "Reset cancelled."
|
log INFO "Reset cancelled."
|
||||||
exit 1
|
exit 1
|
||||||
@@ -1088,7 +1147,7 @@ function modpack_delete() {
|
|||||||
rm -f "$MODPACKS_FOLDER/$modpack_name.tar.gz"
|
rm -f "$MODPACKS_FOLDER/$modpack_name.tar.gz"
|
||||||
|
|
||||||
[[ $? -ne 0 ]] && { log ERROR "Could not delete modpack."; exit 1; }
|
[[ $? -ne 0 ]] && { log ERROR "Could not delete modpack."; exit 1; }
|
||||||
log INFO "Modpack ${GREEN}deleted${NC}: \$MODPACKS_FOLDER/$modpack_name.tar.gz"
|
log INFO "Modpack ${GREEN}successfully${NC} deleted: \$MODPACKS_FOLDER/$modpack_name.tar.gz"
|
||||||
|
|
||||||
# remove entry from database
|
# remove entry from database
|
||||||
sed -i "/^$modpack_index,/d" "$MODPACKS_DB_FILE"
|
sed -i "/^$modpack_index,/d" "$MODPACKS_DB_FILE"
|
||||||
@@ -1130,7 +1189,7 @@ function modpack_overwrite() {
|
|||||||
# use built-in export function
|
# use built-in export function
|
||||||
mod_export --modpack "$MODPACKS_FOLDER" "$modpack_name"
|
mod_export --modpack "$MODPACKS_FOLDER" "$modpack_name"
|
||||||
|
|
||||||
log INFO "Modpack ${GREEN}saved${NC}: \$MODPACKS_FOLDER/$modpack_name.tar.gz"
|
log INFO "Modpack ${GREEN}successfully${NC} saved: \$MODPACKS_FOLDER/$modpack_name.tar.gz"
|
||||||
sed -i "/^$modpack_index,/s/DISABLED/ENABLED/" "$MODPACKS_DB_FILE"
|
sed -i "/^$modpack_index,/s/DISABLED/ENABLED/" "$MODPACKS_DB_FILE"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -155,4 +155,5 @@ sudo curl "$REPO_URL"/h2mm --output "$DESTINATION_PATH/$SCRIPT_NAME"
|
|||||||
sudo chmod +x "$DESTINATION_PATH/$SCRIPT_NAME"
|
sudo chmod +x "$DESTINATION_PATH/$SCRIPT_NAME"
|
||||||
|
|
||||||
[[ ! -x "$(command -v $SCRIPT_NAME)" ]] && { log ERROR "Installation failed. Mod manager was not found in \$PATH." ; exit 1; }
|
[[ ! -x "$(command -v $SCRIPT_NAME)" ]] && { log ERROR "Installation failed. Mod manager was not found in \$PATH." ; exit 1; }
|
||||||
log INFO "Helldivers 2 Mod Manager CLI installed successfully to $DESTINATION_PATH/$SCRIPT_NAME. Use it by running '$SCRIPT_NAME'. Made with love <3."
|
log INFO "Helldivers 2 Mod Manager CLI ${GREEN}successfully${NC} installed: $DESTINATION_PATH/$SCRIPT_NAME."
|
||||||
|
log INFO "Use it by running '$SCRIPT_NAME'. Made with love <3 by v4n and contributors."
|
||||||
|
|||||||
Reference in New Issue
Block a user