Skip to content

Conversation

@TimInTech
Copy link
Owner

@TimInTech TimInTech commented Oct 3, 2025

…docs cleanup

Zusammenfassung von Sourcery

Verbessert das Installationsskript durch Optimierung der DNS-Resolver-Verwaltung, des Umgangs mit Umgebungsvariablen, der Port-Erkennung und der Diensthärtung.

Fehlerbehebungen:

  • Stellt sicher, dass das Installationsprogramm bei Fehlern sofort beendet wird, indem der Trap-Handler aktualisiert wird

Verbesserungen:

  • Fügt Helferfunktionen hinzu, um /etc/resolv.conf mit externen Fallback-Resolvern zu sichern und zu schreiben und schließlich Pi-hole zu bevorzugen
  • Verbessert die Handhabung von systemd-resolved, indem der Dienst gestoppt, deaktiviert und die symbolisch verknüpfte resolv.conf ersetzt wird
  • Erweitert die Port-Konflikterkennung, um auf netstat zurückzugreifen, wenn ss nicht verfügbar ist
  • Nimmt iproute2 in die Paketinstallation auf, um Netzwerkdienstprogramme zu unterstützen
  • Extrahiert und speichert SUITE_API_KEY und SUITE_LOG_LEVEL in einer .env-Datei, mit Standardgenerierung, falls diese fehlen
  • Härtet den pihole-suite systemd-Dienst mit zusätzlichen Sandbox-Schutzmaßnahmen
Original summary in English

Summary by Sourcery

Improve the installer script by enhancing DNS resolver management, environment variable handling, port detection, and service hardening.

Bug Fixes:

  • Ensure installer exits immediately on errors by updating the trap handler

Enhancements:

  • Add helper functions to backup and write /etc/resolv.conf with external fallback resolvers and finalize to prefer Pi-hole
  • Enhance systemd-resolved handling by stopping, disabling service, and replacing symlinked resolv.conf
  • Extend port conflict detection to fallback to netstat when ss is unavailable
  • Include iproute2 in package installation to support network utilities
  • Extract and persist SUITE_API_KEY and SUITE_LOG_LEVEL in a .env file with default generation if missing
  • Harden the pihole-suite systemd service with additional sandbox protections

@sourcery-ai
Copy link

sourcery-ai bot commented Oct 3, 2025

Leitfaden für Reviewer

Dieser PR überarbeitet das Installationsskript, um eine robuste DNS-Resolver-Behandlung (Backup, Fallback, Finalisierung) zu implementieren, die Verwaltung von Umgebungsvariablen für die Python-Suite zu optimieren (API-Schlüssel- und Log-Level-Persistenz), die Sicherheit des systemd-Dienstes zu erhöhen, die Erkennung von Portkonflikten zu verbessern und die Paket- und Konfigurationsverwaltung aufzuräumen.

Sequenzdiagramm für verbesserte DNS-Resolver-Behandlung während der Installation

sequenceDiagram
    participant Installer
    participant Systemd
    participant OS
    participant ResolvConf
    Installer->>Systemd: Check if systemd-resolved is active
    alt systemd-resolved is active
        Installer->>Systemd: Stop systemd-resolved
        Installer->>Systemd: Disable systemd-resolved
        Installer->>ResolvConf: Backup /etc/resolv.conf if symlink
        Installer->>ResolvConf: Write fallback resolvers (1.1.1.1, 9.9.9.9)
    end
    Installer->>ResolvConf: After Pi-hole install, point resolver to 127.0.0.1 and fallbacks
    Installer->>OS: Success message: Resolver prepared and finalized
Loading

Änderungen auf Dateiebene

Änderung Details Dateien
Erweitertes DNS-Resolver-Management
  • Einführung der Hilfsfunktionen write_resolv_conf und extract_env_value
  • Definition von RESOLV_CONF-Konstanten und Backup-Pfad, sowie Konfiguration von FALLBACK_RESOLVERS
  • Erkennung und Ersetzung von /etc/resolv.conf-Symlinks, Backup nur einmalig
  • Anwendung von Fallback-Resolvern und Finalisierung zur Bevorzugung von Pi-hole auf localhost
  • Erweiterung des Error-Traps zum Beenden bei Fehlern
