UNPKG

@nteract/fs-kernels

Version:

A manager for the filesystem aspects of Juyter kernels

54 lines (53 loc) 1.85 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const child_process_1 = require("child_process"); const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const util_1 = require("util"); const readdir = util_1.promisify(fs_1.default.readdir); async function mapToKernelResources(kernelSpecs) { const resources = {}; for (const name of Object.keys(kernelSpecs)) { const kernelSpec = kernelSpecs[name]; const files = await readdir(kernelSpec.resource_dir); resources[name] = { name, files: files.map(file => path_1.default.join(kernelSpec.resource_dir, file)), resource_dir: kernelSpec.resource_dir, spec: kernelSpec.spec }; } return resources; } /** * find a kernel by name * @param kernelName the kernel to locate * @return kernelResource object */ async function find(kernelName) { return (await findAll())[kernelName]; } exports.find = find; /** * Get an array of kernelResources objects for the host environment * This matches the Jupyter notebook API for kernelspecs exactly * @return Promise for an array of kernelResources objects */ async function findAll() { return new Promise((resolve, reject) => { child_process_1.exec("python3 -m jupyter kernelspec list --json", async (err, stdout) => { if (err) { reject(err); } else { const kernelSpecs = JSON.parse(stdout).kernelspecs; const resources = await mapToKernelResources(kernelSpecs); resolve(resources); } }); }); } exports.findAll = findAll;