init.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import { TauriConfig } from 'types'
  2. import { inject } from '../template'
  3. import { resolve } from 'path'
  4. import toml, { JsonMap } from '@tauri-apps/toml'
  5. import { readFileSync, writeFileSync } from 'fs'
  6. import { kebabCase } from 'lodash'
  7. import { CargoManifest } from 'src/types/cargo'
  8. module.exports = (args: {
  9. directory: string
  10. force: false | 'conf' | 'template' | 'all'
  11. logging: boolean
  12. tauriPath?: string
  13. customConfig?: Partial<TauriConfig>
  14. appName?: string
  15. }): boolean => {
  16. const injectResult = inject(
  17. args.directory,
  18. 'all',
  19. {
  20. force: args.force,
  21. logging: args.logging,
  22. tauriPath: args.tauriPath
  23. },
  24. args.customConfig
  25. )
  26. if (args.appName) {
  27. const manifestPath = resolve(args.directory, 'src-tauri/Cargo.toml')
  28. const cargoManifest = (toml.parse(
  29. readFileSync(manifestPath).toString()
  30. ) as unknown) as CargoManifest
  31. const binName = kebabCase(args.appName)
  32. cargoManifest.package.name = binName
  33. cargoManifest.package['default-run'] = binName
  34. if (cargoManifest.bin?.length) {
  35. cargoManifest.bin[0].name = binName
  36. }
  37. writeFileSync(
  38. manifestPath,
  39. toml.stringify((cargoManifest as unknown) as JsonMap)
  40. )
  41. }
  42. return injectResult
  43. }