install.sh
Verbesserte Erkennung von Portkonflikten
  • Verwendung von ss zur Überprüfung der Portnutzung, falls verfügbar
  • Rückgriff auf netstat, wenn ss fehlt
  • Warnung und Überspringen der Prüfungen, wenn keines der Tools vorhanden ist
install.sh
Optimiertes Suite-Umgebungsmanagement
  • Definition von SUITE_API_KEY_ENV und SUITE_LOG_LEVEL_ENV am Anfang
  • Extrahierung oder Generierung von SUITE_API_KEY und Speicherung in .env mit korrekten Berechtigungen
  • Neuschreiben von .env über das Installationsskript anstelle eines Ad-hoc-Here-Docs
  • Aktualisierung von show_summary zum dynamischen Lesen des API-Schlüssels aus .env
install.sh
Verbesserter Schutz von systemd-Diensten
  • Hinzufügen von ProtectKernelTunables, ProtectKernelModules und ProtectControlGroups zur Service-Einheit
  • Beibehaltung strenger System- und Home-Schutzmechanismen und begrenzter Schreibpfade
install.sh
Kleinere Verfeinerungen und Abhängigkeitsaktualisierungen
  • Hinzufügen von iproute2 zur apt-Installationsliste
  • Verwendung eines einfach-zitierten Here-Docs für die unbound-Konfiguration, um Variablenexpansion zu verhindern
  • Anpassung des Trap-Handlers, um exit bei Fehlern aufzurufen
install.sh

Tipps und Befehle

Interaktion mit Sourcery

  • Eine neue Überprüfung auslösen: Kommentieren Sie @sourcery-ai review im Pull Request.
  • Diskussionen fortsetzen: Antworten Sie direkt auf Sourcerys Überprüfungskommentare.
  • Ein GitHub-Issue aus einem Überprüfungskommentar generieren: Bitten Sie Sourcery, ein Issue aus einem Überprüfungskommentar zu erstellen, indem Sie darauf antworten. Sie können auch auf einen Überprüfungskommentar mit @sourcery-ai issue antworten, um ein Issue daraus zu erstellen.
  • Einen Pull Request Titel generieren: Schreiben Sie @sourcery-ai an beliebiger Stelle im Pull Request Titel, um jederzeit einen Titel zu generieren. Sie können auch @sourcery-ai title im Pull Request kommentieren, um den Titel jederzeit neu zu generieren.
  • Eine Pull Request Zusammenfassung generieren: Schreiben Sie @sourcery-ai summary an beliebiger Stelle im Pull Request-Text, um jederzeit eine PR-Zusammenfassung genau dort zu generieren, wo Sie sie haben möchten. Sie können auch @sourcery-ai summary im Pull Request kommentieren, um die Zusammenfassung jederzeit neu zu generieren.
  • Leitfaden für Reviewer generieren: Kommentieren Sie @sourcery-ai guide im Pull Request, um den Leitfaden für Reviewer jederzeit neu zu generieren.
  • Alle Sourcery-Kommentare auflösen: Kommentieren Sie @sourcery-ai resolve im Pull Request, um alle Sourcery-Kommentare aufzulösen. Nützlich, wenn Sie alle Kommentare bereits bearbeitet haben und sie nicht mehr sehen möchten.
  • Alle Sourcery-Reviews verwerfen: Kommentieren Sie @sourcery-ai dismiss im Pull Request, um alle bestehenden Sourcery-Reviews zu verwerfen. Besonders nützlich, wenn Sie mit einer neuen Überprüfung beginnen möchten – vergessen Sie nicht, @sourcery-ai review zu kommentieren, um eine neue Überprüfung auszulösen!

Ihre Erfahrung anpassen

