-
Notifications
You must be signed in to change notification settings - Fork 0
chore: reorganize documentation and automate repo bootability #4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
💡 Enable Vercel Agent with $100 free credit for automated AI reviews |
WalkthroughPR wprowadza kompletną infrastrukturę DevOps i budowania dla monorepo StillOnTime, obejmując przepływ GitHub Actions, wieloetapowe pliki Docker, procedury backup/restore, narzędzia analizy, reorganizację dokumentacji oraz skrypty dla bootstrapowania, budowania, testowania i wdrażania. Changes
Sequence Diagram(s)sequenceDiagram
actor User
participant Backup as backup_and_branch.sh
participant Git as Git
participant Archive as ZIP/TAR
participant Checksum as SHA256
User->>Backup: ./scripts/backup_and_branch.sh [--dry-run]
Backup->>Git: git status -sb
Git-->>Backup: status
Backup->>Git: git tag pre-cleanup-<TS>
Git-->>Backup: tag created
Backup->>Git: git branch chore/repo-cleanup-and-boot
Git-->>Backup: branch created
rect rgba(100, 200, 100, 0.3)
note over Backup,Archive: Archive Creation (Dry-run safe)
Backup->>Archive: tar/zip HEAD to BACKUP/
Archive-->>Backup: archives created
end
rect rgba(100, 150, 200, 0.3)
note over Backup,Checksum: Verification
Backup->>Checksum: sha256sum archives
Checksum-->>Backup: checksums.txt/json
Backup->>Backup: latest-commit.txt
end
Backup-->>User: Backup complete + logs
sequenceDiagram
actor User
participant Bootstrap as bootstrap.sh
participant PkgMgr as Package Managers
participant Env as Environment
participant Prisma as Prisma
User->>Bootstrap: ./scripts/bootstrap.sh --profile prod
rect rgba(100, 200, 150, 0.3)
note over Bootstrap,PkgMgr: Multi-project Setup
Bootstrap->>PkgMgr: Install (root, backend, frontend, mobile)
PkgMgr-->>Bootstrap: Dependencies ready
end
rect rgba(150, 150, 200, 0.3)
note over Bootstrap,Env: Environment Provisioning
Bootstrap->>Env: Copy .env.example → .env
Env-->>Bootstrap: Env files ready
end
alt Python available
Bootstrap->>Env: Create venv, pip install
Env-->>Bootstrap: Python ready
end
alt Prisma exists
Bootstrap->>Prisma: prisma migrate deploy
Prisma-->>Bootstrap: Migrations applied
end
Bootstrap-->>User: Bootstrap complete
sequenceDiagram
participant CI as GitHub Actions
participant Checkout as Checkout
participant Install as npm ci
participant Build as Build
participant Lint as Lint
participant Test as Test
participant Smoke as Smoke Test
participant Artifacts as Artifacts
CI->>Checkout: Check out code
Checkout-->>CI: Code ready
CI->>Install: npm ci (deps)
Install-->>CI: Installed
rect rgba(100, 200, 100, 0.3)
note over Build: Build Phase
CI->>Build: bootstrap & build (dev)
Build-->>CI: Built
end
rect rgba(150, 200, 150, 0.3)
note over Lint: Validation Phase
CI->>Lint: lint backend/frontend
Lint-->>CI: Lint passed
end
rect rgba(200, 150, 100, 0.3)
note over Test: Test Phase
CI->>Test: npm test (backend)
Test-->>CI: Tests passed
CI->>Test: npm test (frontend)
Test-->>CI: Tests passed
end
CI->>Smoke: smoke-test.sh --profile dev
Smoke-->>CI: Smoke passed
CI->>Artifacts: Upload logs & reports
Artifacts-->>CI: Archived
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Zmiana obejmuje znaczną liczbę nowych plików o różnych typach (YAML workflows, shell scripts, Docker, JSON struktury, dokumentacja), gęstą logikę procesów (backup, bootstrap, CI/CD), wiele zmian konfiguracyjnych i zależności między komponentami. Heterogeniczna natura (CI/CD, Docker, skrypty wdrażania, reorganizacja dokumentacji) wymaga oddzielnego uzasadnienia dla każdego obszaru. Poem
📜 Recent review detailsConfiguration used: CodeRabbit UI Review profile: CHILL Plan: Free ⛔ Files ignored due to path filters (2)
📒 Files selected for processing (41)
💤 Files with no reviewable changes (1)
Note 🎁 Summarized by CodeRabbit FreeYour organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Pro by visiting https://app.coderabbit.ai/login. Comment |
|
| GitGuardian id | GitGuardian status | Secret | Commit | Filename | |
|---|---|---|---|---|---|
| 20850148 | Triggered | Generic Password | f09c557 | .github/workflows/ci.yaml | View secret |
🛠 Guidelines to remediate hardcoded secrets
- Understand the implications of revoking this secret by investigating where it is used in your code.
- Replace and store your secret safely. Learn here the best practices.
- Revoke and rotate this secret.
- If possible, rewrite git history. Rewriting git history is not a trivial act. You might completely break other contributing developers' workflow and you risk accidentally deleting legitimate data.
To avoid such incidents in the future consider
- following these best practices for managing and storing secrets including API keys and other credentials
- install secret detection on pre-commit to catch secret before it leaves your machine and ease remediation.
🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.
|
Looks like there are a few issues preventing this PR from being merged!
If you'd like me to help, just leave a comment, like Feel free to include any additional details that might help me get this PR into a better state. You can manage your notification settings |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Codex Review
Here are some automated review suggestions for this pull request.
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@OpenHands please fix the failing actions on PR #4 at branch `codex/conduct-two-phase-git-repository-cleanup |
|
Uh oh! There was an unexpected error starting the job :( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
21 issues found across 145 files
Prompt for AI agents (all 21 issues)
Understand the root cause of the following 21 issues and fix them.
<file name="scripts/backup_and_branch.sh">
<violation number="1" location="scripts/backup_and_branch.sh:40">
The `run()` helper function duplicates functionality found in multiple other shell scripts (e.g., scripts/bootstrap.sh, scripts/build.sh, scripts/smoke-test.sh, scripts/start.sh). This common utility should be extracted into a shared script.</violation>
<violation number="2" location="scripts/backup_and_branch.sh:50">
`git tag --list` always exits 0, so this guard reports success even when the tag is missing and the safety tag is never created. Use a command that fails when the tag is absent so the tag creation path can run.</violation>
<violation number="3" location="scripts/backup_and_branch.sh:51">
`git branch --list` succeeds even when the branch is missing, causing this guard to always short-circuit and skip creating the safety branch.</violation>
</file>
<file name="scripts/bootstrap.sh">
<violation number="1" location="scripts/bootstrap.sh:71">
Running `python -m venv` after only checking for a `python` binary assumes it is Python 3. On systems where `python` maps to Python 2.x, this fails (no `venv` module) and the script exits under `set -e`, breaking bootstrap. Please detect `python3` explicitly or guard the version before invoking venv.</violation>
</file>
<file name="scripts/start.sh">
<violation number="1" location="scripts/start.sh:55">
`--target all` never starts the frontend, mobile, or worker because `backend|all)` matches first and the case exits after that branch. Please restructure the dispatch so that choosing `all` runs every component rather than stopping after the backend.</violation>
</file>
<file name="analysis/language-and-dependency-audit.md">
<violation number="1" location="analysis/language-and-dependency-audit.md:16">
Expo is listed as a mobile dependency, but mobile/package.json shows no Expo packages. Please remove or correct this to reflect actual dependencies.</violation>
</file>
<file name="scripts/smoke-test.sh">
<violation number="1" location="scripts/smoke-test.sh:45">
Using `eval` on commands built from the user-provided `--profile` argument allows command injection. Please avoid eval and run these commands without re-interpreting user input.</violation>
<violation number="2" location="scripts/smoke-test.sh:61">
Running this command leaves the script stuck in the backend directory, so the subsequent `cd frontend` call fails. Wrap the directory change in a subshell (or otherwise restore the original directory) to keep later steps working.</violation>
</file>
<file name="dokumentacja/docs-index.csv">
<violation number="1" location="dokumentacja/docs-index.csv:45">
The docs index entry points to dokumentacja/serena-installation, but that path is missing, so the mapping is broken.</violation>
</file>
<file name="BACKUP/restore-instructions.md">
<violation number="1" location="BACKUP/restore-instructions.md:16">
Include `--delete` in the rsync command so the restore actually matches the backup contents by removing files that aren’t in the archive.</violation>
</file>
<file name="scripts/README.md">
<violation number="1" location="scripts/README.md:181">
The new note says every script supports a `--dry-run` flag, but `backup_and_branch.ps1` only exposes a `-DryRun` switch, so following the docs causes the PowerShell variant to fail.</violation>
</file>
<file name="backend/Dockerfile">
<violation number="1" location="backend/Dockerfile:5">
`npm ci` runs while the prisma schema is absent, so the @prisma/client postinstall fails and the build breaks. Copy the prisma directory (or otherwise provide the schema) before executing npm ci.</violation>
<violation number="2" location="backend/Dockerfile:24">
The dev stage runs `npm install` without the prisma schema present, causing the @prisma/client postinstall to fail and the dev container build to break. Ensure prisma/schema.prisma is copied in before installing.</violation>
</file>
<file name="scripts/backup_and_branch.ps1">
<violation number="1" location="scripts/backup_and_branch.ps1:33">
The script calls a `zip` CLI that is absent from default Windows PowerShell installations, so this step fails and stops the backup run. Use PowerShell's built-in Compress-Archive instead to keep the script portable.</violation>
<violation number="2" location="scripts/backup_and_branch.ps1:34">
`sha256sum` is not available in a default Windows PowerShell environment, so this step throws CommandNotFoundException and aborts the backup. Please replace it with a PowerShell hashing command so the script runs reliably on Windows.</violation>
</file>
<file name="docker-compose.yml">
<violation number="1" location="docker-compose.yml:81">
`${DB_CONNECTION_STRING?:...}` raises an error when the variable is missing instead of supplying the intended default, so the prod backend fails to start unless DB_CONNECTION_STRING is exported. Switch to the `:-` expansion to keep the fallback.</violation>
<violation number="2" location="docker-compose.yml:82">
`${REDIS_URL?:...}` enforces an env var and aborts when it is missing instead of using the provided default, breaking the prod profile unless REDIS_URL is pre-set. Use the `:-` default operator instead.</violation>
<violation number="3" location="docker-compose.yml:84">
`${FRONTEND_URL?:...}` aborts when FRONTEND_URL is missing, removing the intended fallback URL and forcing an env var export. Swap to `:-` to keep the default value working.</violation>
<violation number="4" location="docker-compose.yml:122">
`${VITE_API_URL?:...}` forces VITE_API_URL to be set and aborts otherwise, preventing the prod frontend from starting with the intended default API URL. Use the `:-` expansion to supply the fallback.</violation>
</file>
<file name="docker-compose.production.yml">
<violation number="1" location="docker-compose.production.yml:38">
`${DB_CONNECTION_STRING?:...}` uses Compose’s required-variable form (`?`) rather than providing a default, so the stack fails to start unless DB_CONNECTION_STRING is preset; switch to `:-` (and update the other env fallbacks) to make the defaults work.</violation>
</file>
<file name="scripts/update-doc-links.sh">
<violation number="1" location="scripts/update-doc-links.sh:45">
Treating `$search` as a Perl regex means values like `./docs` match unintended substrings (the `.` is wildcard), so running this script rewrites paths such as `../docs` to `./dokumentacja/legacy-docs`, breaking relative links. Please escape the pattern before substituting to ensure literal replacements.</violation>
</file>
You're on the cubic free plan with 9 free PR reviews remaining this month. Upgrade for unlimited reviews.
React with 👍 or 👎 to teach cubic. Mention @cubic-dev-ai to give feedback, ask questions, or re-run the review.
| BRANCH_NAME="chore/repo-cleanup-and-boot" | ||
| ARCHIVE_PREFIX="stillontime-pre-cleanup-${TIMESTAMP}" | ||
|
|
||
| run() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The run() helper function duplicates functionality found in multiple other shell scripts (e.g., scripts/bootstrap.sh, scripts/build.sh, scripts/smoke-test.sh, scripts/start.sh). This common utility should be extracted into a shared script.
Prompt for AI agents
Address the following comment on scripts/backup_and_branch.sh at line 40:
<comment>The `run()` helper function duplicates functionality found in multiple other shell scripts (e.g., scripts/bootstrap.sh, scripts/build.sh, scripts/smoke-test.sh, scripts/start.sh). This common utility should be extracted into a shared script.</comment>
<file context>
@@ -0,0 +1,79 @@
+BRANCH_NAME="chore/repo-cleanup-and-boot"
+ARCHIVE_PREFIX="stillontime-pre-cleanup-${TIMESTAMP}"
+
+run() {
+ if [[ "$DRY_RUN" == true ]]; then
+ echo "[backup][dry-run] $*" | tee -a "$LOG_FILE"
</file context>
| # Python (optional) | ||
| if [[ -f "backend/requirements.txt" ]]; then | ||
| if command -v python >/dev/null 2>&1; then | ||
| run "python -m venv .venv" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Running python -m venv after only checking for a python binary assumes it is Python 3. On systems where python maps to Python 2.x, this fails (no venv module) and the script exits under set -e, breaking bootstrap. Please detect python3 explicitly or guard the version before invoking venv.
Prompt for AI agents
Address the following comment on scripts/bootstrap.sh at line 71:
<comment>Running `python -m venv` after only checking for a `python` binary assumes it is Python 3. On systems where `python` maps to Python 2.x, this fails (no `venv` module) and the script exits under `set -e`, breaking bootstrap. Please detect `python3` explicitly or guard the version before invoking venv.</comment>
<file context>
@@ -0,0 +1,97 @@
+# Python (optional)
+if [[ -f "backend/requirements.txt" ]]; then
+ if command -v python >/dev/null 2>&1; then
+ run "python -m venv .venv"
+ run ".venv/bin/pip install --upgrade pip"
+ run ".venv/bin/pip install -r backend/requirements.txt"
</file context>
| } | ||
|
|
||
| case "$TARGET" in | ||
| backend|all) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
--target all never starts the frontend, mobile, or worker because backend|all) matches first and the case exits after that branch. Please restructure the dispatch so that choosing all runs every component rather than stopping after the backend.
Prompt for AI agents
Address the following comment on scripts/start.sh at line 55:
<comment>`--target all` never starts the frontend, mobile, or worker because `backend|all)` matches first and the case exits after that branch. Please restructure the dispatch so that choosing `all` runs every component rather than stopping after the backend.</comment>
<file context>
@@ -0,0 +1,80 @@
+}
+
+case "$TARGET" in
+ backend|all)
+ run "cd backend && npm run ${PROFILE}:server || npm run dev"
+ ;;
</file context>
| ## Zależności krytyczne | ||
| - **Backend**: `express`, `prisma`, `bull`, `@googlemaps/google-maps-services-js`, `twilio`, `redis`. | ||
| - **Frontend**: `react`, `vite`, `react-router-dom`, `tailwindcss`, `zustand`. | ||
| - **Mobile**: `react-native`, `expo` (wymaga potwierdzenia, brak lockfile). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Expo is listed as a mobile dependency, but mobile/package.json shows no Expo packages. Please remove or correct this to reflect actual dependencies.
Prompt for AI agents
Address the following comment on analysis/language-and-dependency-audit.md at line 16:
<comment>Expo is listed as a mobile dependency, but mobile/package.json shows no Expo packages. Please remove or correct this to reflect actual dependencies.</comment>
<file context>
@@ -0,0 +1,40 @@
+## Zależności krytyczne
+- **Backend**: `express`, `prisma`, `bull`, `@googlemaps/google-maps-services-js`, `twilio`, `redis`.
+- **Frontend**: `react`, `vite`, `react-router-dom`, `tailwindcss`, `zustand`.
+- **Mobile**: `react-native`, `expo` (wymaga potwierdzenia, brak lockfile).
+- **Testy**: `@playwright/test`, `vitest`, `jest`.
+
</file context>
| JSON | ||
| fi | ||
|
|
||
| run "cd backend && npm test -- --runInBand --passWithNoTests > ../logs/backend-smoke-${PROFILE}.json" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Running this command leaves the script stuck in the backend directory, so the subsequent cd frontend call fails. Wrap the directory change in a subshell (or otherwise restore the original directory) to keep later steps working.
Prompt for AI agents
Address the following comment on scripts/smoke-test.sh at line 61:
<comment>Running this command leaves the script stuck in the backend directory, so the subsequent `cd frontend` call fails. Wrap the directory change in a subshell (or otherwise restore the original directory) to keep later steps working.</comment>
<file context>
@@ -0,0 +1,82 @@
+JSON
+fi
+
+run "cd backend && npm test -- --runInBand --passWithNoTests > ../logs/backend-smoke-${PROFILE}.json"
+run "cd frontend && npm test -- --run --passWithNoTests > ../logs/frontend-smoke-${PROFILE}.json"
+run "cd backend && node scripts/list-runtime-modules.mjs ${PROFILE} > ../analysis/runtime-backend-modules-${PROFILE}.log"
</file context>
| run "cd backend && npm test -- --runInBand --passWithNoTests > ../logs/backend-smoke-${PROFILE}.json" | |
| run "(cd backend && npm test -- --runInBand --passWithNoTests > ../logs/backend-smoke-${PROFILE}.json)" |
| DATABASE_URL: ${DB_CONNECTION_STRING?:postgresql://stillontime_user:stillontime_password@postgres:5432/stillontime_automation} | ||
| REDIS_URL: ${REDIS_URL?:redis://redis:6379} | ||
| PORT: 3001 | ||
| FRONTEND_URL: ${FRONTEND_URL?:http://frontend-prod} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
${FRONTEND_URL?:...} aborts when FRONTEND_URL is missing, removing the intended fallback URL and forcing an env var export. Swap to :- to keep the default value working.
Prompt for AI agents
Address the following comment on docker-compose.yml at line 84:
<comment>`${FRONTEND_URL?:...}` aborts when FRONTEND_URL is missing, removing the intended fallback URL and forcing an env var export. Swap to `:-` to keep the default value working.</comment>
<file context>
@@ -68,12 +68,35 @@ services:
+ DATABASE_URL: ${DB_CONNECTION_STRING?:postgresql://stillontime_user:stillontime_password@postgres:5432/stillontime_automation}
+ REDIS_URL: ${REDIS_URL?:redis://redis:6379}
+ PORT: 3001
+ FRONTEND_URL: ${FRONTEND_URL?:http://frontend-prod}
+ ports:
+ - "3001:3001"
</file context>
| FRONTEND_URL: ${FRONTEND_URL?:http://frontend-prod} | |
| FRONTEND_URL: ${FRONTEND_URL:-http://frontend-prod} |
| environment: | ||
| NODE_ENV: production | ||
| DATABASE_URL: ${DB_CONNECTION_STRING?:postgresql://stillontime_user:stillontime_password@postgres:5432/stillontime_automation} | ||
| REDIS_URL: ${REDIS_URL?:redis://redis:6379} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
${REDIS_URL?:...} enforces an env var and aborts when it is missing instead of using the provided default, breaking the prod profile unless REDIS_URL is pre-set. Use the :- default operator instead.
Prompt for AI agents
Address the following comment on docker-compose.yml at line 82:
<comment>`${REDIS_URL?:...}` enforces an env var and aborts when it is missing instead of using the provided default, breaking the prod profile unless REDIS_URL is pre-set. Use the `:-` default operator instead.</comment>
<file context>
@@ -68,12 +68,35 @@ services:
+ environment:
+ NODE_ENV: production
+ DATABASE_URL: ${DB_CONNECTION_STRING?:postgresql://stillontime_user:stillontime_password@postgres:5432/stillontime_automation}
+ REDIS_URL: ${REDIS_URL?:redis://redis:6379}
+ PORT: 3001
+ FRONTEND_URL: ${FRONTEND_URL?:http://frontend-prod}
</file context>
| REDIS_URL: ${REDIS_URL?:redis://redis:6379} | |
| REDIS_URL: ${REDIS_URL:-redis://redis:6379} |
| container_name: stillontime-backend-prod | ||
| environment: | ||
| NODE_ENV: production | ||
| DATABASE_URL: ${DB_CONNECTION_STRING?:postgresql://stillontime_user:stillontime_password@postgres:5432/stillontime_automation} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
${DB_CONNECTION_STRING?:...} raises an error when the variable is missing instead of supplying the intended default, so the prod backend fails to start unless DB_CONNECTION_STRING is exported. Switch to the :- expansion to keep the fallback.
Prompt for AI agents
Address the following comment on docker-compose.yml at line 81:
<comment>`${DB_CONNECTION_STRING?:...}` raises an error when the variable is missing instead of supplying the intended default, so the prod backend fails to start unless DB_CONNECTION_STRING is exported. Switch to the `:-` expansion to keep the fallback.</comment>
<file context>
@@ -68,12 +68,35 @@ services:
+ container_name: stillontime-backend-prod
+ environment:
+ NODE_ENV: production
+ DATABASE_URL: ${DB_CONNECTION_STRING?:postgresql://stillontime_user:stillontime_password@postgres:5432/stillontime_automation}
+ REDIS_URL: ${REDIS_URL?:redis://redis:6379}
+ PORT: 3001
</file context>
| DATABASE_URL: ${DB_CONNECTION_STRING?:postgresql://stillontime_user:stillontime_password@postgres:5432/stillontime_automation} | |
| DATABASE_URL: ${DB_CONNECTION_STRING:-postgresql://stillontime_user:stillontime_password@postgres:5432/stillontime_automation} |
| restart: unless-stopped | ||
| environment: | ||
| NODE_ENV: production | ||
| DATABASE_URL: ${DB_CONNECTION_STRING?:postgresql://stillontime_user:change_me@postgres:5432/stillontime} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
${DB_CONNECTION_STRING?:...} uses Compose’s required-variable form (?) rather than providing a default, so the stack fails to start unless DB_CONNECTION_STRING is preset; switch to :- (and update the other env fallbacks) to make the defaults work.
Prompt for AI agents
Address the following comment on docker-compose.production.yml at line 38:
<comment>`${DB_CONNECTION_STRING?:...}` uses Compose’s required-variable form (`?`) rather than providing a default, so the stack fails to start unless DB_CONNECTION_STRING is preset; switch to `:-` (and update the other env fallbacks) to make the defaults work.</comment>
<file context>
@@ -1,312 +1,72 @@
restart: unless-stopped
+ environment:
+ NODE_ENV: production
+ DATABASE_URL: ${DB_CONNECTION_STRING?:postgresql://stillontime_user:change_me@postgres:5432/stillontime}
+ REDIS_URL: ${REDIS_URL?:redis://redis:6379}
+ QDRANT_URL: http://qdrant:6333
</file context>
| DATABASE_URL: ${DB_CONNECTION_STRING?:postgresql://stillontime_user:change_me@postgres:5432/stillontime} | |
| DATABASE_URL: ${DB_CONNECTION_STRING:-postgresql://stillontime_user:change_me@postgres:5432/stillontime} |
| echo "[update-doc-links][dry-run] $file: $search -> $replace" | tee -a "$LOG_FILE" | ||
| else | ||
| echo "[update-doc-links] $file: $search -> $replace" | tee -a "$LOG_FILE" | ||
| perl -0pi -e "s|$search|$replace|g" "$file" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Treating $search as a Perl regex means values like ./docs match unintended substrings (the . is wildcard), so running this script rewrites paths such as ../docs to ./dokumentacja/legacy-docs, breaking relative links. Please escape the pattern before substituting to ensure literal replacements.
Prompt for AI agents
Address the following comment on scripts/update-doc-links.sh at line 45:
<comment>Treating `$search` as a Perl regex means values like `./docs` match unintended substrings (the `.` is wildcard), so running this script rewrites paths such as `../docs` to `./dokumentacja/legacy-docs`, breaking relative links. Please escape the pattern before substituting to ensure literal replacements.</comment>
<file context>
@@ -0,0 +1,58 @@
+ echo "[update-doc-links][dry-run] $file: $search -> $replace" | tee -a "$LOG_FILE"
+ else
+ echo "[update-doc-links] $file: $search -> $replace" | tee -a "$LOG_FILE"
+ perl -0pi -e "s|$search|$replace|g" "$file"
+ fi
+ done
</file context>
| perl -0pi -e "s|$search|$replace|g" "$file" | |
| perl -0pi -e "s|\Q$search\E|$replace|g" "$file" |
|
Closing as obsolete after repo consolidation; superseded by current main state. |
Summary
dokumentacja/with migration index, boot matrix, verification, and rollback guidesTesting
https://chatgpt.com/codex/tasks/task_e_68f40c0823e08332bb7f6645957f71f2
Summary by cubic
Centralized docs under “dokumentacja/” and added backup/boot/build/start/smoke-test scripts to make the repo easy to start and rollback. Introduced a clean GitHub Actions workflow and simplified Docker Compose profiles to automate build → test → lint → smoke-test.
New Features
Migration
Summary by CodeRabbit
Notatki wydania
New Features
Documentation
dokumentacja/Infrastructure
Configuration