UNPKG

6.05 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../../src/main-process/utils/detectBoard.js"],"names":["getModelInfo","encoding","err","getHardwareInfo","cpuInfo","e","data","Map","split","map","line","replace","filter","length","splitted","trim","slice","join","model","get","serial","revision","getOsInfo","snakeCaseToCamelCase","s","toLowerCase","m","toUpperCase","parsed","parseFileSync","osInfo","Object","keys","forEach","key","console","warn","id","isPi","startsWith","rpiVersion","require","detect","hardwareInfo","user","name","info","os","hardware","touchscreen","sound","type","jack","hdmi","cache"],"mappings":"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","file":"detectBoard.js","sourcesContent":["import { readFileSync } from 'fs';\nimport envfile from 'envfile';\n\nconst getModelInfo = () => {\n try {\n return readFileSync('/proc/device-tree/model', { encoding: 'utf-8' });\n } catch (err) {\n return '';\n }\n};\n\nconst getHardwareInfo = () => {\n let cpuInfo;\n try {\n cpuInfo = readFileSync('/proc/cpuinfo', { encoding: 'utf-8' });\n } catch (e) {\n return {};\n }\n\n const data = new Map(\n cpuInfo\n .split('\\n')\n .map(line => line.replace(/\\t/g, ''))\n .filter(line => line.length)\n .map((line: string) => {\n const splitted = line.split(':');\n return [\n splitted[0].trim(),\n splitted\n .slice(1)\n .join(':')\n .trim(),\n ];\n }),\n );\n\n return {\n model: data.get('Hardware'),\n serial: data.get('Serial'),\n revision: data.get('Revision'),\n };\n};\n\nconst getOsInfo = () => {\n const snakeCaseToCamelCase = (s: string) =>\n s.toLowerCase().replace(/(_\\w)/g, m => m[1].toUpperCase());\n\n try {\n const parsed = envfile.parseFileSync('/etc/os-release');\n const osInfo = {};\n Object.keys(parsed).forEach(key => {\n osInfo[snakeCaseToCamelCase(key)] = parsed[key];\n });\n\n return osInfo;\n } catch (err) {\n console.warn(err);\n return {\n id: 'unknown',\n };\n }\n};\n\nconst isPi = model => model.startsWith('Raspberry Pi');\n\nconst rpiVersion = () => {\n try {\n // eslint-disable-next-line\n return require('raspi-ver');\n } catch (err) {\n return null;\n }\n};\n\nconst detect = () => {\n const hardwareInfo = getHardwareInfo();\n const osInfo = getOsInfo();\n const model = getModelInfo();\n\n let user;\n\n if (osInfo.id === 'osmc') {\n user = 'osmc';\n }\n\n if (isPi(model)) {\n return {\n id: 'rpi',\n name: 'Raspberry PI',\n user: user || 'pi',\n info: rpiVersion(),\n os: osInfo,\n hardware: hardwareInfo,\n touchscreen: 'FT5406 memory based driver',\n sound: {\n type: 'alsamixer',\n jack: [3, 1],\n hdmi: [3, 2],\n },\n };\n }\n\n if (hardwareInfo.model && hardwareInfo.model.startsWith('Rockchip')) {\n return {\n id: 'tkb',\n name: 'Tinker Board',\n user: 'linaro',\n os: osInfo,\n hardware: hardwareInfo,\n touchscreen: 'fts_ts',\n sound: {\n type: 'pulseaudio',\n jack: [2],\n hdmi: [3],\n },\n };\n }\n\n if (hardwareInfo.model === 'Vero4K') {\n return {\n id: 'vero4k',\n name: 'Vero4K',\n user,\n os: osInfo,\n hardware: hardwareInfo,\n };\n }\n\n return {\n id: 'unknown',\n name: 'Unknown',\n os: osInfo,\n hardware: hardwareInfo,\n };\n};\n\nlet cache;\n\nexport default () => {\n if (!cache) cache = detect();\n return cache;\n};\n"]}
\No newline at end of file