Greifen Sie auf Ihr Dashboard zu, um:

  • Überprüfungsfunktionen wie die von Sourcery generierte Pull-Request-Zusammenfassung, den Leitfaden für Reviewer und andere zu aktivieren oder zu deaktivieren.
  • Die Überprüfungssprache zu ändern.
  • Benutzerdefinierte Überprüfungsanweisungen hinzuzufügen, zu entfernen oder zu bearbeiten.
  • Andere Überprüfungseinstellungen anzupassen.

Hilfe erhalten

Original review guide in English

Reviewer's Guide

This PR refactors the installer script to implement robust DNS resolver handling (backup, fallback, finalization), streamlines environment variable management for the Python suite (API key and log level persistence), strengthens systemd service security, enhances port conflict detection, and tidies up package and configuration handling.

Sequence diagram for improved DNS resolver handling during installation

sequenceDiagram
    participant Installer
    participant Systemd
    participant OS
    participant ResolvConf
    Installer->>Systemd: Check if systemd-resolved is active
    alt systemd-resolved is active
        Installer->>Systemd: Stop systemd-resolved
        Installer->>Systemd: Disable systemd-resolved
        Installer->>ResolvConf: Backup /etc/resolv.conf if symlink
        Installer->>ResolvConf: Write fallback resolvers (1.1.1.1, 9.9.9.9)
    end
    Installer->>ResolvConf: After Pi-hole install, point resolver to 127.0.0.1 and fallbacks
    Installer->>OS: Success message: Resolver prepared and finalized
Loading

File-Level Changes

Change Details Files
Advanced DNS resolver management
  • Introduce write_resolv_conf and extract_env_value helper functions
  • Define RESOLV_CONF constants and backup path, and configure FALLBACK_RESOLVERS
  • Detect and replace /etc/resolv.conf symlinks, backing up only once
  • Apply fallback resolvers and finalize to prefer Pi-hole on localhost
  • Extend error trap to exit on failure
install.sh
Enhanced port conflict detection
  • Use ss to check for port usage if available
  • Fall back to netstat when ss is missing
  • Warn and skip checks if neither tool is present
install.sh
Streamlined suite environment management
  • Define SUITE_API_KEY_ENV and SUITE_LOG_LEVEL_ENV at start
  • Extract or generate SUITE_API_KEY and persist to .env with proper permissions
  • Rewrite .env via install script instead of ad-hoc here-doc
  • Update show_summary to read API key from .env dynamically
install.sh
Hardened systemd service protections
  • Add ProtectKernelTunables, ProtectKernelModules, and ProtectControlGroups to service unit
  • Maintain strict system and home protections and limited write paths
install.sh
Minor refinements and dependency updates
  • Add iproute2 to the apt install list
  • Use a single-quoted here-doc for unbound config to prevent variable expansion
  • Adjust trap handler to call exit on errors
install.sh

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

Copy link

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hallo – ich habe Ihre Änderungen überprüft – hier ist etwas Feedback:

  • Stellen Sie sicher, dass der pihole-suite systemd-Dienst die generierte .env-Datei tatsächlich lädt (z. B. über EnvironmentFile=), damit SUITE_API_KEY und SUITE_LOG_LEVEL dem Dienst zur Verfügung stehen.
  • Fügen Sie eine anfängliche Berechtigungsprüfung in install.sh hinzu, um schnell einen Fehler zu melden, wenn das Skript nicht mit ausreichenden Berechtigungen zum Schreiben nach /etc oder zur Verwaltung von systemd-Einheiten ausgeführt wird.
  • Bewahren Sie in write_resolv_conf() die ursprünglichen Eigentumsverhältnisse und Berechtigungen von /etc/resolv.conf und überprüfen Sie, ob der Schreibvorgang erfolgreich war, um zu vermeiden, dass die Resolver-Datei in einem ungültigen Zustand zurückbleibt.
Prompt für KI-Agenten
Bitte gehen Sie auf die Kommentare aus dieser Codeüberprüfung ein:

