syntaxis/scripts/common/find-config.nu
Jesús Pérez 9cef9b8d57 refactor: consolidate configuration directories
Merge _configs/ into config/ for single configuration directory.
Update all path references.

Changes:
- Move _configs/* to config/
- Update .gitignore for new patterns
- No code references to _configs/ found

Impact: -1 root directory (layout_conventions.md compliance)
2025-12-26 18:36:23 +00:00

72 lines
1.8 KiB
Plaintext

#!/usr/bin/env nu
# Common config file finder for syntaxis scripts
#
# Finds configuration files in standard locations.
#
# SEARCH ORDER (uses first found):
# 1. .syntaxis/{filename} - syntaxis specific config
# 2. .project/{filename} - Generic project config
# 3. .coder/{filename} - Documentation tracking config
# 4. {filename} - Current directory fallback
#
# EXAMPLES:
# # Find config file
# let config = (find-config "workspace.toml")
#
# # Find with default
# let config = (find-config-or "config.toml" "workspace.toml")
#
# # Find database file
# let db_path = (find-db-path "workspace.db")
# Find config file in standard locations
# Returns first existing path, or empty string if not found
export def find-config [filename: string]: nothing -> string {
let candidates = [
$".syntaxis/($filename)"
$".project/($filename)"
$".coder/($filename)"
$filename
]
let found = ($candidates | where { $in | path exists } | first)
if ($found | is-empty) {
""
} else {
$found
}
}
# Find config file or return default
# Returns first existing path, or default if none found
export def find-config-or [filename: string, default: string]: nothing -> string {
let result = (find-config $filename)
if ($result | is-empty) {
$default
} else {
$result
}
}
# Find database file in standard locations
# Returns first existing DB, or defaults to .syntaxis/ if none exist
export def find-db-path [filename: string]: nothing -> string {
let config_path = (find-config $filename)
if ($config_path | is-empty) {
$".syntaxis/($filename)"
} else {
$config_path
}
}
# Tests
#[test]
def test-find-config [] {
# This would need tempdir support - skipped in basic version
true
}