diff --git a/bin/pulsar-shell b/bin/pulsar-shell index 2934e65db5361..71d427ca7524b 100755 --- a/bin/pulsar-shell +++ b/bin/pulsar-shell @@ -34,6 +34,7 @@ BINDIR=$(dirname "$PRG") export PULSAR_HOME=`cd -P $BINDIR/..;pwd` . "$PULSAR_HOME/bin/pulsar-admin-common.sh" OPTS="-Dorg.jline.terminal.jansi=false $OPTS" +OPTS="-Dpulsar.shell.working.dir=$(pwd) $OPTS" DEFAULT_CONFIG="-Dpulsar.shell.config.default=$PULSAR_CLIENT_CONF" #Change to PULSAR_HOME to support relative paths diff --git a/bin/pulsar-shell.cmd b/bin/pulsar-shell.cmd index ffc1b4f6bf2f3..c339d34289572 100644 --- a/bin/pulsar-shell.cmd +++ b/bin/pulsar-shell.cmd @@ -28,6 +28,7 @@ if ERRORLEVEL 1 ( ) set "OPTS=%OPTS% -Dorg.jline.terminal.jansi=false" +set "OPTS=%OPTS% -Dpulsar.shell.config.default=%cd%" set "DEFAULT_CONFIG=-Dpulsar.shell.config.default="%PULSAR_CLIENT_CONF%"" cd "%PULSAR_HOME%" "%JAVACMD%" %OPTS% %DEFAULT_CONFIG% org.apache.pulsar.shell.PulsarShell %* \ No newline at end of file diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/shell/ConfigShell.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/shell/ConfigShell.java index 48bc423336d0e..7aa87f07055ac 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/shell/ConfigShell.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/shell/ConfigShell.java @@ -50,6 +50,15 @@ @Parameters(commandDescription = "Manage Pulsar shell configurations.") public class ConfigShell implements ShellCommandsProvider { + private static final String LOCAL_FILES_BASE_DIR = System.getProperty("pulsar.shell.working.dir"); + + static File resolveLocalFile(String input) { + if (LOCAL_FILES_BASE_DIR != null) { + return new File(LOCAL_FILES_BASE_DIR, input); + } + return new File(input); + } + @Getter @Parameters @@ -305,7 +314,7 @@ public boolean run() { value = inlineValue; } } else if (file != null) { - final File f = new File(file); + final File f = resolveLocalFile(file); if (!f.exists()) { print("File " + f.getAbsolutePath() + " not found."); return false; diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/shell/JCommanderCompleter.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/shell/JCommanderCompleter.java index 6ef608173fd41..4f75243ccd0cd 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/shell/JCommanderCompleter.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/shell/JCommanderCompleter.java @@ -22,7 +22,6 @@ import com.beust.jcommander.JCommander; import com.beust.jcommander.ParameterDescription; import com.beust.jcommander.WrappedParameter; -import java.io.File; import java.lang.annotation.Retention; import java.lang.annotation.Target; import java.lang.reflect.Field; @@ -172,7 +171,7 @@ private static Completer getCustomCompleter(ParameterDescription param, ShellCon if (parameterCompleter != null) { final ParameterCompleter.Type completer = parameterCompleter.type(); if (completer == ParameterCompleter.Type.FILES) { - valueCompleter = new Completers.FilesCompleter(new File(System.getProperty("user.dir"))); + valueCompleter = new Completers.FilesCompleter(ConfigShell.resolveLocalFile(".")); } else if (completer == ParameterCompleter.Type.CONFIGS) { valueCompleter = new Completer() { @Override