Commit 603111b

HPCesia <me@hpcesia.com>
2026-02-24 08:28:18
Add verbose arg for helper
1 parent c76d36c
Changed files (2)
addmods.bat
@@ -1,71 +1,128 @@
 @echo off
 setlocal EnableDelayedExpansion
 
-if "%~1"=="-h" goto :ShowHelp
-if "%~1"=="--help" goto :ShowHelp
-if "%~1"=="" (
-    echo Error: Missing platform argument.
-    goto :ShowHelp
+set "VERBOSE=0"
+set "PLATFORM_ARG="
+
+:PARSE_ARGS
+if "%~1" == "" goto CHECK_PLATFORM
+
+if /i "%~1" == "-h" goto ShowHelp
+if /i "%~1" == "--help" goto ShowHelp
+
+if /i "%~1" == "-v" (
+    set "VERBOSE=1"
+    shift
+    goto PARSE_ARGS
+)
+if /i "%~1" == "--verbose" (
+    set "VERBOSE=1"
+    shift
+    goto PARSE_ARGS
+)
+
+if /i "%~1" == "mr" (
+    if defined PLATFORM_ARG (
+        echo Error: Platform specified twice ('!PLATFORM_ARG!' and '%~1'). >&2
+        exit /b 1
+    )
+    set "PLATFORM_ARG=mr"
+    shift
+    goto PARSE_ARGS
+)
+if /i "%~1" == "cf" (
+    if defined PLATFORM_ARG (
+        echo Error: Platform specified twice ('!PLATFORM_ARG!' and '%~1'). >&2
+        exit /b 1
+    )
+    set "PLATFORM_ARG=cf"
+    shift
+    goto PARSE_ARGS
+)
+
+if "%~1:~0,1%" == "-" (
+    echo Error: Unknown option '%~1'. >&2
+    call :ShowHelp
+    exit /b 1
+)
+
+echo Error: Invalid argument '%~1'. Platform must be 'mr' or 'cf'. >&2
+exit /b 1
+
+:CHECK_PLATFORM
+if not defined PLATFORM_ARG (
+    echo Error: Missing platform argument (mr or cf). >&2
+    call :ShowHelp
+    exit /b 1
 )
-set "PLATFORM_ARG=%~1"
-set "PLATFORM_CMD="
-set "PLATFORM_NAME="
-if /I "%PLATFORM_ARG%"=="mr" (
-    set "PLATFORM_CMD=mr"
+
+if "%PLATFORM_ARG%" == "mr" (
     set "PLATFORM_NAME=Modrinth"
-) else if /I "%PLATFORM_ARG%"=="cf" (
-    set "PLATFORM_CMD=cf"
-    set "PLATFORM_NAME=CurseForge"
 ) else (
-    echo Error: Invalid platform '%PLATFORM_ARG%'. Allowed: 'mr', 'cf'.
-    exit /b 1
+    set "PLATFORM_NAME=CurseForge"
 )
 
 where packwiz >nul 2>&1
-if %errorlevel% neq 0 (
-    echo Error: 'packwiz' command not found in PATH.
+if %ERRORLEVEL% neq 0 (
+    echo Error: 'packwiz' command not found in PATH. >&2
     exit /b 1
 )
-echo Reading clipboard for: %PLATFORM_NAME% (%PLATFORM_CMD%)...
-echo ----------------------------------------
-for /f "usebackq tokens=*" %%L in (`powershell -NoProfile -Command "Get-Clipboard | Where-Object { $_ -match '\S' }"`) do (
-    set "LINE=%%L"
 
-    set "IS_COMMENT=0"
-    if "!LINE:~0,1!"=="#" set "IS_COMMENT=1"
-
-    if "!IS_COMMENT!"=="0" (
-        <nul set /p="Processing: !LINE! ... "
+echo Reading clipboard for: %PLATFORM_NAME% (%PLATFORM_ARG%)...
+if "%VERBOSE%" == "1" (
+    echo Verbose mode: ON
+)
+echo ----------------------------------------
 
-        packwiz %PLATFORM_CMD% add "!LINE!" >nul
+for /f "usebackq tokens=* delims=" %%L in (`powershell -NoProfile -Command "Get-Clipboard"`) do (
+    set "line=%%L"
+    if defined line (
+        if not "!line:~0,1!" == "#" (
+            <nul set /p "=Processing: !line! ... "
 
-        if !errorlevel! equ 0 (
-            echo OK
-        ) else (
-            echo FAILED
-            echo   [^^!] Error occurred while adding above link. 1>&2
+            if "!VERBOSE!" == "1" (
+                echo(
+                packwiz %PLATFORM_ARG% add "!line!"
+                if !errorlevel! equ 0 (
+                    echo -^> OK
+                ) else (
+                    echo -^> FAILED
+                )
+                echo ----------------------------------------
+            ) else (
+                packwiz %PLATFORM_ARG% add "!line!" >nul
+                if !errorlevel! equ 0 (
+                    echo OK
+                ) else (
+                    echo FAILED
+                    echo   [!] Error occurred while adding above link (use -v for details). >&2
+                )
+            )
         )
     )
 )
-echo ----------------------------------------
+
+if "%VERBOSE%" == "0" (
+    echo ----------------------------------------
+)
 echo Done.
 exit /b 0
 
 :ShowHelp
 echo Usage: %~nx0 ^<platform^> [OPTIONS]
-echo.
+echo(
 echo Description:
 echo   Read lines from the system clipboard and add them to packwiz.
-echo   Uses PowerShell to access the Windows clipboard.
-echo.
+echo(
 echo Arguments:
 echo   platform      The platform to add mods from.
 echo                 Must be either 'mr' (Modrinth) or 'cf' (CurseForge).
-echo.
+echo(
 echo Options:
+echo   -v, --verbose Show detailed output from packwiz command.
 echo   -h, --help    Show this help message and exit.
-echo.
+echo(
 echo Examples:
-echo   %~nx0 mr    REM Add mods from clipboard to Modrinth
-echo   %~nx0 cf    REM Add mods from clipboard to CurseForge
-exit /b 0
+echo   %~nx0 mr -v   # Add mods to Modrinth with detailed logs
+echo   %~nx0 cf      # Add mods to CurseForge silently
+goto :eof
addmods.sh
@@ -1,4 +1,8 @@
 #!/bin/sh
+
+VERBOSE=0
+PLATFORM_ARG=""
+
 show_help() {
   echo "Usage: $(basename "$0") <platform> [OPTIONS]"
   echo ""
@@ -11,11 +15,12 @@ show_help() {
   echo "                Must be either 'mr' (Modrinth) or 'cf' (CurseForge)."
   echo ""
   echo "Options:"
+  echo "  -v, --verbose Show detailed output from packwiz command."
   echo "  -h, --help    Show this help message and exit."
   echo ""
   echo "Examples:"
-  echo "  $(basename "$0") mr    # Add mods from clipboard to Modrinth"
-  echo "  $(basename "$0") cf    # Add mods from clipboard to CurseForge"
+  echo "  $(basename "$0") mr -v   # Add mods to Modrinth with detailed logs"
+  echo "  $(basename "$0") cf      # Add mods to CurseForge silently"
 }
 
 get_clipboard() {
@@ -42,47 +47,84 @@ get_clipboard() {
   fi
 }
 
-if [ $# -eq 0 ]; then
-  echo "Error: Missing platform argument." >&2
+while [ $# -gt 0 ]; do
+  case "$1" in
+  -h | --help)
+    show_help
+    exit 0
+    ;;
+  -v | --verbose)
+    VERBOSE=1
+    shift
+    ;;
+  mr | cf)
+    if [ -n "$PLATFORM_ARG" ]; then
+      echo "Error: Platform specified twice ('$PLATFORM_ARG' and '$1')." >&2
+      exit 1
+    fi
+    PLATFORM_ARG="$1"
+    shift
+    ;;
+  -*)
+    echo "Error: Unknown option '$1'." >&2
+    show_help
+    exit 1
+    ;;
+  *)
+    echo "Error: Invalid argument '$1'. Platform must be 'mr' or 'cf'." >&2
+    exit 1
+    ;;
+  esac
+done
+
+if [ -z "$PLATFORM_ARG" ]; then
+  echo "Error: Missing platform argument (mr or cf)." >&2
   show_help
   exit 1
 fi
-PLATFORM_CMD=""
-PLATFORM_NAME=""
-case "$1" in
--h | --help)
-  show_help
-  exit 0
-  ;;
-mr)
-  PLATFORM_CMD="mr"
+
+PLATFORM_CMD="$PLATFORM_ARG"
+if [ "$PLATFORM_CMD" = "mr" ]; then
   PLATFORM_NAME="Modrinth"
-  ;;
-cf)
-  PLATFORM_CMD="cf"
+else
   PLATFORM_NAME="CurseForge"
-  ;;
-*)
-  echo "Error: Invalid platform '$1'. Allowed: 'mr', 'cf'." >&2
-  exit 1
-  ;;
-esac
+fi
+
 if ! command -v packwiz >/dev/null 2>&1; then
   echo "Error: 'packwiz' command not found in PATH." >&2
   exit 1
 fi
 
 echo "Reading clipboard for: $PLATFORM_NAME ($PLATFORM_CMD)..."
+if [ "$VERBOSE" -eq 1 ]; then
+  echo "Verbose mode: ON"
+fi
 echo "----------------------------------------"
+
 get_clipboard | sed '/^[[:space:]]*$/d' | while IFS= read -r line; do
   case "$line" in \#*) continue ;; esac
+
   printf "Processing: %s ... " "$line"
-  if packwiz "$PLATFORM_CMD" add "$line" >/dev/null; then
-    echo "OK"
+
+  if [ "$VERBOSE" -eq 1 ]; then
+    echo ""
+    if packwiz "$PLATFORM_CMD" add "$line"; then
+      echo "-> OK"
+    else
+      echo "-> FAILED"
+    fi
+    echo "----------------------------------------"
   else
-    echo "FAILED"
-    echo "  [!] Error occurred while adding above link." >&2
+    if packwiz "$PLATFORM_CMD" add "$line" >/dev/null; then
+      echo "OK"
+    else
+      echo "FAILED"
+      echo "  [!] Error occurred while adding above link (use -v for details)." >&2
+    fi
   fi
 done
-echo "----------------------------------------"
+
+if [ "$VERBOSE" -eq 0 ]; then
+  echo "----------------------------------------"
+fi
 echo "Done."