text: import argparse
  import json
  import os
  import sys
  
  from jupyter_client.kernelspec import KernelSpecManager
  from IPython.utils.tempdir import TemporaryDirectory
  
  kernel_json = {
      "argv": [sys.executable, "-m", "xrobotkernel", "-f", "{connection_file}"],
      "display_name": "XRobot",
      "language": "text",
  }
  
  
  def install_my_kernel_spec(user=False, prefix=None):
      with TemporaryDirectory() as td:
          os.chmod(td, 0o755)  # Starts off as 700, not user readable
          with open(os.path.join(td, 'kernel.json'), 'w') as f:
              json.dump(kernel_json, f, sort_keys=True)
          # TODO: Copy any resources
  
          print('Installing Jupyter kernel spec')
          KernelSpecManager().install_kernel_spec(td, 'echo', user=user, prefix=prefix)
  
  
  def _is_root():
      try:
          return os.geteuid() == 0
      except AttributeError:
          return False  # assume not an admin on non-Unix platforms
  
  
  def main(argv=None):
      ap = argparse.ArgumentParser()
      ap.add_argument('--sys-prefix', action='store_true',
          help="Install to sys.prefix (e.g. a virtualenv or conda env)")
      ap.add_argument('--prefix',
          help="Install to the given prefix. "
               "Kernelspec will be installed in {PREFIX}/share/jupyter/kernels/")
      args = ap.parse_args(argv)
  
      if args.sys_prefix:
          args.prefix = sys.prefix
  
      install_my_kernel_spec(prefix=args.prefix)
  
  if __name__ == '__main__':
      main()
  