codoc-cli 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +104 -0
  3. package/assets/drawio-viewer/README.md +13 -0
  4. package/assets/drawio-viewer/viewer-static.min.js +8640 -0
  5. package/bin/dev.cmd +3 -0
  6. package/bin/dev.js +5 -0
  7. package/bin/run.cmd +3 -0
  8. package/bin/run.js +7 -0
  9. package/dist/clients/confluence/clients/attachments-client.js +74 -0
  10. package/dist/clients/confluence/clients/folders-client.js +111 -0
  11. package/dist/clients/confluence/clients/pages-client.js +128 -0
  12. package/dist/clients/confluence/confluence-client.js +44 -0
  13. package/dist/clients/confluence/utils/confluence-url.js +25 -0
  14. package/dist/clients/confluence/utils/confluence-util.js +20 -0
  15. package/dist/commands/init.js +29 -0
  16. package/dist/commands/publish.js +34 -0
  17. package/dist/commands/pull.js +54 -0
  18. package/dist/commands/sync.js +27 -0
  19. package/dist/commands/tree.js +17 -0
  20. package/dist/config/codoc-config-atlassian.js +89 -0
  21. package/dist/config/codoc-config-raw.js +21 -0
  22. package/dist/config/codoc-config.js +50 -0
  23. package/dist/config/codoc-paths.js +9 -0
  24. package/dist/hooks/command_not_found.js +7 -0
  25. package/dist/hooks/init/check-for-update.js +68 -0
  26. package/dist/hooks/init/load-env.js +15 -0
  27. package/dist/index.js +2 -0
  28. package/dist/services/codoc-id.js +7 -0
  29. package/dist/services/confluence/attachments.js +56 -0
  30. package/dist/services/confluence/folders.js +42 -0
  31. package/dist/services/confluence/labels.js +17 -0
  32. package/dist/services/confluence/pages.js +28 -0
  33. package/dist/services/conversion/confluenceToMarkdown/diagrams/drawio-diagrams.js +77 -0
  34. package/dist/services/conversion/confluenceToMarkdown/diagrams/drawio-to-image.js +131 -0
  35. package/dist/services/conversion/confluenceToMarkdown/index.js +17 -0
  36. package/dist/services/conversion/confluenceToMarkdown/preprocess/macro-converters.js +68 -0
  37. package/dist/services/conversion/confluenceToMarkdown/preprocess/preprocess.js +113 -0
  38. package/dist/services/conversion/confluenceToMarkdown/turndown.js +71 -0
  39. package/dist/services/conversion/markdownToConfluence/conversion-state.js +18 -0
  40. package/dist/services/conversion/markdownToConfluence/diagrams/mermaid-diagrams.js +56 -0
  41. package/dist/services/conversion/markdownToConfluence/diagrams/mermaid-to-drawio.js +331 -0
  42. package/dist/services/conversion/markdownToConfluence/index.js +48 -0
  43. package/dist/services/conversion/markdownToConfluence/languages.js +66 -0
  44. package/dist/services/conversion/markdownToConfluence/links.js +40 -0
  45. package/dist/services/conversion/markdownToConfluence/raw-html/raw-html.js +86 -0
  46. package/dist/services/conversion/markdownToConfluence/raw-html/task-lists.js +59 -0
  47. package/dist/services/conversion/markdownToConfluence/render/blocks.js +171 -0
  48. package/dist/services/conversion/markdownToConfluence/render/inline.js +44 -0
  49. package/dist/services/conversion/markdownToConfluence/render/page.js +31 -0
  50. package/dist/services/conversion/shared/confluence-macro-builder.js +11 -0
  51. package/dist/services/conversion/shared/gitlab-url.js +16 -0
  52. package/dist/services/conversion/shared/image-attachments.js +57 -0
  53. package/dist/services/conversion/shared/jira.js +7 -0
  54. package/dist/services/conversion/shared/macro-types.js +12 -0
  55. package/dist/services/conversion/shared/preserved-macros.js +8 -0
  56. package/dist/services/conversion/shared/read-storage-format.js +29 -0
  57. package/dist/services/conversion/shared/regex-cache.js +14 -0
  58. package/dist/services/conversion/shared/xml-escaping.js +19 -0
  59. package/dist/services/ensure-env.js +59 -0
  60. package/dist/services/files-service.js +74 -0
  61. package/dist/services/git/default-branch.js +33 -0
  62. package/dist/services/init-templates/agent-md-init.js +55 -0
  63. package/dist/services/init-templates/doc-guide-init.js +131 -0
  64. package/dist/services/init-templates/env-init.js +12 -0
  65. package/dist/services/init-templates/yaml-init.js +56 -0
  66. package/dist/services/lock/lock-file.js +61 -0
  67. package/dist/services/log/init-printer.js +50 -0
  68. package/dist/services/log/logger.js +131 -0
  69. package/dist/services/prompt.js +32 -0
  70. package/dist/services/slugify.js +6 -0
  71. package/dist/types/codoc-types.js +1 -0
  72. package/dist/use-cases/init/init.js +150 -0
  73. package/dist/use-cases/publish/publish.js +166 -0
  74. package/dist/use-cases/pull/parse-page-input.js +22 -0
  75. package/dist/use-cases/pull/pull.js +337 -0
  76. package/dist/use-cases/shared/codoc-yaml.js +45 -0
  77. package/dist/use-cases/shared/confluence-client-registry.js +27 -0
  78. package/dist/use-cases/shared/env-select.js +23 -0
  79. package/dist/use-cases/shared/fetch-page.js +11 -0
  80. package/dist/use-cases/shared/list-documents.js +172 -0
  81. package/dist/use-cases/shared/pull-folder.js +90 -0
  82. package/dist/use-cases/shared/render-remote-page.js +71 -0
  83. package/dist/use-cases/sync/attachment-upload.js +31 -0
  84. package/dist/use-cases/sync/sync-actions.js +170 -0
  85. package/dist/use-cases/sync/sync-associate.js +41 -0
  86. package/dist/use-cases/sync/sync-entries.js +36 -0
  87. package/dist/use-cases/sync/sync-handlers.js +140 -0
  88. package/dist/use-cases/sync/sync-helpers.js +8 -0
  89. package/dist/use-cases/sync/sync.js +94 -0
  90. package/dist/use-cases/tree/docs-tree.js +141 -0
  91. package/oclif.manifest.json +255 -0
  92. package/package.json +98 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Klee
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,104 @@
1
+ # codoc
2
+
3
+ Synchronisation de documentation Confluence ↔ code : convertit des `.md` locaux en pages Confluence et inversement, dans les deux sens, à partir d'une configuration déclarative.
4
+
5
+ Outil générique et indépendant : aucune dépendance à un outil ou un environnement particulier.
6
+
7
+ ## Installation
8
+
9
+ ```bash
10
+ npm install -g codoc-cli
11
+ codoc --version
12
+ ```
13
+
14
+ **Prérequis** : Node ≥ 24, dépôt Git valide, permissions r/w.
15
+
16
+ ## Commandes
17
+
18
+ Chaque commande se lance depuis la racine du projet ciblé. Résolution des informations dans l'ordre **flag CLI** → **valeur déjà présente dans `codoc.yaml`** → **prompt console** (pas de détection automatique de mode CI - voir [Usage en CI](#usage-en-ci)).
19
+
20
+ ### `codoc init`
21
+
22
+ Génère la config initiale (`codoc.yaml`, `.env-codoc`, guide de démarrage).
23
+
24
+ | Flag | Rôle |
25
+ |---|---|
26
+ | `--agent-md` | Ne génère QUE le guide agent IA (basé sur `codoc.yaml` déjà rempli) - rien d'autre |
27
+ | `--agent-target <agent\|copilot>` | Avec `--agent-md` : destination du guide. Défaut : celle déjà en place, sinon demandé |
28
+
29
+ ### `codoc sync`
30
+
31
+ Synchronise chaque doc dans les deux sens selon son `maintainedIn`.
32
+
33
+ | Flag | Rôle |
34
+ |---|---|
35
+ | `--env <clé>` | Ne synchronise que cet environnement Confluence. Défaut : tous |
36
+ | `--confirm` / `--no-confirm` | Répond automatiquement aux suppressions de pages et adoptions en conflit de titre (accepte/refuse tout). Non fourni : demande à chaque cas |
37
+
38
+ ### `codoc pull [url\|id]`
39
+
40
+ Importe une page Confluence existante en local (interactif).
41
+
42
+ | Flag | Rôle |
43
+ |---|---|
44
+ | `--env <clé>` | Environnement où chercher la page. Défaut : déduit de l'URL, sinon auto/prompt |
45
+ | `--as-folder` / `--no-as-folder` | Si la page a des sous-éléments : importe tout le dossier, ou seulement la page. Non fourni : demande le cas échéant |
46
+ | `--keep-existing` / `--no-keep-existing` | Si un import précédent est détecté : le remplace (valeurs existantes comme défauts), ou en crée un séparé. Non fourni : demande le cas échéant |
47
+ | `--in-config` / `--no-in-config` | Ajoute (ou met à jour) l'entrée `codoc.yaml`. `--no-in-config` : import ponctuel, sans toucher ni à `codoc.yaml` ni à `codoc.lock`. Non fourni : demande en fin de commande |
48
+ | `--local-path <chemin>` | Chemin local du fichier `.md` (page unique) ou dossier de destination (import dossier) |
49
+ | `--title <titre>` | Titre de la page Confluence (page unique). Défaut : config existante, sinon le titre Confluence |
50
+ | `--parent-page-id <id>` | parentPageId Confluence. Défaut : config existante, sinon le parent réel de la page |
51
+ | `--maintained-in <code\|confluence>` | `code` → le `.md` local fait foi ; `confluence` → la page fait foi. Défaut : `confluence` |
52
+ | `--images-dir <chemin>` | Dossier local pour les images (`""` pour désactiver). Défaut : `doc/img` |
53
+
54
+ ### `codoc publish <chemin>`
55
+
56
+ Publie un `.md` local vers Confluence (interactif).
57
+
58
+ | Flag | Rôle |
59
+ |---|---|
60
+ | `--env <clé>` | Environnement Confluence cible. Défaut : celui de la config existante, sinon auto/prompt |
61
+ | `--in-config` / `--no-in-config` | Ajoute (ou met à jour) l'entrée `codoc.yaml`. `--no-in-config` : publication ponctuelle, sans toucher ni à `codoc.yaml` ni à `codoc.lock`. Non fourni : demande en fin de commande |
62
+ | `--parent-page-id <id>` | parentPageId Confluence cible. Défaut : config existante, sinon `defaultParentPageId` de l'env |
63
+ | `--title <titre>` | Titre de la page Confluence (fichier unique). Défaut : config existante, sinon le H1 du fichier |
64
+
65
+ ### `codoc tree`
66
+
67
+ Affiche l'arborescence des documents déployés.
68
+
69
+ | Flag | Rôle |
70
+ |---|---|
71
+ | `--env <clé>` | N'affiche que cet environnement Confluence. Défaut : tous |
72
+
73
+ `pull` et `publish` demandent en fin de commande si le document importé/publié doit être ajouté à `codoc.yaml` (par défaut : oui). Répondre non (ou `--no-in-config`) laisse le fichier local et la page Confluence bien réels, mais ni `codoc.yaml` ni `codoc.lock` ne sont modifiés : usage volontairement "utilitaire", hors suivi - un futur `pull`/`publish` sur le même document ne le reconnaîtra pas via son ID (seul un rapprochement par titre peut s'appliquer), exactement comme pour quelqu'un qui n'utilise jamais la config.
74
+
75
+ ### Usage en CI
76
+
77
+ `publish`, `pull` et `sync` résolvent chaque information nécessaire dans cet ordre : **flag CLI** (`--xxx`, cf. tableaux ci-dessus) → **valeur déjà présente dans `codoc.yaml`** → **prompt console**. Il n'y a pas de détection automatique de mode CI : une commande ne demande jamais rien tant que tout ce dont elle a besoin est fourni en flag ou déjà configuré ; si une information manque, elle est demandée comme en local (à la charge du pipeline de fournir ce qu'il faut pour rester non-interactif).
78
+
79
+ ## Configuration - `codoc.yaml`
80
+
81
+ | Champ | Rôle |
82
+ |---|---|
83
+ | `atlassian.environments.<clé>.baseUrl` / `.spaceKey` / `.defaultParentPageId` | Environnement(s) Confluence cible(s) |
84
+ | `drawio.*` | Réglages des diagrammes générés depuis les blocs ` ```mermaid ` (un seul jeu de valeurs, partagé par tous les environnements) |
85
+ | `gitlab.baseUrl` / `gitlab.defaultBranch` | Réécrit les liens vers du code en URLs GitLab dans les pages publiées (optionnel) |
86
+ | `jira.serverId` / `jira.server` | Rend les liens de tickets Jira sous forme de macro Confluence native (optionnel) |
87
+ | `docs[]` | Liste des documents synchronisés (chemin, environnement, titre, mots-clés de routage…) |
88
+
89
+ `codoc init` génère un `codoc.yaml` commenté avec tous les champs disponibles.
90
+
91
+ ## Identifiants - `.env-codoc`
92
+
93
+ Ne pas committer (ajouté à `.gitignore` par `init`).
94
+
95
+ | Variable | Usage |
96
+ |---|---|
97
+ | `CONFLUENCE_<CLÉ>_USERNAME` | Email de compte Atlassian pour l'environnement `<clé>` |
98
+ | `CONFLUENCE_<CLÉ>_API_TOKEN` | Token Atlassian pour l'environnement `<clé>` |
99
+
100
+ Toujours préfixées par la clé de l'environnement (`atlassian.environments.<clé>` dans `codoc.yaml`) - même s'il n'y en a qu'un seul, ex. `CONFLUENCE_DEFAULT_USERNAME`. Pas de variable générique partagée entre environnements.
101
+
102
+ ## `codoc.lock`
103
+
104
+ Généré par `sync` / `pull`. **À committer**. Trace les IDs Confluence des pages synchronisées, pour des mises à jour idempotentes.
@@ -0,0 +1,13 @@
1
+ # draw.io viewer (vendored)
2
+
3
+ `viewer-static.min.js` is draw.io's official, pre-built static diagram viewer,
4
+ downloaded as-is from `https://viewer.diagrams.net/js/viewer-static.min.js`
5
+ (re-download to update). Apache License 2.0 - see
6
+ https://github.com/jgraph/drawio/blob/dev/LICENSE.
7
+
8
+ Includes the full built-in shape/stencil library, so it renders diagrams
9
+ (including icons and custom shapes) exactly as draw.io itself would, unlike a
10
+ hand-rolled parser. Used headlessly via Puppeteer in
11
+ `../../src/services/conversion/confluenceToMarkdown/diagrams/drawio-to-image.ts`
12
+ to convert pulled `.drawio` attachments to SVG - no network access needed at
13
+ runtime, no separate tool to install.