mirror of
https://github.com/tauri-apps/tauri.git
synced 2024-12-01 19:44:39 +03:00
fix(tauri.js) do not swallow init errors, fix conf inject (#802)
* fix(tauri.js) do not swallow init errors, fix conf inject * fix(tauri.js) tests
This commit is contained in:
parent
a26cffc575
commit
f208a68e40
5
.changes/tauri-init-fix.md
Normal file
5
.changes/tauri-init-fix.md
Normal file
@ -0,0 +1,5 @@
|
||||
---
|
||||
"tauri.js": patch
|
||||
---
|
||||
|
||||
Fixes `tauri init` not generating `tauri.conf.json` on the Vue CLI Plugin.
|
@ -18,6 +18,10 @@ interface InjectOptions {
|
||||
}
|
||||
type InjectionType = 'conf' | 'template' | 'all'
|
||||
|
||||
interface UnknownObject {
|
||||
[index: string]: any
|
||||
}
|
||||
|
||||
const injectConfFile = (
|
||||
injectPath: string,
|
||||
{ force, logging }: InjectOptions,
|
||||
@ -29,27 +33,22 @@ const injectConfFile = (
|
||||
Run \`tauri init --force conf\` to overwrite.`)
|
||||
if (!force) return false
|
||||
} else {
|
||||
try {
|
||||
removeSync(path)
|
||||
const finalConf = merge(defaultConfig as any, customConfig as any) as {
|
||||
[index: string]: any
|
||||
removeSync(path)
|
||||
Object.keys(defaultConfig).forEach(key => {
|
||||
// Options marked `null` should be removed
|
||||
/* eslint-disable security/detect-object-injection */
|
||||
if ((customConfig as UnknownObject)[key] === null) {
|
||||
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
||||
delete (defaultConfig as UnknownObject)[key]
|
||||
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
||||
delete (customConfig as UnknownObject)[key]
|
||||
}
|
||||
Object.keys(finalConf).forEach(key => {
|
||||
// Options marked `null` should be removed
|
||||
/* eslint-disable security/detect-object-injection */
|
||||
if (finalConf[key] === null) {
|
||||
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
||||
delete finalConf[key]
|
||||
}
|
||||
/* eslint-enable security/detect-object-injection */
|
||||
})
|
||||
writeFileSync(path, JSON.stringify(finalConf, undefined, 2))
|
||||
} catch (e) {
|
||||
if (logging) console.log(e)
|
||||
return false
|
||||
} finally {
|
||||
if (logging) log('Successfully wrote tauri.conf.json')
|
||||
}
|
||||
/* eslint-enable security/detect-object-injection */
|
||||
})
|
||||
const finalConf = merge(defaultConfig as any, customConfig as any) as UnknownObject
|
||||
|
||||
writeFileSync(path, JSON.stringify(finalConf, undefined, 2))
|
||||
if (logging) log('Successfully wrote tauri.conf.json')
|
||||
}
|
||||
}
|
||||
|
||||
@ -82,21 +81,15 @@ Run \`tauri init --force template\` to overwrite.`)
|
||||
? `{ path = "${resolveTauriPath(tauriPath)}" }`
|
||||
: `{ version = "${resolveCurrentTauriVersion()}" }`
|
||||
|
||||
try {
|
||||
removeSync(dir)
|
||||
copyTemplates({
|
||||
source: resolve(__dirname, '../../templates/src-tauri'),
|
||||
scope: {
|
||||
tauriDep
|
||||
},
|
||||
target: dir
|
||||
})
|
||||
} catch (e) {
|
||||
if (logging) console.log(e)
|
||||
return false
|
||||
} finally {
|
||||
if (logging) log('Successfully wrote src-tauri')
|
||||
}
|
||||
removeSync(dir)
|
||||
copyTemplates({
|
||||
source: resolve(__dirname, '../../templates/src-tauri'),
|
||||
scope: {
|
||||
tauriDep
|
||||
},
|
||||
target: dir
|
||||
})
|
||||
if (logging) log('Successfully wrote src-tauri')
|
||||
}
|
||||
|
||||
const inject = (
|
||||
|
@ -27,7 +27,9 @@ describe('[CLI] tauri.js', () => {
|
||||
it('will pass on an available command', async () => {
|
||||
jest.spyOn(console, 'log')
|
||||
jest.mock('fs')
|
||||
try {
|
||||
tauri('init')
|
||||
} catch {}
|
||||
expect(console.log.mock.calls[0][0].split('.')[0]).toBe('[tauri]: running init')
|
||||
jest.clearAllMocks()
|
||||
})
|
||||
|
Loading…
Reference in New Issue
Block a user