module Init (runInit) where defaultConfig :: String defaultConfig = unlines [ "# Configuration for the Convex Client Generator.", "", "# (Required) The absolute path to the root of your Convex project.", "# This is the directory that contains the `convex/` folder and `package.json`.", "# NOTE: The parser expands `~` and `$HOME` environment variables.", "project_path: \"/path/to/your/convex/project\"", "", "# (Required) The absolute path to the generated TypeScript declarations.", "declarations_dir: \"/path/to/your/tmp/declarations\"", "", "# (Optional) The path where validation sandbox projects will be created.", "# Defaults to `~/.config/convex-schema-parser` if omitted.", "validation_path: \"~/.config/convex-schema-parser\"", "", "# (Required) A list of generation targets. You can have one or more.", "targets:", " # Example 1: Generate a Rust client for a backend service.", " - lang: Rust", " # A list of one or more output files for this target.", " output:", " - /path/to/my-rust-app/src/convex_api.rs", "", " # Example 2: Generate a Python client for data scripts.", " - lang: Python", " output:", " - /path/to/scripts/lib/convex_client.py" ] -- | Creates a default configuration file at the specified path. runInit :: FilePath -> IO () runInit configPath = do putStrLn $ "Creating default configuration file at: " ++ configPath writeFile configPath defaultConfig putStrLn "Configuration file created successfully. Please edit it with your project paths." mapM_ putStrLn [ "You will also need a `tsconfig.declarations.json` file next to your `package.json`.", "", "Example `tsconfig.declarations.json`:", "", "```", "{", " \"compilerOptions\": {", " // --- Output Configuration ---", " \"outDir\": \"./tmp/declarations\", // Output all files to a temporary directory", " \"rootDir\": \"./convex\", // The root of the source files we care about", "", " // --- Generation Settings ---", " \"declaration\": true, // Generate .d.ts files", " \"emitDeclarationOnly\": true, // Don't generate any .js files", " \"skipLibCheck\": true, // Speeds up compilation by not checking library files", "", " // --- Module Settings (to match Convex) ---", " \"module\": \"commonjs\",", " \"target\": \"es2020\"", " },", " // Tell tsc where to find the files to compile", " \"include\": [\"convex/**/*.ts\"]", "}", "```", "", "Also, adapt your `package.config` with a script that is called by this generator:", "", "```", " \"scripts\": {", " \"declarations:clean\": \"rm -rf tmp\",", " \"declarations:build\": \"tsc -p tsconfig.declarations.json\",", " \"declarations:copy-generated\": \"cp -r convex/_generated tmp/declarations/\",", " \"declarations\": \"npm run declarations:clean && npm run declarations:build && npm run declarations:copy-generated\",", " },", "```", "", "If that is done, you are all set to use `dev`. (:" ]