Kaynağa Gözat

feat(tauri.js/init): set appName in api instead of bin (#897)

Noah Klayman 5 yıl önce
ebeveyn
işleme
da6580ff7d

+ 3 - 24
cli/tauri.js/bin/tauri-init.js

@@ -1,17 +1,7 @@
 const parseArgs = require('minimist')
 const inquirer = require('inquirer')
-const {
-  resolve
-} = require('path')
-const {
-  readFileSync,
-  writeFileSync
-} = require('fs')
-const {
-  merge,
-  kebabCase
-} = require('lodash')
-const toml = require('@tauri-apps/toml')
+const { resolve } = require('path')
+const { merge } = require('lodash')
 
 /**
  * @type {object}
@@ -130,6 +120,7 @@ async function runInit(config = {}) {
     force: argv.f || null,
     logging: argv.l || null,
     tauriPath: argv.t || null,
+    appName: appName || argv.A || null,
     customConfig: merge(configOptions, {
       build: {
         distDir: argv.D,
@@ -143,18 +134,6 @@ async function runInit(config = {}) {
     })
   })
 
-  if (appName || argv.A) {
-    const manifestPath = resolve(directory, 'src-tauri/Cargo.toml')
-    const cargoManifest = toml.parse(readFileSync(manifestPath).toString())
-    let binName = kebabCase(appName || argv.A)
-    cargoManifest.package.name = binName
-    cargoManifest.package['default-run'] = binName
-    if (cargoManifest.bin && cargoManifest.bin.length) {
-      cargoManifest.bin[0].name = binName
-    }
-    writeFileSync(manifestPath, toml.stringify(cargoManifest))
-  }
-
   const {
     installDependencies
   } = require('../dist/api/dependency-manager')

+ 19 - 1
cli/tauri.js/src/api/init.ts

@@ -1,5 +1,10 @@
 import { TauriConfig } from 'types'
 import { inject } from '../template'
+import { resolve } from 'path'
+import toml, { JsonMap } from '@tauri-apps/toml'
+import { readFileSync, writeFileSync } from 'fs'
+import { kebabCase } from 'lodash'
+import { CargoManifest } from 'src/types/cargo'
 
 module.exports = (args: {
   directory: string
@@ -7,8 +12,9 @@ module.exports = (args: {
   logging: boolean
   tauriPath?: string
   customConfig?: Partial<TauriConfig>
+  appName?: string
 }): boolean => {
-  return inject(
+  const injectResult = inject(
     args.directory,
     'all',
     {
@@ -18,4 +24,16 @@ module.exports = (args: {
     },
     args.customConfig
   )
+  if (args.appName) {
+    const manifestPath = resolve(args.directory, 'src-tauri/Cargo.toml')
+    const cargoManifest = toml.parse(readFileSync(manifestPath).toString()) as unknown as CargoManifest
+    const binName = kebabCase(args.appName)
+    cargoManifest.package.name = binName
+    cargoManifest.package['default-run'] = binName
+    if (cargoManifest.bin?.length) {
+      cargoManifest.bin[0].name = binName
+    }
+    writeFileSync(manifestPath, toml.stringify(cargoManifest as unknown as JsonMap))
+  }
+  return injectResult
 }

+ 5 - 1
cli/tauri.js/src/types/cargo.ts

@@ -1,6 +1,10 @@
 export interface CargoManifest {
   dependencies: { [k: string]: string | CargoManifestDependency }
-  package: { version: string }
+  package: { version: string, name: string, 'default-run': string }
+  bin: Array<{
+    name: string
+    path: string
+  }>
 }
 
 export interface CargoManifestDependency {