3 Commits

Author SHA1 Message Date
4fe2bf75c0 chore: passe en version 0.1.1
All checks were successful
Build and Publish Docker Image / Tests (push) Successful in 12m56s
Build and Publish Docker Image / Build App Image (push) Successful in 1m52s
Build and Publish Docker Image / Build Summary (push) Successful in 3s
2026-08-01 06:08:09 +02:00
c42e190aa7 fix: fait porter la version au verrou npm aussi 2026-08-01 06:07:48 +02:00
62d6eb169c fix: remet le verrou de dependances frontend d'aplomb 2026-08-01 05:52:06 +02:00
8 changed files with 303 additions and 920 deletions

View File

@@ -55,9 +55,11 @@ pointe de `main`.
### Ce qu'est une version ### Ce qu'est une version
Un tag git `vMAJEUR.MINEUR.CORRECTIF` (semver), pose sur `main`. Le meme numero Un tag git `vMAJEUR.MINEUR.CORRECTIF` (semver), pose sur `main`. Le meme numero
est ecrit dans quatre fichiers, que l'outillage tient d'accord entre eux : est ecrit dans cinq fichiers, que l'outillage tient d'accord entre eux :
`pyproject.toml`, `src/plesna_gerance/__init__.py`, `frontend/package.json` et `pyproject.toml`, `src/plesna_gerance/__init__.py`, `frontend/package.json`,
`packaging/installer.iss` (version affichee par l'installeur Windows). `frontend/package-lock.json` (qui porte lui aussi la version du paquet racine,
sans quoi `npm ci` peut refuser de tourner en CI) et `packaging/installer.iss`
(version affichee par l'installeur Windows).
Quand incrementer quoi : Quand incrementer quoi :

View File

@@ -7,8 +7,11 @@
FROM node:22-alpine AS frontend FROM node:22-alpine AS frontend
WORKDIR /frontend WORKDIR /frontend
COPY frontend/package.json frontend/package-lock.json* ./ # `npm ci` (et non `npm install`) : l'image doit installer exactement l'arbre
RUN npm install # du lock, sinon deux builds du même tag peuvent embarquer des dépendances
# différentes. Le lock n'est donc plus optionnel.
COPY frontend/package.json frontend/package-lock.json ./
RUN npm ci
COPY frontend/ ./ COPY frontend/ ./
RUN npm run build RUN npm run build

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{ {
"name": "plesna-gerance-frontend", "name": "plesna-gerance-frontend",
"version": "0.1.0", "version": "0.1.1",
"private": true, "private": true,
"type": "module", "type": "module",
"scripts": { "scripts": {
@@ -17,11 +17,11 @@
"vue-router": "^4.6.4" "vue-router": "^4.6.4"
}, },
"devDependencies": { "devDependencies": {
"@vitejs/plugin-vue": "^5.0.4", "@vitejs/plugin-vue": "^6.0.8",
"autoprefixer": "^10.4.18", "autoprefixer": "^10.4.18",
"postcss": "^8.4.35", "postcss": "^8.4.35",
"tailwindcss": "^3.4.1", "tailwindcss": "^3.4.1",
"vite": "^5.1.6", "vite": "^7.3.6",
"vitest": "^4.1.10" "vitest": "^4.1.10"
} }
} }

View File

@@ -5,7 +5,7 @@
; idéal pour un poste personnel. Crée un raccourci Bureau et menu Démarrer. ; idéal pour un poste personnel. Crée un raccourci Bureau et menu Démarrer.
#define AppName "Plesna Gérance" #define AppName "Plesna Gérance"
#define AppVersion "0.1.0" #define AppVersion "0.1.1"
#define AppPublisher "Plesna" #define AppPublisher "Plesna"
#define AppExeName "PlesnaGerance.exe" #define AppExeName "PlesnaGerance.exe"

View File

@@ -1,6 +1,6 @@
[project] [project]
name = "plesna-gerance" name = "plesna-gerance"
version = "0.1.0" version = "0.1.1"
description = "Extracteur de comptes rendus de gérance Oralia/ICS" description = "Extracteur de comptes rendus de gérance Oralia/ICS"
requires-python = ">=3.10" requires-python = ">=3.10"
dependencies = [ dependencies = [

View File

@@ -1,10 +1,10 @@
"""Pose une version : aligne les fichiers, commite, tague. """Pose une version : aligne les fichiers, commite, tague.
Le numéro de version est écrit à quatre endroits qui doivent rester d'accord Le numéro de version est écrit dans cinq fichiers qui doivent rester d'accord
(paquet Python, module, frontend, installeur Windows). Les tenir à jour à la (paquet Python, module, frontend, son lock, installeur Windows). Les tenir à
main, c'est publier tôt ou tard un tag `v0.3.0` sur un code qui se déclare jour à la main, c'est publier tôt ou tard un tag `v0.3.0` sur un code qui se
`0.1.0`. Ce script fait la mise à jour d'un bloc et refuse d'avancer au moindre déclare `0.1.0`. Ce script fait la mise à jour d'un bloc et refuse d'avancer au
doute plutôt que de produire une version à moitié cohérente. moindre doute plutôt que de produire une version à moitié cohérente.
uv run python scripts/release.py 0.2.0 uv run python scripts/release.py 0.2.0
@@ -20,25 +20,48 @@ from pathlib import Path
RACINE = Path(__file__).resolve().parent.parent RACINE = Path(__file__).resolve().parent.parent
# Un fichier, le motif qui y porte la version, et le remplacement. Le motif doit # Un fichier, le motif qui y porte la version, le remplacement, et le nombre
# capturer la version dans le groupe 1 pour que l'on puisse relire l'ancienne # d'occurrences attendues. Le motif doit capturer la version dans son dernier
# valeur, et matcher **exactement une fois** (vérifié plus bas). # groupe pour que l'on puisse relire l'ancienne valeur ; le compte est verifie
# a chaque passage, pour que le script s'arrete si un fichier change de forme
# plutot que de laisser filer une version a moitie posee.
PORTEURS_DE_VERSION = [ PORTEURS_DE_VERSION = [
("pyproject.toml", re.compile(r'^version = "([^"]+)"$', re.M), 'version = "{v}"'), (
"pyproject.toml",
re.compile(r'^version = "([^"]+)"$', re.M),
'version = "{v}"',
1,
),
( (
"src/plesna_gerance/__init__.py", "src/plesna_gerance/__init__.py",
re.compile(r'^__version__ = "([^"]+)"$', re.M), re.compile(r'^__version__ = "([^"]+)"$', re.M),
'__version__ = "{v}"', '__version__ = "{v}"',
1,
), ),
( (
"frontend/package.json", "frontend/package.json",
re.compile(r'^ "version": "([^"]+)",$', re.M), re.compile(r'^ "version": "([^"]+)",$', re.M),
' "version": "{v}",', ' "version": "{v}",',
1,
),
# Le lock porte la version du paquet racine a deux endroits (en-tete et
# packages[""]). Les laisser en arriere fait diverger lock et package.json,
# ce que `npm ci` peut refuser en CI selon la version de npm. On s'ancre sur
# le nom du paquet, qui n'apparait qu'a ces deux endroits.
(
"frontend/package-lock.json",
re.compile(
r'(^(\s*)"name": "plesna-gerance-frontend",\n\s*"version": ")([^"]+)',
re.M,
),
r"\g<1>{v}",
2,
), ),
( (
"packaging/installer.iss", "packaging/installer.iss",
re.compile(r'^#define AppVersion "([^"]+)"$', re.M), re.compile(r'^#define AppVersion "([^"]+)"$', re.M),
'#define AppVersion "{v}"', '#define AppVersion "{v}"',
1,
), ),
] ]
@@ -86,19 +109,23 @@ def verifier_le_depot(version: str, autoriser_hors_main: bool) -> None:
def appliquer_la_version(version: str) -> list[str]: def appliquer_la_version(version: str) -> list[str]:
"""Écrit la version dans les fichiers porteurs. Renvoie ceux qui ont changé.""" """Écrit la version dans les fichiers porteurs. Renvoie ceux qui ont changé."""
modifies = [] modifies = []
for chemin_relatif, motif, remplacement in PORTEURS_DE_VERSION: for chemin_relatif, motif, remplacement, attendues in PORTEURS_DE_VERSION:
chemin = RACINE / chemin_relatif chemin = RACINE / chemin_relatif
contenu = chemin.read_text(encoding="utf-8") contenu = chemin.read_text(encoding="utf-8")
occurrences = motif.findall(contenu) # Le dernier groupe capture la version elle-même, quel que soit le
if len(occurrences) != 1: # nombre de groupes servant à l'ancrage.
trouvees = [
correspondance.groups()[-1] for correspondance in motif.finditer(contenu)
]
if len(trouvees) != attendues:
raise Refus( raise Refus(
f"{chemin_relatif} : {len(occurrences)} ligne(s) de version trouvée(s), " f"{chemin_relatif} : {len(trouvees)} version(s) trouvée(s), "
"une seule attendue. Le fichier a changé de forme : " f"{attendues} attendue(s). Le fichier a changé de forme : "
"corriger le motif dans scripts/release.py." "corriger le motif dans scripts/release.py."
) )
if occurrences[0] == version: if all(trouvee == version for trouvee in trouvees):
continue continue
chemin.write_text( chemin.write_text(

View File

@@ -5,7 +5,7 @@ Ce package extrait les informations structurées des PDFs de comptes rendus
de gérance générés par le logiciel de gestion immobilière Oralia/ICS. de gérance générés par le logiciel de gestion immobilière Oralia/ICS.
""" """
__version__ = "0.1.0" __version__ = "0.1.1"
from .extractor import extract_compte_rendu from .extractor import extract_compte_rendu