## Allgemeine Kommentare
- Stellen Sie sicher, dass der pihole-suite systemd-Dienst die generierte .env-Datei tatsächlich lädt (z. B. über EnvironmentFile=), damit SUITE_API_KEY und SUITE_LOG_LEVEL dem Dienst zur Verfügung stehen.
- Fügen Sie eine anfängliche Berechtigungsprüfung in install.sh hinzu, um schnell einen Fehler zu melden, wenn das Skript nicht mit ausreichenden Berechtigungen zum Schreiben nach /etc oder zur Verwaltung von systemd-Einheiten ausgeführt wird.
- Bewahren Sie in write_resolv_conf() die ursprünglichen Eigentumsverhältnisse und Berechtigungen von /etc/resolv.conf und überprüfen Sie, ob der Schreibvorgang erfolgreich war, um zu vermeiden, dass die Resolver-Datei in einem ungültigen Zustand zurückbleibt.

## Einzelne Kommentare

### Kommentar 1
<location> `install.sh:132` </location>
<code_context>
     curl -fsSL https://www.internic.net/domain/named.root -o /var/lib/unbound/root.hints

-    cat > /etc/unbound/unbound.conf.d/pi-hole.conf <<EOF
+    cat > /etc/unbound/unbound.conf.d/pi-hole.conf <<'UNBOUND_EOF'
 server:
     interface: 127.0.0.1
</code_context>

<issue_to_address>
**question:** Das Umschalten auf ein einfach zitiertes Heredoc deaktiviert die Variablenerweiterung.

Wenn Sie möchten, dass Variablen wie $UNBOUND_PORT erweitert werden, verwenden Sie einen nicht zitierten Heredoc-Begrenzer. Andernfalls stellen Sie sicher, dass alle Werte fest codiert sind.
</issue_to_address>

### Kommentar 2
<location> `install.sh:208-215` </location>
<code_context>
     sudo -u "$INSTALL_USER" .venv/bin/python scripts/bootstrap.py || true

-    cat > /etc/systemd/system/pihole-suite.service <<EOF
+    local env_file="$PROJECT_DIR/.env"
+    local suite_api_key="$SUITE_API_KEY_ENV"
+    if [[ -z "$suite_api_key" ]]; then
+        suite_api_key="$(extract_env_value "SUITE_API_KEY" "$env_file")"
+    fi
+    if [[ -z "$suite_api_key" ]]; then
+        suite_api_key="$(openssl rand -hex 16)"
+    fi
+
+    cat > "$env_file" <<ENV
+SUITE_API_KEY=$suite_api_key
+SUITE_PORT=$PYTHON_SUITE_PORT
+SUITE_DATA_DIR=$PROJECT_DIR/data
+SUITE_LOG_LEVEL=$SUITE_LOG_LEVEL_ENV
+ENV
+    chown "$INSTALL_USER:$INSTALL_USER" "$env_file"
+
+    cat > /etc/systemd/system/pihole-suite.service <<SERVICE_EOF
</code_context>

<issue_to_address>
**suggestion:** Mehrere Quellen für SUITE_API_KEY können zu Verwirrung führen.

Bitte klären oder dokumentieren Sie die Rangfolge der SUITE_API_KEY-Zuweisung, um Verwirrung zu vermeiden, wenn sich Umgebungs- und .env-Werte unterscheiden.

```suggestion
    # SUITE_API_KEY assignment order of precedence:
    # 1. If SUITE_API_KEY_ENV is set (from environment), use it.
    # 2. Else, if SUITE_API_KEY is set in .env file, use that.
    # 3. Else, generate a random value.
    local env_file="$PROJECT_DIR/.env"
    local suite_api_key="$SUITE_API_KEY_ENV"
    if [[ -z "$suite_api_key" ]]; then
        suite_api_key="$(extract_env_value "SUITE_API_KEY" "$env_file")"
    fi
    if [[ -z "$suite_api_key" ]]; then
        suite_api_key="$(openssl rand -hex 16)"
    fi
```
</issue_to_address>

