UNPKG

laraship

Version:

Set sail with Laravel - Docker environment generator for Laravel projects

30 lines (27 loc) 1.2 kB
import { z } from 'zod'; import type { FeaturePreferences } from '../types'; const backupStorageSchema = z.enum(['local', 's3', 'ftp']); const dbActionsSchema = z.enum(['migrate', 'seed', 'both', 'none']); const databaseSetupSchema = z.enum(['existing', 'mysql']); const redisSetupSchema = z.enum(['existing', 'redis', 'none']); export const featurePreferencesSchema = z.object({ enableAutoPull: z.boolean().optional(), branch: z.string().min(1).optional(), dbActions: dbActionsSchema.optional(), enableBackups: z.boolean().optional(), backupStorage: backupStorageSchema.optional(), backupItems: z.array(z.enum(['db', 'files'])).optional(), databaseSetup: databaseSetupSchema.optional(), redisSetup: redisSetupSchema.optional(), additionalServices: z.array(z.string()).optional() }); export function validateFeaturePreferences(data: unknown): FeaturePreferences { try { return featurePreferencesSchema.parse(data); } catch (error) { if (error instanceof z.ZodError) { throw new Error(`Invalid configuration: ${error.errors.map(e => e.message).join(', ')}`); } throw error; } }