mirror of
https://github.com/samsonjs/vibetunnel.git
synced 2026-04-27 15:17:38 +00:00
Add SwiftLint and SwiftFormat Husky pre-commit hooks for iOS and mac (#165)
Co-authored-by: Peter Steinberger <steipete@gmail.com> Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
parent
68ce36828a
commit
1d9112b9d3
8 changed files with 105 additions and 21 deletions
|
|
@ -36,9 +36,9 @@ struct VibeTunnelApp: App {
|
|||
|
||||
private var colorScheme: ColorScheme? {
|
||||
switch colorSchemePreferenceRaw {
|
||||
case "light": return .light
|
||||
case "dark": return .dark
|
||||
default: return nil
|
||||
case "light": .light
|
||||
case "dark": .dark
|
||||
default: nil // System default
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -106,9 +106,9 @@ struct GeneralSettingsView: View {
|
|||
|
||||
var displayName: String {
|
||||
switch self {
|
||||
case .system: return "System"
|
||||
case .light: return "Light"
|
||||
case .dark: return "Dark"
|
||||
case .system: "System"
|
||||
case .light: "Light"
|
||||
case .dark: "Dark"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -46,7 +46,9 @@ struct WelcomeView: View {
|
|||
HStack(spacing: 8) {
|
||||
ForEach(0..<5) { index in
|
||||
Circle()
|
||||
.fill(index == currentPage ? Theme.Colors.primaryAccent : Theme.Colors.secondaryText.opacity(0.3))
|
||||
.fill(index == currentPage ?
|
||||
Theme.Colors.primaryAccent :
|
||||
Theme.Colors.secondaryText.opacity(0.3))
|
||||
.frame(width: 8, height: 8)
|
||||
.animation(.easeInOut, value: currentPage)
|
||||
}
|
||||
|
|
|
|||
78
ios/scripts/lint.sh
Executable file
78
ios/scripts/lint.sh
Executable file
|
|
@ -0,0 +1,78 @@
|
|||
#!/bin/bash
|
||||
|
||||
# =============================================================================
|
||||
# =============================================================================
|
||||
#
|
||||
# This script runs SwiftFormat and SwiftLint on the VibeTunnel iOS codebase
|
||||
# to ensure consistent code style and catch potential issues.
|
||||
#
|
||||
# USAGE:
|
||||
# ./scripts/lint.sh
|
||||
#
|
||||
# DEPENDENCIES:
|
||||
# - swiftformat (brew install swiftformat)
|
||||
# - swiftlint (brew install swiftlint)
|
||||
#
|
||||
# FEATURES:
|
||||
# - Automatically formats Swift code with SwiftFormat
|
||||
# - Fixes auto-correctable SwiftLint issues
|
||||
# - Reports remaining SwiftLint warnings and errors
|
||||
#
|
||||
# EXIT CODES:
|
||||
# 0 - Success (all checks passed)
|
||||
# 1 - Missing dependencies or linting errors
|
||||
#
|
||||
# =============================================================================
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Source common functions
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
[[ -f "$SCRIPT_DIR/common.sh" ]] && source "$SCRIPT_DIR/common.sh" || true
|
||||
|
||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||||
|
||||
# Change to project root
|
||||
cd "$PROJECT_ROOT"
|
||||
|
||||
# Check if project has Swift files
|
||||
if ! find . -name "*.swift" -not -path "./.build/*" -not -path "./build/*" | head -1 | grep -q .; then
|
||||
print_warning "No Swift files found in project"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
print_info "Running SwiftFormat..."
|
||||
if command -v swiftformat &> /dev/null; then
|
||||
if swiftformat . --config ../apple/.swiftformat --verbose; then
|
||||
print_success "SwiftFormat completed successfully"
|
||||
else
|
||||
print_error "SwiftFormat encountered errors"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
print_error "SwiftFormat not installed"
|
||||
echo " Install with: brew install swiftformat"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
print_info "Running SwiftLint..."
|
||||
if command -v swiftlint &> /dev/null; then
|
||||
# First run auto-corrections
|
||||
print_info "Applying auto-corrections..."
|
||||
swiftlint --fix --config ../apple/.swiftlint.yml
|
||||
|
||||
# Then run full lint check
|
||||
print_info "Checking for remaining issues..."
|
||||
if swiftlint --config ../apple/.swiftlint.yml; then
|
||||
print_success "SwiftLint completed successfully"
|
||||
else
|
||||
print_warning "SwiftLint found issues that require manual attention"
|
||||
# Don't exit with error as these may be warnings
|
||||
fi
|
||||
else
|
||||
print_error "SwiftLint not installed"
|
||||
echo " Install with: brew install swiftlint"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
print_success "Linting complete!"
|
||||
|
|
@ -45,7 +45,7 @@ fi
|
|||
# Run SwiftFormat
|
||||
print_info "Running SwiftFormat..."
|
||||
if command -v swiftformat &> /dev/null; then
|
||||
if swiftformat . --verbose; then
|
||||
if swiftformat . --config ../apple/.swiftformat --verbose; then
|
||||
print_success "SwiftFormat completed successfully"
|
||||
else
|
||||
print_error "SwiftFormat encountered errors"
|
||||
|
|
@ -62,11 +62,11 @@ print_info "Running SwiftLint..."
|
|||
if command -v swiftlint &> /dev/null; then
|
||||
# First run auto-corrections
|
||||
print_info "Applying auto-corrections..."
|
||||
swiftlint --fix
|
||||
swiftlint --fix --config ../apple/.swiftlint.yml
|
||||
|
||||
# Then run full lint check
|
||||
print_info "Checking for remaining issues..."
|
||||
if swiftlint; then
|
||||
if swiftlint --config ../apple/.swiftlint.yml; then
|
||||
print_success "SwiftLint completed successfully"
|
||||
else
|
||||
print_warning "SwiftLint found issues that require manual attention"
|
||||
|
|
|
|||
|
|
@ -122,6 +122,10 @@
|
|||
"bash -c 'tsc --noEmit --project tsconfig.server.json'",
|
||||
"bash -c 'tsc --noEmit --project tsconfig.client.json'",
|
||||
"bash -c 'tsc --noEmit --project tsconfig.sw.json'"
|
||||
],
|
||||
"../{ios,mac}/**/*.swift": [
|
||||
"bash -c 'cd ../ios && ./scripts/lint.sh'",
|
||||
"bash -c 'cd ../mac && ./scripts/lint.sh'"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue