Commit 603111b
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."