Sourcery ist kostenlos für Open Source – wenn Ihnen unsere Bewertungen gefallen, denken Sie bitte darüber nach, sie zu teilen ✨
Helfen Sie mir, nützlicher zu sein! Bitte klicken Sie auf 👍 oder 👎 bei jedem Kommentar, und ich werde das Feedback nutzen, um Ihre Bewertungen zu verbessern.
Original comment in English

Hey there - I've reviewed your changes - here's some feedback:

  • Ensure the pihole-suite systemd service actually loads the generated .env file (e.g. via EnvironmentFile=) so SUITE_API_KEY and SUITE_LOG_LEVEL are available to the service.
  • Add an initial privilege check in install.sh to fail fast if the script isn’t running with sufficient permissions to write to /etc or manage systemd units.
  • In write_resolv_conf(), preserve the original /etc/resolv.conf ownership and permissions and verify the write succeeded to avoid leaving the resolver file in an invalid state.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- Ensure the pihole-suite systemd service actually loads the generated .env file (e.g. via EnvironmentFile=) so SUITE_API_KEY and SUITE_LOG_LEVEL are available to the service.
- Add an initial privilege check in install.sh to fail fast if the script isn’t running with sufficient permissions to write to /etc or manage systemd units.
- In write_resolv_conf(), preserve the original /etc/resolv.conf ownership and permissions and verify the write succeeded to avoid leaving the resolver file in an invalid state.

## Individual Comments

### Comment 1
<location> `install.sh:132` </location>
<code_context>
     curl -fsSL https://www.internic.net/domain/named.root -o /var/lib/unbound/root.hints

-    cat > /etc/unbound/unbound.conf.d/pi-hole.conf <<EOF
+    cat > /etc/unbound/unbound.conf.d/pi-hole.conf <<'UNBOUND_EOF'
 server:
     interface: 127.0.0.1
</code_context>

<issue_to_address>
**question:** Switching to single-quoted heredoc disables variable expansion.

If you want variables like $UNBOUND_PORT to be expanded, use an unquoted heredoc delimiter. Otherwise, ensure all values are hardcoded.
</issue_to_address>

### Comment 2
<location> `install.sh:208-215` </location>
<code_context>
     sudo -u "$INSTALL_USER" .venv/bin/python scripts/bootstrap.py || true

-    cat > /etc/systemd/system/pihole-suite.service <<EOF
+    local env_file="$PROJECT_DIR/.env"
+    local suite_api_key="$SUITE_API_KEY_ENV"
+    if [[ -z "$suite_api_key" ]]; then
+        suite_api_key="$(extract_env_value "SUITE_API_KEY" "$env_file")"
+    fi
+    if [[ -z "$suite_api_key" ]]; then
+        suite_api_key="$(openssl rand -hex 16)"
+    fi
+
+    cat > "$env_file" <<ENV
+SUITE_API_KEY=$suite_api_key
+SUITE_PORT=$PYTHON_SUITE_PORT
+SUITE_DATA_DIR=$PROJECT_DIR/data
+SUITE_LOG_LEVEL=$SUITE_LOG_LEVEL_ENV
+ENV
+    chown "$INSTALL_USER:$INSTALL_USER" "$env_file"
+
+    cat > /etc/systemd/system/pihole-suite.service <<SERVICE_EOF
</code_context>

<issue_to_address>
**suggestion:** Multiple sources for SUITE_API_KEY may cause confusion.

Please clarify or document the order of precedence for SUITE_API_KEY assignment to prevent confusion if environment and .env values differ.

```suggestion
    # SUITE_API_KEY assignment order of precedence:
    # 1. If SUITE_API_KEY_ENV is set (from environment), use it.
    # 2. Else, if SUITE_API_KEY is set in .env file, use that.
    # 3. Else, generate a random value.
    local env_file="$PROJECT_DIR/.env"
    local suite_api_key="$SUITE_API_KEY_ENV"
    if [[ -z "$suite_api_key" ]]; then
        suite_api_key="$(extract_env_value "SUITE_API_KEY" "$env_file")"
    fi
    if [[ -z "$suite_api_key" ]]; then
        suite_api_key="$(openssl rand -hex 16)"
    fi
```
</issue_to_address>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

