feat: added rename command (#62)
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
VERSION="0.5.5"
|
|
||||||
|
VERSION="0.5.6"
|
||||||
|
|
||||||
# --- Globals ---
|
# --- Globals ---
|
||||||
|
|
||||||
@@ -38,7 +39,7 @@ function substitute_home() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function get_version_major() {
|
function get_version_major() {
|
||||||
echo "$1" | awk -F. '{print $2}'
|
echo "$VERSION" | awk -F. '{print $2}'
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_filename_without_path() {
|
function get_filename_without_path() {
|
||||||
@@ -261,7 +262,7 @@ function initialize_directories() {
|
|||||||
|
|
||||||
[[ $? -ne 0 ]] && { log ERROR "Could not create database file."; exit 1; }
|
[[ $? -ne 0 ]] && { log ERROR "Could not create database file."; exit 1; }
|
||||||
|
|
||||||
echo "$VERSION" | awk -F. '{print $2}' > "$DB_FILE"
|
echo "$(get_version_major)" > "$DB_FILE"
|
||||||
log INFO "Database file ${GREEN}created${NC}: $DB_FILE"
|
log INFO "Database file ${GREEN}created${NC}: $DB_FILE"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -277,7 +278,7 @@ function initialize_modpack_directories() {
|
|||||||
touch "$MODPACKS_DB_FILE"
|
touch "$MODPACKS_DB_FILE"
|
||||||
[[ $? -ne 0 ]] && { log ERROR "Could not create modpacks database file."; exit 1; }
|
[[ $? -ne 0 ]] && { log ERROR "Could not create modpacks database file."; exit 1; }
|
||||||
|
|
||||||
echo "$VERSION" | awk -F. '{print $2}' > "$MODPACKS_DB_FILE"
|
echo "$(get_version_major)" > "$MODPACKS_DB_FILE"
|
||||||
log INFO "Modpacks directory and file ${GREEN}created${NC}: $MODPACKS_DB_FILE"
|
log INFO "Modpacks directory and file ${GREEN}created${NC}: $MODPACKS_DB_FILE"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -295,6 +296,7 @@ Commands:
|
|||||||
e, enable Enable a mod.
|
e, enable Enable a mod.
|
||||||
d, disable Disable a mod.
|
d, disable Disable a mod.
|
||||||
o, order Change load order of a mod.
|
o, order Change load order of a mod.
|
||||||
|
r, rename Rename a mod.
|
||||||
ex, export Export installed mods to a zip file.
|
ex, export Export installed mods to a zip file.
|
||||||
im, import Import mods from a zip file.
|
im, import Import mods from a zip file.
|
||||||
mc, modpack-create Create a modpack from the currently installed mods.
|
mc, modpack-create Create a modpack from the currently installed mods.
|
||||||
@@ -306,7 +308,7 @@ Commands:
|
|||||||
ns, nexus-setup Setup Nexus Mods integration.
|
ns, nexus-setup Setup Nexus Mods integration.
|
||||||
nu, nexus-update Start Nexus mods update process.
|
nu, nexus-update Start Nexus mods update process.
|
||||||
up, update Update h2mm to the latest version.
|
up, update Update h2mm to the latest version.
|
||||||
r, reset Reset all installed mods.
|
rr, reset Reset all installed mods.
|
||||||
help Display this help message.
|
help Display this help message.
|
||||||
For more information on usage, use h2mm <COMMAND> --help.
|
For more information on usage, use h2mm <COMMAND> --help.
|
||||||
Usage:
|
Usage:
|
||||||
@@ -418,6 +420,19 @@ Usage:
|
|||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function display_help_rename() {
|
||||||
|
cat << EOF
|
||||||
|
Usage: h2mm rename [OPTIONS] <"MOD_NAME"|MOD_INDEX> <NEW_NAME>
|
||||||
|
Rename a mod by name or index.
|
||||||
|
Options:
|
||||||
|
-n "MOD_NAME" Name of the mod to rename.
|
||||||
|
-i MOD_INDEX Index of the mod to rename.
|
||||||
|
Usage:
|
||||||
|
h2mm rename -n "Example mod" "New mod name"
|
||||||
|
h2mm rename -i 3 "New mod name"
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
function display_help_modpack_list() {
|
function display_help_modpack_list() {
|
||||||
cat << EOF
|
cat << EOF
|
||||||
Usage: h2mm modpack-list
|
Usage: h2mm modpack-list
|
||||||
@@ -1132,7 +1147,7 @@ function mod_import() {
|
|||||||
[[ ! -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 == false ]] && log INFO "Importing mods will ${RED}reset${NC} your mods."
|
[[ $modpack == false ]] && log INFO "Importing will ${RED}reset${NC} your mods."
|
||||||
mod_reset --no-path-reset
|
mod_reset --no-path-reset
|
||||||
|
|
||||||
# extract in temp directory
|
# extract in temp directory
|
||||||
@@ -1146,7 +1161,7 @@ function mod_import() {
|
|||||||
|
|
||||||
# fix breaking changes if the version number (from the first line) is different
|
# fix breaking changes if the version number (from the first line) is different
|
||||||
db_version=$(head -n 1 "$MODS_EXPORT_DIR/mods.csv")
|
db_version=$(head -n 1 "$MODS_EXPORT_DIR/mods.csv")
|
||||||
current_version=$(echo "$VERSION" | awk -F. '{print $2}')
|
current_version=$(get_version_major)
|
||||||
|
|
||||||
[[ -z "$db_version" || ! "$db_version" =~ ^[0-9]+$ ]] && { log ERROR "Invalid version number inside mods.csv from imported archive."; exit 1; }
|
[[ -z "$db_version" || ! "$db_version" =~ ^[0-9]+$ ]] && { log ERROR "Invalid version number inside mods.csv from imported archive."; exit 1; }
|
||||||
|
|
||||||
@@ -1347,6 +1362,48 @@ function mod_order {
|
|||||||
log INFO "Mod ${GREEN}successfully${NC} reindexed: \"$mod_name\" went from $mod_index to $new_index."
|
log INFO "Mod ${GREEN}successfully${NC} reindexed: \"$mod_name\" went from $mod_index to $new_index."
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function mod_rename() {
|
||||||
|
parse_help_has_arguments display_help_rename "$@"
|
||||||
|
local mod_name=""
|
||||||
|
local new_mod_name=""
|
||||||
|
local mod_index=""
|
||||||
|
|
||||||
|
# parse arguments
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
case "$1" in
|
||||||
|
"-i")
|
||||||
|
[[ -z "$2" || ! "$2" =~ ^[0-9]+$ ]] && { log ERROR "Invalid mod index."; exit 1; }
|
||||||
|
mod_index="$2"; shift 2
|
||||||
|
;;
|
||||||
|
"-n")
|
||||||
|
[[ -z "$2" ]] && { log ERROR "Mod name is required."; exit 1; }
|
||||||
|
mod_name="$2"; shift 2
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
new_mod_name="$1"; shift 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
[[ -z "$mod_name" && -z "$mod_index" ]] && { log ERROR "Mod name or index is required to rename."; exit 1; }
|
||||||
|
|
||||||
|
# find mod files
|
||||||
|
get_mod_name_and_index
|
||||||
|
|
||||||
|
# verify new mod name is not empty, does not contain commas and trim it
|
||||||
|
new_mod_name=$(echo "$new_mod_name" | sed 's/,//g' | sed 's/^[[:space:]]*//g' | sed 's/[[:space:]]*$//g')
|
||||||
|
[[ -z "$new_mod_name" ]] && { log ERROR "New mod name is required."; exit 1; }
|
||||||
|
|
||||||
|
# verify if new mod name already exists in the database
|
||||||
|
grep -q ",$new_mod_name," "$DB_FILE"
|
||||||
|
[[ $? -eq 0 ]] && { log ERROR "Mod with name \"$new_mod_name\" already exists."; exit 1; }
|
||||||
|
|
||||||
|
sed -i "s/^$mod_index,ENABLED,$mod_name,/$mod_index,ENABLED,$new_mod_name,/" "$DB_FILE"
|
||||||
|
sed -i "s/^$mod_index,DISABLED,$mod_name,/$mod_index,DISABLED,$new_mod_name,/" "$DB_FILE"
|
||||||
|
|
||||||
|
log INFO "Mod ${GREEN}successfully${NC} renamed: $mod_name -> $new_mod_name."
|
||||||
|
}
|
||||||
|
|
||||||
# --- Modpack management ---
|
# --- Modpack management ---
|
||||||
|
|
||||||
function modpack_list() {
|
function modpack_list() {
|
||||||
@@ -1432,7 +1489,7 @@ function modpack_create() {
|
|||||||
OLD_MODS_DIR="$MODS_DIR"
|
OLD_MODS_DIR="$MODS_DIR"
|
||||||
MODS_DIR="$(mktemp -d)"
|
MODS_DIR="$(mktemp -d)"
|
||||||
DB_FILE="$MODS_DIR/mods.csv"
|
DB_FILE="$MODS_DIR/mods.csv"
|
||||||
echo "$(get_version_major "$VERSION")" > "$DB_FILE"
|
echo "$(get_version_major)" > "$DB_FILE"
|
||||||
|
|
||||||
# install selected mods to temp directory
|
# install selected mods to temp directory
|
||||||
for entry in "${mod_entries[@]}"; do
|
for entry in "${mod_entries[@]}"; do
|
||||||
@@ -1945,6 +2002,9 @@ function main() {
|
|||||||
"order"|"o")
|
"order"|"o")
|
||||||
mod_order "$@"
|
mod_order "$@"
|
||||||
;;
|
;;
|
||||||
|
"rename"|"r")
|
||||||
|
mod_rename "$@"
|
||||||
|
;;
|
||||||
"modpack-list"|"ml")
|
"modpack-list"|"ml")
|
||||||
modpack_list "$@"
|
modpack_list "$@"
|
||||||
;;
|
;;
|
||||||
@@ -1972,7 +2032,7 @@ function main() {
|
|||||||
"nexus")
|
"nexus")
|
||||||
nexus "$@"
|
nexus "$@"
|
||||||
;;
|
;;
|
||||||
"reset"|"r")
|
"reset"|"rr")
|
||||||
mod_reset "$@"
|
mod_reset "$@"
|
||||||
;;
|
;;
|
||||||
"version"|"v"|"-v"|"--version")
|
"version"|"v"|"-v"|"--version")
|
||||||
|
|||||||
Reference in New Issue
Block a user