"use client"; import { CodeBlock, Pre } from "fumadocs-ui/components/codeblock"; import { Label } from "@/components/ui/label" import { Switch } from "@/components/ui/switch" import { useEffect, useState } from "react"; import PresetsBuilderSection from "@/components/builder-sections/presets"; import CKANVersionBuilderSection from "@/components/builder-sections/ckan-version"; import CKANExtensionsBuilderSection from "@/components/builder-sections/ckan-extensions"; import FeaturesBuilderSection from "@/components/builder-sections/features"; export type Config = { preset: string | undefined; ckanVersion: string; extensions: string[]; features: string[]; }; export const selectedCardClasses = "bg-blue-100 dark:bg-blue-950 border-blue-300 dark:border-blue-900 border-2"; export default function Builder() { const [downloadScript, setDownloadScript] = useState(true); const downloadScriptString = `#!/usr/bin/env bash # Update/Upgrade system dependencies sudo apt update -y sudo apt upgrade -y # Install curl sudo apt install curl -y # Change to the home directory cd ~/ # Download the ckan-devstaller binary file wget https://github.com/dathere/ckan-devstaller/releases/download/0.3.1/ckan-devstaller # Add execute permission to ckan-devstaller binary file sudo chmod +x ./ckan-devstaller\n\n# Run ckan-devstaller script\n`; const [command, setCommand] = useState("./ckan-devstaller"); const [config, setConfig] = useState({ preset: "ckan-only", ckanVersion: "2.11.4", extensions: [], features: [], }); // Update command string when user changes configuration useEffect(() => { const ckanVersionString = `--ckan-version ${config.ckanVersion}`; const extensionsString = config.extensions.length > 0 ? ` \\\n--extensions ${config.extensions.join(" ")}` : undefined; const featuresString = config.features.length > 0 ? ` \\\n--features ${config.features.join(" ")}` : undefined; setCommand( `./ckan-devstaller \\ ${ckanVersionString}${extensionsString ? extensionsString : ""}${featuresString ? featuresString : ""}`, ); }, [config]); return (

ckan-devstaller command

setDownloadScript(!downloadScript)} id="download-script" />
{downloadScript ? downloadScriptString : ""}{command}

Selected configuration

CKAN version: {config.ckanVersion}

{config.extensions.length > 0 && ( <> Extensions:
    {config.extensions.map((extension) => (
  • {extension}
  • ))}
)} {config.features.length > 0 && ( <> Features:
    {config.features.map((feature) => (
  • {feature}
  • ))}
)}

Configuration options

); }