diff --git a/source/dub/commandline.d b/source/dub/commandline.d index 947aefe..4af0457 100644 --- a/source/dub/commandline.d +++ b/source/dub/commandline.d @@ -1243,9 +1243,9 @@ size_t resolveVersion(in Package[] packages) { writeln("Select version of '", package_id, "' to remove from location '", location, "':"); - foreach(i, pack; packages) - writeln(i, ". ", pack.version_); - writeln(packages.length, ". ", "all versions"); + foreach (i, pack; packages) + writefln("%s) %s", i + 1, pack.version_); + writeln(packages.length + 1, ") ", "all versions"); while (true) { writef("> "); auto inp = readln(); @@ -1253,12 +1253,12 @@ return size_t.max; if (inp.length > 1) { try { - immutable selection = inp[0 .. $ - 1].to!size_t; + immutable selection = inp[0 .. $ - 1].to!size_t - 1; if (selection <= packages.length) return selection; } catch (ConvException e) { } - logError("Please enter a number between 0 and %s.", packages.length); + logError("Please enter a number between 1 and %s.", packages.length + 1); } } } diff --git a/test/interactive-remove.sh b/test/interactive-remove.sh index a523e32..69667b2 100755 --- a/test/interactive-remove.sh +++ b/test/interactive-remove.sh @@ -8,14 +8,14 @@ echo "Non-interactive remove should fail" 1>&2 exit 1 fi -echo 0 | $DUB remove dub | tr --delete '\n' | grep --ignore-case 'select.*0\.9\.20.*0\.9\.21.*' +echo 1 | $DUB remove dub | tr --delete '\n' | grep --ignore-case 'select.*0\.9\.20.*0\.9\.21.*' if [ -d $HOME/.dub/packages/dub-0.9.20/dub ]; then echo "Failed to remove dub-0.9.20" 1>&2 exit 1 fi $DUB fetch dub --version=0.9.20 && [ -d $HOME/.dub/packages/dub-0.9.20/dub ] # EOF aborts remove -echo -n '' | $DUB remove dub +echo -xn '' | $DUB remove dub if [ ! -d $HOME/.dub/packages/dub-0.9.20/dub ] || [ ! -d $HOME/.dub/packages/dub-0.9.21/dub ]; then echo "Aborted dub still removed a package" 1>&2 exit 1