diff --git a/src/components/DockerBuildDebugger.tsx b/src/components/DockerBuildDebugger.tsx index 586b724..ba78830 100644 --- a/src/components/DockerBuildDebugger.tsx +++ b/src/components/DockerBuildDebugger.tsx @@ -1,405 +1,85 @@ -import { useState } from 'react' import { useKV } from '@/hooks/use-kv' import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs' -import { Button } from '@/components/ui/button' -import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card' -import { Textarea } from '@/components/ui/textarea' -import { Badge } from '@/components/ui/badge' -import { ScrollArea } from '@/components/ui/scroll-area' -import { Separator } from '@/components/ui/separator' -import { Alert, AlertDescription } from '@/components/ui/alert' -import { Terminal, Warning, CheckCircle, Copy, Code, MagnifyingGlass, Sparkle } from '@phosphor-icons/react' -import { parseDockerLog, getSolutionsForError, knowledgeBase } from '@/lib/docker-parser' -import { DockerError, KnowledgeBaseItem } from '@/types/docker' +import { Terminal, MagnifyingGlass } from '@phosphor-icons/react' +import { parseDockerLog } from '@/lib/docker-parser' +import { DockerError } from '@/types/docker' +import { ErrorList } from '@/components/docker-build-debugger/ErrorList' +import { LogAnalyzer } from '@/components/docker-build-debugger/LogAnalyzer' +import { KnowledgeBaseView } from '@/components/docker-build-debugger/KnowledgeBaseView' import { toast } from 'sonner' -import { motion, AnimatePresence } from 'framer-motion' +import dockerBuildDebuggerText from '@/data/docker-build-debugger.json' +import { useState } from 'react' export function DockerBuildDebugger() { const [logInput, setLogInput] = useKV('docker-log-input', '') const [parsedErrors, setParsedErrors] = useState([]) - const [selectedKbItem, setSelectedKbItem] = useState(null) - const [searchQuery, setSearchQuery] = useState('') const handleParse = () => { if (!logInput.trim()) { - toast.error('Please paste a Docker build log first') + toast.error(dockerBuildDebuggerText.analyzer.emptyLogError) return } - + const errors = parseDockerLog(logInput) - + if (errors.length === 0) { - toast.info('No errors detected in the log') + toast.info(dockerBuildDebuggerText.analyzer.noErrorsToast) } else { setParsedErrors(errors) - toast.success(`Found ${errors.length} error${errors.length > 1 ? 's' : ''}`) + toast.success( + dockerBuildDebuggerText.analyzer.errorsFoundToast + .replace('{{count}}', String(errors.length)) + .replace('{{plural}}', errors.length > 1 ? 's' : '') + ) } } const handleCopy = (text: string, label: string) => { navigator.clipboard.writeText(text) - toast.success(`${label} copied to clipboard`) + toast.success(dockerBuildDebuggerText.errors.copiedToast.replace('{{label}}', label)) } - const filteredKnowledgeBase = knowledgeBase.filter(item => - item.title.toLowerCase().includes(searchQuery.toLowerCase()) || - item.category.toLowerCase().includes(searchQuery.toLowerCase()) || - item.explanation.toLowerCase().includes(searchQuery.toLowerCase()) - ) - return (
- Log Analyzer - Analyze + {dockerBuildDebuggerText.tabs.analyzer.label} + {dockerBuildDebuggerText.tabs.analyzer.shortLabel} - Knowledge Base - Knowledge + {dockerBuildDebuggerText.tabs.knowledge.label} + {dockerBuildDebuggerText.tabs.knowledge.shortLabel} - - -
-
- - - Paste Build Log - - - Copy your Docker build output and paste it below for analysis - -
-
-
- -