haraka 0.2.29__tar.gz → 0.2.31__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 (39) hide show
  1. {haraka-0.2.29 → haraka-0.2.31}/PKG-INFO +1 -1
  2. {haraka-0.2.29 → haraka-0.2.31}/haraka/post_gen/service/fileOps/purge.py +36 -36
  3. {haraka-0.2.29 → haraka-0.2.31}/haraka/utils/manifests/java-springboot.yml +4 -0
  4. {haraka-0.2.29 → haraka-0.2.31}/haraka.egg-info/PKG-INFO +1 -1
  5. {haraka-0.2.29 → haraka-0.2.31}/pyproject.toml +1 -1
  6. {haraka-0.2.29 → haraka-0.2.31}/MANIFEST.in +0 -0
  7. {haraka-0.2.29 → haraka-0.2.31}/haraka/__init__.py +0 -0
  8. {haraka-0.2.29 → haraka-0.2.31}/haraka/art/__init__.py +0 -0
  9. {haraka-0.2.29 → haraka-0.2.31}/haraka/art/ascii/__init__.py +0 -0
  10. {haraka-0.2.29 → haraka-0.2.31}/haraka/art/ascii/assets.py +0 -0
  11. {haraka-0.2.29 → haraka-0.2.31}/haraka/art/ascii/frame/__init__.py +0 -0
  12. {haraka-0.2.29 → haraka-0.2.31}/haraka/art/ascii/frame/border.py +0 -0
  13. {haraka-0.2.29 → haraka-0.2.31}/haraka/art/ascii/frame/framer.py +0 -0
  14. {haraka-0.2.29 → haraka-0.2.31}/haraka/art/ascii/frame/width_utils.py +0 -0
  15. {haraka-0.2.29 → haraka-0.2.31}/haraka/art/create.py +0 -0
  16. {haraka-0.2.29 → haraka-0.2.31}/haraka/post_gen/__init__.py +0 -0
  17. {haraka-0.2.29 → haraka-0.2.31}/haraka/post_gen/config/__init__.py +0 -0
  18. {haraka-0.2.29 → haraka-0.2.31}/haraka/post_gen/config/config.py +0 -0
  19. {haraka-0.2.29 → haraka-0.2.31}/haraka/post_gen/resources/__init__.py +0 -0
  20. {haraka-0.2.29 → haraka-0.2.31}/haraka/post_gen/resources/assets.py +0 -0
  21. {haraka-0.2.29 → haraka-0.2.31}/haraka/post_gen/runner.py +0 -0
  22. {haraka-0.2.29 → haraka-0.2.31}/haraka/post_gen/service/__init__.py +0 -0
  23. {haraka-0.2.29 → haraka-0.2.31}/haraka/post_gen/service/command.py +0 -0
  24. {haraka-0.2.29 → haraka-0.2.31}/haraka/post_gen/service/fileOps/__init__.py +0 -0
  25. {haraka-0.2.29 → haraka-0.2.31}/haraka/post_gen/service/fileOps/files.py +0 -0
  26. {haraka-0.2.29 → haraka-0.2.31}/haraka/post_gen/service/gitOps/__init__.py +0 -0
  27. {haraka-0.2.29 → haraka-0.2.31}/haraka/post_gen/service/gitOps/gitops.py +0 -0
  28. {haraka-0.2.29 → haraka-0.2.31}/haraka/utils/__init__.py +0 -0
  29. {haraka-0.2.29 → haraka-0.2.31}/haraka/utils/common/__init__.py +0 -0
  30. {haraka-0.2.29 → haraka-0.2.31}/haraka/utils/common/utils.py +0 -0
  31. {haraka-0.2.29 → haraka-0.2.31}/haraka/utils/logging/__init__.py +0 -0
  32. {haraka-0.2.29 → haraka-0.2.31}/haraka/utils/logging/log_util.py +0 -0
  33. {haraka-0.2.29 → haraka-0.2.31}/haraka/utils/manifests/go-grpc-gateway-buf.yml +0 -0
  34. {haraka-0.2.29 → haraka-0.2.31}/haraka/utils/manifests/go-grpc-protoc.yml +0 -0
  35. {haraka-0.2.29 → haraka-0.2.31}/haraka/utils/manifests/python-fastapi.yml +0 -0
  36. {haraka-0.2.29 → haraka-0.2.31}/haraka.egg-info/SOURCES.txt +0 -0
  37. {haraka-0.2.29 → haraka-0.2.31}/haraka.egg-info/dependency_links.txt +0 -0
  38. {haraka-0.2.29 → haraka-0.2.31}/haraka.egg-info/top_level.txt +0 -0
  39. {haraka-0.2.29 → haraka-0.2.31}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: haraka
3
- Version: 0.2.29
3
+ Version: 0.2.31
4
4
  Summary: Reusable post-generation helper for Cookiecutter micro-service templates
5
5
  Author-email: Will Burks <will@example.com>
6
6
  License: MIT
@@ -76,55 +76,55 @@ class ResourcePurger:
76
76
  divider("Project tree after purge…")
77
77
  self._f.print_tree(project_dir)
78
78
 
79
- # ----------------------------- internals ------------------------------ #
79
+ # --------------------------------------------------------------------------- #
80
+ # internals #
81
+ # --------------------------------------------------------------------------- #
80
82
  def _purge_unrelated(self, root: Path, spec: PathSpec) -> None:
81
83
  """
82
- Walk the project tree; delete every path NOT matched by *spec*.
83
-
84
- Updated to align with the `test_java_manifest` logic for cleaner organization.
84
+ Walk *root* recursively and delete every path **not** matched by *spec*.
85
+ A directory is preserved if **it or any ancestor** is matched.
85
86
  """
87
+ all_paths = list(root.rglob("*"))
88
+ self._log.debug("📋 Scanning %d paths under %s", len(all_paths), root)
86
89
 
87
- # Dictionaries to separate matches and non-matches for logging
90
+ keep: list[str] = []
91
+ delete_files: list[str] = []
92
+ delete_dirs: list[str] = []
88
93
 
89
- # 1) Dump every path under root or state what was found
90
- all_paths = list(root.rglob("*"))
91
- if self._log.evm:
92
- self._log.debug(f"📋 All paths under {root} (total {len(all_paths)}):")
93
- for p in all_paths:
94
- print(f"{p.relative_to(root)}")
95
- else:
96
- self._log.debug(f"Found {len(all_paths)} paths under {root})")
97
-
98
- matches, non_matches, directories_skipped = [], [], []
99
94
  for path in all_paths:
100
- self._log.debug(f"\nScanning path: {path}")
101
95
  rel = path.relative_to(root).as_posix()
102
- self._log.debug(f"Relative path for inspection: {rel}")
103
96
 
104
- # Match file against the PathSpec
105
97
  if spec.match_file(rel):
106
- self._log.debug(f"✅ KEEP: Path matches keep patterns: {rel}")
107
- matches.append(path) # Collect paths to keep
98
+ keep.append(rel)
108
99
  continue
109
100
 
110
- # Non-matching paths: collect and delete
111
- self._log.debug(f"❌ DELETE: Path does not match keep patterns: {rel}")
112
101
  if path.is_dir():
113
- directories_skipped.append(path)
114
- self._log.debug(f"⏭️ SKIPPING DELETE: Path is a directory: {path}")
102
+ if self._dir_has_kept_ancestor(rel, spec):
103
+ self._log.debug("⏭️ SKIP DIR (kept ancestor): %s", rel)
104
+ else:
105
+ self._log.debug("❌ DELETE DIR: %s", rel)
106
+ delete_dirs.append(rel)
115
107
  else:
116
- non_matches.append(path)
117
- self._f.remove_file(path)
118
- self._log.debug(f"Deleted file: {path}")
108
+ self._log.debug("❌ DELETE FILE: %s", rel)
109
+ delete_files.append(rel)
119
110
 
120
- # Print results cleanly for debugging/logging purposes
121
- self._log.info("\nMATCHED PATHS:")
122
- self._log.info("=" * 80)
123
- for match in matches:
124
- self._log.info(f"✅ {match}")
111
+ # -- perform deletions -------------------------------------------------- #
112
+ for f in delete_files:
113
+ self._f.remove_file(root / f)
125
114
 
126
- self._log.info("\nNOT MATCHED PATHS:")
127
- self._log.info("=" * 80)
128
- for non_match in non_matches:
129
- self._log.info(f"❌ {non_match}")
115
+ # delete directories bottom-up to avoid “directory not empty” errors
116
+ for d in sorted(delete_dirs, key=lambda p: p.count("/"), reverse=True):
117
+ (root / d).rmdir()
130
118
 
119
+ # -- summary ------------------------------------------------------------ #
120
+ self._log.info("✅ kept : %d", len(keep))
121
+ self._log.info("🗂️ dirs : %d deleted", len(delete_dirs))
122
+ self._log.info("📄 files : %d deleted", len(delete_files))
123
+
124
+ @staticmethod
125
+ def _dir_has_kept_ancestor(rel: str, spec: PathSpec) -> bool:
126
+ """
127
+ Return True if *rel* **or any of its ancestors** is matched by *spec*.
128
+ """
129
+ parts = rel.split("/")
130
+ return any(spec.match_file("/".join(parts[: i + 1])) for i in range(len(parts)))
@@ -2,12 +2,15 @@ variant: java-springboot
2
2
 
3
3
  keep:
4
4
  # ── application source ────────────────────────────
5
+ - src/
6
+ - src/main/
5
7
  - src/main/java/
6
8
  - src/main/java/**
7
9
  - src/main/resources/
8
10
  - src/main/resources/**
9
11
 
10
12
  # ── tests ─────────────────────────────────────────
13
+ - src/test/
11
14
  - src/test/java/
12
15
  - src/test/java/**
13
16
 
@@ -18,6 +21,7 @@ keep:
18
21
  - README.md
19
22
 
20
23
  # ── IDE / run configs ─────────────────────────────
24
+ - runConfigurations/
21
25
  - runConfigurations/SpringBoot/
22
26
  - runConfigurations/SpringBoot/**
23
27
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: haraka
3
- Version: 0.2.29
3
+ Version: 0.2.31
4
4
  Summary: Reusable post-generation helper for Cookiecutter micro-service templates
5
5
  Author-email: Will Burks <will@example.com>
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "haraka"
7
- version = "0.2.29"
7
+ version = "0.2.31"
8
8
  description = "Reusable post-generation helper for Cookiecutter micro-service templates"
9
9
  readme = "README.md"
10
10
  license = {text = "MIT"}
File without changes
File without changes
File without changes
File without changes
File without changes