UNPKG

8.56 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../../src/cli/install/run.js"],"names":["options","pkg","board","process","env","USER","Error","webPort","WEB_PORT","address","ADDRESS","token","TOKEN","user","interactive","defaults","answers","type","name","message","when","default","validate","host","port","Number","isInteger","Boolean","choices","value","checked","os","id","filter","useDisplay","displays","console","log","stdio","err","clientDirectory","__dirname","scriptsDirectory","execScript","script","cwd","POOLIOT_USER","BOARD_ID","forEach","display","confirmReboot","reboot"],"mappings":"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","file":"run.js","sourcesContent":["/* eslint-disable no-implied-eval */\nimport { execSync } from 'child_process';\nimport { dirname } from 'path';\nimport { prompt } from 'inquirer';\nimport config from '../../config';\nimport createSystemdService from './createSystemdService';\nimport createConfigFile from './createConfigFile';\nimport detectBoard from '../../main-process/utils/detectBoard';\nimport parseHostPort from '../../main-process/utils/parseHostPort';\n\nexport default async (options, pkg) => {\n const board = detectBoard();\n\n if (process.env.USER !== 'root') {\n throw new Error(\n 'The install script must be run with root user. Use : sudo pooliot-client install',\n );\n }\n\n options = {\n webPort: options.webPort || config.WEB_PORT || 80,\n address: options.address || config.ADDRESS,\n token: options.token || config.TOKEN,\n user: (options.user !== 'root' && options.user) || config.USER,\n interactive: options.interactive,\n };\n\n const defaults = {\n ...options,\n user: options.user || board.user,\n };\n\n const answers = await prompt([\n {\n type: 'input',\n name: 'address',\n message: 'Address (https://host:port)',\n when: !options.address,\n default: defaults.address,\n validate: address => {\n if (!address) return 'address cannot be empty';\n const [host, port] = parseHostPort(address);\n if (!host) return 'host is invalid';\n if (!port || !Number.isInteger(Number(port))) return 'port must be an integer';\n return true;\n },\n },\n\n {\n type: 'input',\n name: 'token',\n message: 'Token',\n when: !options.token,\n default: defaults.token,\n },\n\n {\n type: 'input',\n name: 'user',\n message: 'User',\n when: Boolean(options.interactive && !defaults.user),\n default: defaults.user,\n validate: user => {\n if (!user) return 'user must be provided';\n if (user === 'root') return 'root is not allowed';\n return true;\n },\n },\n\n {\n type: 'confirm',\n name: 'useDisplay',\n message: 'Use your device for display ?',\n default: true,\n when: Boolean(options.interactive),\n },\n\n {\n type: 'checkbox',\n name: 'displays',\n message: 'What displays do you want to install ?',\n choices: [\n { value: 'chromium', name: 'chromium: a web browser', checked: true },\n { value: 'firefox', name: 'firefox: a web browser' },\n {\n value: 'livestreamer',\n name: 'livestreamer: video streams - http://docs.livestreamer.io/',\n checked: true,\n },\n board.os.id === 'raspbian' && {\n value: 'omxplayer',\n name: 'omxplayer: video player - https://github.com/popcornmix/omxplayer',\n checked: true,\n },\n ].filter(Boolean),\n when: answers => options.interactive && answers.useDisplay,\n },\n ]);\n\n const { address, token, user, useDisplay, displays } = { ...defaults, ...answers };\n\n console.log(`Add user ${user} if missing`);\n try {\n execSync(`useradd ${user} --create-home`, { stdio: 'inherit' });\n } catch (err) {}\n\n const clientDirectory = dirname(dirname(dirname(__dirname)));\n const scriptsDirectory = `${clientDirectory}/scripts/install/`;\n\n const execScript = script =>\n execSync(`sh ${script}.sh`, {\n stdio: 'inherit',\n cwd: scriptsDirectory,\n env: { ...process.env, POOLIOT_USER: user },\n });\n\n execScript('essentials');\n\n if (board.id === 'rpi' && board.os.id === 'raspbian') {\n execScript('raspbian/prepare');\n } else if (board.id === 'tkb') {\n // TODO detect tinker os\n execScript('tinker-os/prepare');\n }\n\n if (useDisplay) {\n execScript('display/essentials', {\n env: { BOARD_ID: board.id },\n });\n\n displays.forEach(display => {\n execScript(`display/${display}`);\n });\n }\n\n console.log(`Write /etc/systemd/system/${pkg.name}.service`);\n createSystemdService(clientDirectory, pkg);\n createConfigFile({ address, token, user, webPort: options.webPort });\n\n console.log('Enable and start systemctl service');\n execSync(`systemctl enable ${pkg.name}`, { stdio: 'inherit' });\n execSync(`systemctl start ${pkg.name}`, { stdio: 'inherit' });\n\n if (options.interactive) {\n const confirmReboot = await prompt([\n {\n type: 'confirm',\n name: 'reboot',\n message: 'reboot ?',\n },\n ]);\n\n if (confirmReboot.reboot) {\n execSync('reboot');\n }\n }\n};\n"]}
\No newline at end of file