From 923b39e41526bc2c12f269872cfa4053d8f2c85b Mon Sep 17 00:00:00 2001 From: rishikanthc Date: Tue, 30 Dec 2025 10:55:07 -0800 Subject: [PATCH] fix: ensure directories exist before writing adapter scripts - Create env directory in copy script functions before writing - Fixes initialization errors for Parakeet, Canary, and Sortformer adapters - Update Makefile to use web/project-site for website commands - Add build target to Makefile for building Scriberr binary --- Makefile | 26 ++++++++++++++++--- .../transcription/adapters/canary_adapter.go | 5 ++++ .../adapters/parakeet_adapter.go | 10 +++++++ .../adapters/sortformer_adapter.go | 5 ++++ 4 files changed, 43 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 63df84e5..4886a63f 100644 --- a/Makefile +++ b/Makefile @@ -19,19 +19,39 @@ docs-clean: ## Clean generated API documentation website-dev: docs ## Start local development server for project website @echo "Starting website development server..." - cd web/landing && npm run dev + cd web/project-site && npm run dev website-build: docs ## Build project website for GitHub Pages @echo "Building project website..." - cd web/landing && npm run build + cd web/project-site && npm run build @echo "✓ Website built to /docs directory" website-serve: website-build ## Build and preview project website locally @echo "Previewing website..." - cd web/landing && npm run preview + cd web/project-site && npm run preview docs-serve: website-serve ## Alias for website-serve +build: ## Build Scriberr binary with embedded frontend + @echo "Starting Scriberr build process..." + @echo "Cleaning old build files..." + @rm -f scriberr + @rm -rf internal/web/dist + @cd web/frontend && rm -rf dist/ && rm -rf assets/ 2>/dev/null || true + @echo "✓ Build files cleaned" + @echo "Building React frontend..." + @cd web/frontend && npm run build + @echo "✓ Frontend built" + @echo "Copying frontend assets for embedding..." + @rm -rf internal/web/dist + @cp -r web/frontend/dist internal/web/ + @echo "✓ Assets copied" + @echo "Building Go binary..." + @go clean -cache + @go build -o scriberr cmd/server/main.go + @echo "✓ Binary built successfully" + @echo "Build complete. Run './scriberr' to start the server" + build-cli: ## Build CLI binaries for Linux, macOS, and Windows @echo "Building CLI binaries..." @mkdir -p bin/cli diff --git a/internal/transcription/adapters/canary_adapter.go b/internal/transcription/adapters/canary_adapter.go index ef0e05ba..c69f6ce3 100644 --- a/internal/transcription/adapters/canary_adapter.go +++ b/internal/transcription/adapters/canary_adapter.go @@ -279,6 +279,11 @@ func (c *CanaryAdapter) downloadCanaryModel() error { // copyTranscriptionScript creates the Python script for Canary transcription func (c *CanaryAdapter) copyTranscriptionScript() error { + // Ensure directory exists before writing script + if err := os.MkdirAll(c.envPath, 0755); err != nil { + return fmt.Errorf("failed to create directory: %w", err) + } + scriptContent, err := nvidiaScripts.ReadFile("py/nvidia/canary_transcribe.py") if err != nil { return fmt.Errorf("failed to read embedded canary_transcribe.py: %w", err) diff --git a/internal/transcription/adapters/parakeet_adapter.go b/internal/transcription/adapters/parakeet_adapter.go index bd4577a1..4fa252d4 100644 --- a/internal/transcription/adapters/parakeet_adapter.go +++ b/internal/transcription/adapters/parakeet_adapter.go @@ -247,6 +247,11 @@ func (p *ParakeetAdapter) downloadParakeetModel() error { // copyTranscriptionScript creates the Python script for Parakeet transcription func (p *ParakeetAdapter) copyTranscriptionScript() error { + // Ensure directory exists before writing script + if err := os.MkdirAll(p.envPath, 0755); err != nil { + return fmt.Errorf("failed to create directory: %w", err) + } + scriptContent, err := nvidiaScripts.ReadFile("py/nvidia/parakeet_transcribe.py") if err != nil { return fmt.Errorf("failed to read embedded transcribe.py: %w", err) @@ -559,6 +564,11 @@ func (p *ParakeetAdapter) parseResult(tempDir string, input interfaces.AudioInpu // copyBufferedScript creates the Python script for NeMo buffered inference func (p *ParakeetAdapter) copyBufferedScript() error { + // Ensure directory exists before writing script + if err := os.MkdirAll(p.envPath, 0755); err != nil { + return fmt.Errorf("failed to create directory: %w", err) + } + scriptContent, err := nvidiaScripts.ReadFile("py/nvidia/parakeet_transcribe_buffered.py") if err != nil { return fmt.Errorf("failed to read embedded transcribe_buffered.py: %w", err) diff --git a/internal/transcription/adapters/sortformer_adapter.go b/internal/transcription/adapters/sortformer_adapter.go index aea12d4a..7d1f74cc 100644 --- a/internal/transcription/adapters/sortformer_adapter.go +++ b/internal/transcription/adapters/sortformer_adapter.go @@ -263,6 +263,11 @@ func (s *SortformerAdapter) downloadSortformerModel() error { // copyDiarizationScript creates the Python script for Sortformer diarization func (s *SortformerAdapter) copyDiarizationScript() error { + // Ensure directory exists before writing script + if err := os.MkdirAll(s.envPath, 0755); err != nil { + return fmt.Errorf("failed to create directory: %w", err) + } + scriptContent, err := nvidiaScripts.ReadFile("py/nvidia/sortformer_diarize.py") if err != nil { return fmt.Errorf("failed to read embedded sortformer_diarize.py: %w", err)