|
import fs from 'node:fs'; |
|
import path from 'node:path'; |
|
import colors from 'kleur'; |
|
import sade from 'sade'; |
|
import { load_config } from './core/config/index.js'; |
|
import { coalesce_to_error } from './utils/error.js'; |
|
|
|
|
|
function handle_error(e) { |
|
const error = coalesce_to_error(e); |
|
|
|
if (error.name === 'SyntaxError') throw error; |
|
|
|
console.error(colors.bold().red(`> ${error.message}`)); |
|
if (error.stack) { |
|
console.error(colors.gray(error.stack.split('\n').slice(1).join('\n'))); |
|
} |
|
|
|
process.exit(1); |
|
} |
|
|
|
const pkg = JSON.parse(fs.readFileSync(new URL('../package.json', import.meta.url), 'utf-8')); |
|
const prog = sade('svelte-kit').version(pkg.version); |
|
|
|
prog |
|
.command('sync') |
|
.describe('Synchronise generated type definitions') |
|
.option('--mode', 'Specify a mode for loading environment variables', 'development') |
|
.action(async ({ mode }) => { |
|
if (!fs.existsSync('svelte.config.js')) { |
|
console.warn(`Missing ${path.resolve('svelte.config.js')} — skipping`); |
|
return; |
|
} |
|
|
|
try { |
|
const config = await load_config(); |
|
const sync = await import('./core/sync/sync.js'); |
|
sync.all_types(config, mode); |
|
} catch (error) { |
|
handle_error(error); |
|
} |
|
}); |
|
|
|
prog.parse(process.argv, { unknown: (arg) => `Unknown option: ${arg}` }); |
|
|