confpub-cli 1.7.3__tar.gz → 1.7.4__tar.gz

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 (55) hide show
  1. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/PKG-INFO +1 -1
  2. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/confpub/__init__.py +1 -1
  3. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/confpub/manifest.py +3 -0
  4. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/confpub/puller.py +8 -1
  5. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/.github/copilot-instructions.md +0 -0
  6. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/.github/workflows/publish.yml +0 -0
  7. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/.gitignore +0 -0
  8. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/CLAUDE.md +0 -0
  9. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/LICENSE +0 -0
  10. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/PRD.md +0 -0
  11. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/README.md +0 -0
  12. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/confpub/applier.py +0 -0
  13. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/confpub/assets.py +0 -0
  14. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/confpub/cli.py +0 -0
  15. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/confpub/config.py +0 -0
  16. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/confpub/confluence.py +0 -0
  17. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/confpub/converter.py +0 -0
  18. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/confpub/envelope.py +0 -0
  19. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/confpub/errors.py +0 -0
  20. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/confpub/front_matter.py +0 -0
  21. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/confpub/guide.py +0 -0
  22. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/confpub/lockfile.py +0 -0
  23. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/confpub/macro_plugin.py +0 -0
  24. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/confpub/output.py +0 -0
  25. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/confpub/planner.py +0 -0
  26. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/confpub/publish.py +0 -0
  27. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/confpub/py.typed +0 -0
  28. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/confpub/reverse_converter.py +0 -0
  29. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/confpub/validator.py +0 -0
  30. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/confpub/verifier.py +0 -0
  31. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/confpub.lock +0 -0
  32. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/pyproject.toml +0 -0
  33. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/tests/__init__.py +0 -0
  34. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/tests/conftest.py +0 -0
  35. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/tests/test_applier.py +0 -0
  36. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/tests/test_assets.py +0 -0
  37. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/tests/test_config.py +0 -0
  38. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/tests/test_confluence.py +0 -0
  39. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/tests/test_converter.py +0 -0
  40. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/tests/test_envelope.py +0 -0
  41. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/tests/test_errors.py +0 -0
  42. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/tests/test_front_matter.py +0 -0
  43. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/tests/test_guide.py +0 -0
  44. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/tests/test_integration.py +0 -0
  45. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/tests/test_lockfile.py +0 -0
  46. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/tests/test_macro_plugin.py +0 -0
  47. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/tests/test_manifest.py +0 -0
  48. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/tests/test_output.py +0 -0
  49. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/tests/test_planner.py +0 -0
  50. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/tests/test_publish.py +0 -0
  51. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/tests/test_puller.py +0 -0
  52. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/tests/test_reverse_converter.py +0 -0
  53. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/tests/test_validator.py +0 -0
  54. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/tests/test_verifier.py +0 -0
  55. {confpub_cli-1.7.3 → confpub_cli-1.7.4}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: confpub-cli
3
- Version: 1.7.3
3
+ Version: 1.7.4
4
4
  Summary: Agent-first CLI to publish Markdown to Confluence
5
5
  Project-URL: Homepage, https://github.com/ThomasRohde/confpub-cli
6
6
  Project-URL: Repository, https://github.com/ThomasRohde/confpub-cli.git
@@ -1,3 +1,3 @@
1
1
  """confpub — Agent-first CLI to publish Markdown to Confluence."""
2
2
 
3
- __version__ = "1.7.3"
3
+ __version__ = "1.7.4"
@@ -191,6 +191,9 @@ def generate_manifest_yaml(
191
191
  result = []
192
192
  for p in pages:
193
193
  entry: dict[str, Any] = {"title": p["title"], "file": p["file"]}
194
+ assets = p.get("assets", [])
195
+ if assets:
196
+ entry["assets"] = assets
194
197
  labels = p.get("labels", [])
195
198
  if labels:
196
199
  entry["labels"] = labels
@@ -194,11 +194,13 @@ def _build_page_tree(
194
194
  root_page_id: str,
195
195
  output_dir: str = ".",
196
196
  page_labels: dict[str, list[str]] | None = None,
197
+ page_assets: dict[str, list[str]] | None = None,
197
198
  ) -> list[dict[str, Any]]:
198
199
  """Build a hierarchical page tree for manifest generation."""
199
200
  id_to_entry: dict[str, dict[str, Any]] = {}
200
201
  children_map: dict[str | None, list[str]] = {}
201
202
  labels_map = page_labels or {}
203
+ assets_map = page_assets or {}
202
204
 
203
205
  for entry in pages:
204
206
  page = entry["page"]
@@ -214,6 +216,8 @@ def _build_page_tree(
214
216
  }
215
217
  if labels_map.get(pid):
216
218
  node["labels"] = labels_map[pid]
219
+ if assets_map.get(pid):
220
+ node["assets"] = assets_map[pid]
217
221
  id_to_entry[pid] = node
218
222
  children_map.setdefault(parent_id, []).append(pid)
219
223
 
@@ -315,6 +319,7 @@ def pull_pages(
315
319
  files_result: list[dict[str, Any]] = []
316
320
  total_attachments = 0
317
321
  pull_warnings: list[str] = []
322
+ pulled_assets: dict[str, list[str]] = {} # page_id -> list of relative asset paths
318
323
 
319
324
  for entry in all_pages:
320
325
  page = entry["page"]
@@ -335,6 +340,8 @@ def pull_pages(
335
340
  )
336
341
  attachments_downloaded = len(attachment_map)
337
342
  total_attachments += attachments_downloaded
343
+ if attachment_map:
344
+ pulled_assets[pid] = list(attachment_map.values())
338
345
 
339
346
  # Convert storage format to markdown
340
347
  body_storage = page.get("body", {}).get("storage", {}).get("value", "")
@@ -381,7 +388,7 @@ def pull_pages(
381
388
  pulled_labels: dict[str, list[str]] = {
382
389
  f["page_id"]: f.get("labels", []) for f in files_result
383
390
  }
384
- page_tree = _build_page_tree(all_pages, file_paths, root_id, output_dir, page_labels=pulled_labels)
391
+ page_tree = _build_page_tree(all_pages, file_paths, root_id, output_dir, page_labels=pulled_labels, page_assets=pulled_assets)
385
392
  manifest_yaml = generate_manifest_yaml(root_space, manifest_parent, page_tree)
386
393
  manifest_path = os.path.join(output_dir, "confpub.yaml")
387
394
  Path(manifest_path).write_text(manifest_yaml, encoding="utf-8")
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes