padreati / rapaio-jupyter-kernel

Java jupyter kernel
MIT License
48 stars 6 forks source link

installer does not inform about permission errors #29

Closed maxandersen closed 1 year ago

maxandersen commented 1 year ago

when installing I get these options:

[1] /Users/manderse/Library/Jupyter/kernels
[2] /usr/local/share/jupyter/kernels
[3] /usr/share/jupyter/kernels

if I pick 3 it goes ahead and setup:

Installation path: /usr/share/jupyter/kernels
Kernel dir: rapaio-jupyter-kernel
kernel.json:
{
  "argv": [
    "java",
    "--enable-preview",
    "-jar",
    "/usr/share/jupyter/kernels/rapaio-jupyter-kernel/rapaio-jupyter-kernel-1.0.1.jar",
    "{connection_file}"
  ],
  "display_name": "Rapaio Kernel",
  "language": "java",
  "interrupt_mode": "message",
  "env": {
    "RJK_COMPILER_OPTIONS": "",
    "RJK_INIT_SCRIPT": "",
    "RJK_TIMEOUT_MILLIS": "-1"
  }
}

but that file does not exist as user does not have permission to write to that directory.

the installer does not complain at all about it. it should :)

padreati commented 1 year ago

I have tested the same scenario, but I receive a different message.

I have selected also [3] and it displays a similar message like in your case:

Installation path: /usr/share/jupyter/kernels
Kernel dir: rapaio-jupyter-kernel
kernel.json: 
{
  "argv": [
    "java",
    "--enable-preview",
    "-jar",
    "/usr/share/jupyter/kernels/rapaio-jupyter-kernel/rapaio-jupyter-kernel.jar",
    "{connection_file}"
  ],
  "display_name": "Rapaio Kernel",
  "language": "java",
  "interrupt_mode": "message",
  "env": {
    "RJK_COMPILER_OPTIONS": "",
    "RJK_INIT_SCRIPT": "",
    "RJK_TIMEOUT_MILLIS": "-1"
  }
}

The intention is to show the user what the installer will do: where it will be installed, which will be the kernel directory and which will be the content of kernel.json. It does nothing yet. The next displayed text is:

Installer is ready. Do you want to continue [Y/N] ?

If the answer is not capital Y then the installer will quit. (I will improve this behavior in order to tell the user that the installation was canceled due to not receiving capital Y. Right now it quits quietly, which is a customer bad experience.)

In my case if I continue with capital Y I receive:

Could not create installation directory.

Again, this message looks incomplete, I will improve it with another one like: "Could not create installation directory. Check if it is a valid path or there are enough permissions."

That being said, is there a possibility to push another key other than capital Y? If this is not the case, can you provide me with other details, like do you use a SecurityManager? I know that security manager was deprecated in Java 17 and it will be removed, but I can invest in that if is needed.