Commit Graph

24 Commits

Author SHA1 Message Date
Stéphan Sainléger
00c12769bc [IMP] add external command verification at startup
Add check_required_commands() function to verify that all required
external tools are available before the script begins execution:
- docker: Container runtime
- compose: Docker compose wrapper (0k-scripts)
- sudo: Required for filestore operations

Benefits:
- Fails fast with a clear error message listing missing commands
- Prevents cryptic 'command not found' errors mid-execution
- Documents script dependencies explicitly
- Called immediately after argument validation in upgrade.sh
2026-02-02 22:04:49 +01:00
Stéphan Sainléger
4bdedf3759 [IMP] apply naming conventions for variables
Apply consistent naming conventions throughout upgrade.sh:
- UPPERCASE + readonly for script-level constants (immutable values)
- lowercase for temporary/local variables within the script flow

Constants marked readonly:
- ORIGIN_VERSION, FINAL_VERSION, ORIGIN_DB_NAME, ORIGIN_SERVICE_NAME
- COPY_DB_NAME, FINALE_DB_NAME, FINALE_SERVICE_NAME
- POSTGRES_SERVICE_NAME

Local variables renamed to lowercase:
- postgres_containers, postgres_count (detection phase)
- db_exists, filestore_path (validation phase)

This convention makes it immediately clear which variables are
configuration constants vs runtime values, and prevents accidental
modification of critical values.
2026-02-02 22:04:49 +01:00
Stéphan Sainléger
d3f0998036 [IMP] add structured logging functions
Add logging functions to lib/common.sh for consistent output formatting:
- log_info(): Standard informational messages with [INFO] prefix
- log_warn(): Warning messages to stderr with [WARN] prefix
- log_error(): Error messages to stderr with [ERROR] prefix
- log_step(): Section headers with visual separators

Update upgrade.sh to use these functions throughout, replacing ad-hoc
echo statements. This provides:
- Consistent visual formatting across all scripts
- Clear distinction between info, warnings and errors
- Errors properly sent to stderr
- Easier log parsing and filtering

Also removed redundant '|| exit 1' statements since set -e handles
command failures automatically.
2026-02-02 22:04:49 +01:00
Stéphan Sainléger
914ae34f12 [IMP] centralize common functions in lib/common.sh
Extract shared utility functions into a dedicated library file:
- query_postgres_container: Execute SQL queries in postgres container
- copy_database: Copy database using pgm
- copy_filestore: Copy Odoo filestore directory
- exec_python_script_in_odoo_shell: Run Python scripts in Odoo shell

Benefits:
- Single source of truth for utility functions
- Easier maintenance and testing
- Consistent behavior across all scripts
- Reduced code duplication

Also introduces readonly constants DATASTORE_PATH and FILESTORE_SUBPATH
to avoid hardcoded paths scattered throughout the codebase.
2026-02-02 22:04:49 +01:00
Stéphan Sainléger
3fe2e93d3d [IMP] use [[ instead of [ for conditionals
Replace single bracket [ ] with double bracket [[ ]] for all test
conditionals in the main scripts.

Benefits of [[ over [:
- No need to quote variables (though we still do for consistency)
- Supports regex matching with =~
- Supports pattern matching with == and !=
- && and || work inside [[ ]] without escaping
- More predictable behavior with empty strings
- Is a bash keyword, not an external command

Note: posbox scripts are left unchanged as they appear to be
third-party code imported into the repository.
2026-02-02 20:06:27 +01:00
Stéphan Sainléger
526b27fdec [IMP] fix variable quoting issues
Properly quote all variable expansions to prevent word splitting and
glob expansion issues:
- Quote $POSTGRES_SERVICE_NAME in docker exec command
- Quote $REPERTOIRE in directory test
- Remove unnecessary $ inside arithmetic expressions (($VAR -> VAR))

Unquoted variables can cause unexpected behavior when values contain
spaces or special characters. In arithmetic contexts, $ is unnecessary
and can mask errors with set -u.
2026-02-02 20:06:27 +01:00
Stéphan Sainléger
266842585b [IMP] add argument validation with usage message
Add proper argument validation at the start of upgrade.sh:
- Check that exactly 4 arguments are provided
- Display a helpful usage message with argument descriptions
- Include a concrete example command

This prevents cryptic errors when the script is called incorrectly
and provides clear guidance on expected parameters. With set -u enabled,
accessing unset positional parameters would cause an unclear error message.
2026-02-02 20:06:27 +01:00
Stéphan Sainléger
30909a3b28 [IMP] add strict mode (set -euo pipefail) to all scripts
Enable bash strict mode in all shell scripts to catch errors early:
- set -e: Exit immediately if a command exits with non-zero status
- set -u: Treat unset variables as an error
- set -o pipefail: Return value of a pipeline is the status of the last
  command to exit with non-zero status

This prevents silent failures and makes debugging easier by failing fast
when something goes wrong instead of continuing with potentially corrupted
state.
2026-02-02 20:06:27 +01:00
Stéphan Sainléger
59fc39620d [IMP] improves the way postgres container is detected 2026-01-16 14:19:51 +01:00
Stéphan Sainléger
469fb42e48 [IMP] add function to execute python scripts in Odoo shell 2026-01-13 12:37:38 +01:00
Stéphan Sainléger
972e6c7b26 [FIX] add su access for filestore manipulation 2025-09-11 10:31:52 +02:00
Boris Gallet
5feebec210 cln: img rc_15.0:latest and fix first iteration dir creation 2025-02-11 15:26:20 +01:00
Stéphan Sainléger
ad2b95d07d [IMP] better managment of model database in destination version 2025-02-11 14:58:27 +01:00
Stéphan Sainléger
e19c05c812 imp: remove useless final model db name attribute 2024-12-17 15:57:22 +01:00
Stéphan Sainléger
564c0d75bc imp: remove useless .zip file attribute 2024-12-17 15:57:20 +01:00
Stéphan Sainléger
09a855258e imp: factorize database copy process 2024-12-17 15:46:05 +01:00
Stéphan Sainléger
c54cbe125b imp: factorize filestore copy process 2024-12-17 15:46:05 +01:00
Stéphan Sainléger
116d00091b imp: factorize query_postgres_container() in upgrade.sh 2024-12-17 15:46:05 +01:00
Stéphan Sainléger
6ac98a48e9 imp: remove useless "source" command 2024-12-17 15:46:05 +01:00
Stéphan Sainléger
91b9831975 imp: simplify filestore copy commands 2024-11-26 09:23:45 +01:00
Stéphan Sainléger
5cb8a3e56f fix: typo components 2024-11-26 09:23:45 +01:00
Stéphan Sainléger
ee6a920bd1 fix: move service postgres check before the other checks 2024-11-26 09:23:45 +01:00
Stéphan Sainléger
bb482c5a19 fix: replace lokavaluto_postgres_1 by its variable 2024-11-26 09:23:45 +01:00
Stéphan Sainléger
076a7bb3eb [NEW] add first version of 0k Odoo Upgrade scripts 2024-11-26 09:23:45 +01:00