123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- import toml from '@tauri-apps/toml'
- import chalk from 'chalk'
- import { sync as spawn } from 'cross-spawn'
- import fs from 'fs'
- import os from 'os'
- import path from 'path'
- import { appDir, tauriDir } from '../helpers/app-paths'
- import { TauriConfig } from './../types/config'
- interface DirInfo {
- path: string
- name: string
- type?: 'folder' | 'file'
- children?: DirInfo[]
- }
- function dirTree(filename: string): DirInfo {
- const stats = fs.lstatSync(filename)
- const info: DirInfo = {
- path: filename,
- name: path.basename(filename)
- }
- if (stats.isDirectory()) {
- info.type = 'folder'
- info.children = fs.readdirSync(filename).map(function(child: string) {
- return dirTree(filename + '/' + child)
- })
- } else {
- info.type = 'file'
- }
- return info
- }
- function getVersion(
- command: string,
- args: string[] = [],
- formatter?: (output: string) => string
- ): string {
- try {
- const child = spawn(command, [...args, '--version'])
- if (child.status === 0) {
- const output = String(child.output[1])
- return chalk
- .green(formatter === undefined ? output : formatter(output))
- .replace('\n', '')
- }
- return chalk.red('Not installed')
- } catch (err) {
- return chalk.red('Not installed')
- }
- }
- interface Info {
- section?: boolean
- key: string
- value?: string
- }
- function printInfo(info: Info): void {
- console.log(
- `${info.section ? '\n' : ''}${info.key}${
- info.value === undefined ? '' : ' - ' + info.value
- }`
- )
- }
- function printAppInfo(tauriDir: string): void {
- printInfo({ key: 'App', section: true })
- try {
- const tomlPath = path.join(tauriDir, 'Cargo.toml')
- const tomlFile = fs.readFileSync(tomlPath)
- // @ts-ignore
- const tomlContents = toml.parse(tomlFile)
- const tauriVersion = (): string => {
- const tauri = tomlContents.dependencies.tauri
- if (tauri) {
- if (tauri.version) {
- return chalk.green(tauri.version)
- }
- if (tauri.path) {
- try {
- const tauriTomlPath = path.resolve(
- tauriDir,
- tauri.path,
- 'Cargo.toml'
- )
- const tauriTomlFile = fs.readFileSync(tauriTomlPath)
- // @ts-ignore
- const tauriTomlContents = toml.parse(tauriTomlFile)
- return chalk.green(
- `${tauriTomlContents.package.version} (from source)`
- )
- } catch (_) {}
- }
- }
- return chalk.red('unknown')
- }
- printInfo({ key: ' tauri', value: tauriVersion() })
- } catch (_) {}
- try {
- const tauriMode = (config: TauriConfig): string => {
- if (config.tauri.embeddedServer) {
- return chalk.green(
- config.tauri.embeddedServer.active ? 'embedded-server' : 'no-server'
- )
- }
- return chalk.red('unset')
- }
- const configPath = path.join(tauriDir, 'tauri.conf.json')
- const config = __non_webpack_require__(configPath) as TauriConfig
- printInfo({ key: ' mode', value: tauriMode(config) })
- printInfo({
- key: ' build-type',
- value:
- config.tauri.bundle && config.tauri.bundle.active ? 'bundle' : 'build'
- })
- printInfo({
- key: ' CSP',
- value: config.tauri.security ? config.tauri.security.csp : 'unset'
- })
- printInfo({
- key: ' Windows',
- value: config.tauri.edge && config.tauri.edge.active ? 'Edge' : 'MSHTML'
- })
- printInfo({
- key: ' distDir',
- value: config.build
- ? chalk.green(config.build.distDir)
- : chalk.red('unset')
- })
- printInfo({
- key: ' devPath',
- value: config.build
- ? chalk.green(config.build.devPath)
- : chalk.red('unset')
- })
- } catch (_) {}
- }
- module.exports = () => {
- printInfo({
- key: 'Operating System',
- value: chalk.green(
- `${os.type()}(${os.release()}) - ${os.platform()}/${os.arch()}`
- ),
- section: true
- })
- printInfo({ key: 'Node.js environment', section: true })
- printInfo({ key: ' Node.js', value: chalk.green(process.version.slice(1)) })
- printInfo({
- key: ' tauri.js',
- value: chalk.green(require('../../package.json').version)
- })
- printInfo({ key: 'Rust environment', section: true })
- printInfo({
- key: ' rustc',
- value: getVersion('rustc', [], output => output.split(' ')[1])
- })
- printInfo({
- key: ' cargo',
- value: getVersion('cargo', [], output => output.split(' ')[1])
- })
- printInfo({ key: ' tauri-cli', value: getVersion('cargo', ['tauri-cli']) })
- printInfo({ key: 'Global packages', section: true })
- printInfo({ key: ' NPM', value: getVersion('npm') })
- printInfo({ key: ' yarn', value: getVersion('yarn') })
- printInfo({ key: 'App directory structure', section: true })
- const tree = dirTree(appDir)
- for (const artifact of tree.children || []) {
- if (artifact.type === 'folder') {
- console.log(`/${artifact.name}`)
- }
- }
- printAppInfo(tauriDir)
- }
|