Как использовать sudo в аммонитовой оболочке "

Одна вещь, которая отвлекает от Scala REPL, это то, что нет прямого способа загрузки зависимостей maven/sbt.

Я нашел раковину аммонита, которая имеет удобную вещь, как load.ivy что довольно мило у этого также есть приличная обертка по файловой системе.

Однако я не нашел способ сделать sudo. Так, например, если я перебираю файлы в каталоге и у меня нет разрешения на папку, команда не выполняется

ls.rec! cwd | (x => x.size -> x.last) sortBy (-_._1) take 3

ошибка

java.nio.file.AccessDeniedException: /Users/foo/Library/Saved Application State/com.bitrock.appinstaller.savedState
  sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
  sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
  sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
  sun.nio.fs.UnixFileSystemProvider.newDirectoryStream(UnixFileSystemProvider.java:407)
  java.nio.file.Files.newDirectoryStream(Files.java:457)

Кто-нибудь знает, как сделать sudo в аммонитовой оболочке?

1 ответ

Существует несколько способов предоставить пароль для sudo из вызовов процесса JVM:

Лично я нашел самое простое решение - установить SUDO_ASKSPASS переменная окружения. Что-то вроде

val sudo = "sudo"
val askPass = "/usr/bin/ssh-askpass"
val procBuilder = Process(List(sudo, "-A", ???), None, "SUDO_ASKPASS" -> askPass)
val res = procBuilder.!
Другие вопросы по тегам