45 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
import json
 | 
						|
import os
 | 
						|
import sys
 | 
						|
 | 
						|
try:
 | 
						|
    from jupyter_client.kernelspec import install_kernel_spec
 | 
						|
except ImportError:
 | 
						|
    from IPython.kernel.kernelspec import install_kernel_spec
 | 
						|
from IPython.utils.tempdir import TemporaryDirectory
 | 
						|
 | 
						|
 | 
						|
kernel_json = {
 | 
						|
    "argv": [sys.executable,
 | 
						|
             "-m", "yap_kernel",
 | 
						|
             "-f", "{connection_file}"],
 | 
						|
    "display_name": "yap",
 | 
						|
    "mimetype": "text/x-prolog",
 | 
						|
    "language": "prolog",
 | 
						|
    "name": "yap",
 | 
						|
}
 | 
						|
 | 
						|
def install_my_kernel_spec(user=False):
 | 
						|
    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 resources once they're specified
 | 
						|
 | 
						|
        print('Installing IPython kernel spec')
 | 
						|
        install_kernel_spec(td, 'yap', user=False, replace=True)
 | 
						|
 | 
						|
def _is_root():
 | 
						|
    return True
 | 
						|
    try:
 | 
						|
        return os.geteuid() == 0
 | 
						|
    except AttributeError:
 | 
						|
        return False # assume not an admin on non-Unix platforms
 | 
						|
 | 
						|
def main(argv=[]):
 | 
						|
    user = '--user' in argv or not _is_root()
 | 
						|
    install_my_kernel_spec(user=user)
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
    main(argv=sys.argv)
 |