install.sh Outdated
curl -fsSL https://www.internic.net/domain/named.root -o /var/lib/unbound/root.hints

cat > /etc/unbound/unbound.conf.d/pi-hole.conf <<EOF
cat > /etc/unbound/unbound.conf.d/pi-hole.conf <<'UNBOUND_EOF'
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

question: Das Umschalten auf ein einfach zitiertes Heredoc deaktiviert die Variablenerweiterung.

Wenn Sie möchten, dass Variablen wie $UNBOUND_PORT erweitert werden, verwenden Sie einen nicht zitierten Heredoc-Begrenzer. Andernfalls stellen Sie sicher, dass alle Werte fest codiert sind.

Original comment in English

question: Switching to single-quoted heredoc disables variable expansion.

If you want variables like $UNBOUND_PORT to be expanded, use an unquoted heredoc delimiter. Otherwise, ensure all values are hardcoded.

Comment on lines +208 to +215
local env_file="$PROJECT_DIR/.env"
local suite_api_key="$SUITE_API_KEY_ENV"
if [[ -z "$suite_api_key" ]]; then
suite_api_key="$(extract_env_value "SUITE_API_KEY" "$env_file")"
fi
if [[ -z "$suite_api_key" ]]; then
suite_api_key="$(openssl rand -hex 16)"
fi
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion: Mehrere Quellen für SUITE_API_KEY können zu Verwirrung führen.

Bitte klären oder dokumentieren Sie die Rangfolge der SUITE_API_KEY-Zuweisung, um Verwirrung zu vermeiden, wenn sich Umgebungs- und .env-Werte unterscheiden.

Suggested change
local env_file="$PROJECT_DIR/.env"
local suite_api_key="$SUITE_API_KEY_ENV"
if [[ -z "$suite_api_key" ]]; then
suite_api_key="$(extract_env_value "SUITE_API_KEY" "$env_file")"
fi
if [[ -z "$suite_api_key" ]]; then
suite_api_key="$(openssl rand -hex 16)"
fi
# SUITE_API_KEY assignment order of precedence:
# 1. If SUITE_API_KEY_ENV is set (from environment), use it.
# 2. Else, if SUITE_API_KEY is set in .env file, use that.
# 3. Else, generate a random value.
local env_file="$PROJECT_DIR/.env"
local suite_api_key="$SUITE_API_KEY_ENV"
if [[ -z "$suite_api_key" ]]; then
suite_api_key="$(extract_env_value "SUITE_API_KEY" "$env_file")"
fi
if [[ -z "$suite_api_key" ]]; then
suite_api_key="$(openssl rand -hex 16)"
fi
Original comment in English

suggestion: Multiple sources for SUITE_API_KEY may cause confusion.

Please clarify or document the order of precedence for SUITE_API_KEY assignment to prevent confusion if environment and .env values differ.

Suggested change
local env_file="$PROJECT_DIR/.env"
local suite_api_key="$SUITE_API_KEY_ENV"
if [[ -z "$suite_api_key" ]]; then
suite_api_key="$(extract_env_value "SUITE_API_KEY" "$env_file")"
fi
if [[ -z "$suite_api_key" ]]; then
suite_api_key="$(openssl rand -hex 16)"
fi
# SUITE_API_KEY assignment order of precedence:
# 1. If SUITE_API_KEY_ENV is set (from environment), use it.
# 2. Else, if SUITE_API_KEY is set in .env file, use that.
# 3. Else, generate a random value.
local env_file="$PROJECT_DIR/.env"
local suite_api_key="$SUITE_API_KEY_ENV"
if [[ -z "$suite_api_key" ]]; then
suite_api_key="$(extract_env_value "SUITE_API_KEY" "$env_file")"
fi
if [[ -z "$suite_api_key" ]]; then
suite_api_key="$(openssl rand -hex 16)"
fi

@TimInTech TimInTech merged commit 0582f35 into main Oct 3, 2025
2 checks passed
@TimInTech TimInTech deleted the fix/remove-unused-time branch December 27, 2025 02:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants