merger-cli 2.2.0__tar.gz → 2.3.0__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 (50) hide show
  1. {merger_cli-2.2.0 → merger_cli-2.3.0}/MANIFEST.in +1 -0
  2. {merger_cli-2.2.0/merger_cli.egg-info → merger_cli-2.3.0}/PKG-INFO +1 -1
  3. {merger_cli-2.2.0 → merger_cli-2.3.0}/merger/cli.py +31 -1
  4. {merger_cli-2.2.0 → merger_cli-2.3.0}/merger/exceptions/exceptions.py +3 -0
  5. {merger_cli-2.2.0 → merger_cli-2.3.0}/merger/file_tree/exporters/strategy.py +2 -2
  6. merger_cli-2.3.0/merger/resources/ignore_files/__init__.py +0 -0
  7. merger_cli-2.3.0/merger/resources/ignore_files/default.ignore +80 -0
  8. merger_cli-2.3.0/merger/resources/ignore_files/java.ignore +49 -0
  9. merger_cli-2.3.0/merger/resources/ignore_files/node.ignore +54 -0
  10. merger_cli-2.3.0/merger/resources/ignore_files/python.ignore +53 -0
  11. merger_cli-2.3.0/merger/utils/__init__.py +0 -0
  12. merger_cli-2.3.0/merger/utils/default_ignore_files.py +31 -0
  13. {merger_cli-2.2.0 → merger_cli-2.3.0/merger_cli.egg-info}/PKG-INFO +1 -1
  14. {merger_cli-2.2.0 → merger_cli-2.3.0}/merger_cli.egg-info/SOURCES.txt +7 -0
  15. {merger_cli-2.2.0 → merger_cli-2.3.0}/pyproject.toml +4 -1
  16. {merger_cli-2.2.0 → merger_cli-2.3.0}/LICENSE +0 -0
  17. {merger_cli-2.2.0 → merger_cli-2.3.0}/README.md +0 -0
  18. {merger_cli-2.2.0 → merger_cli-2.3.0}/merger/__init__.py +0 -0
  19. {merger_cli-2.2.0 → merger_cli-2.3.0}/merger/exceptions/__init__.py +0 -0
  20. {merger_cli-2.2.0 → merger_cli-2.3.0}/merger/file_tree/__init__.py +0 -0
  21. {merger_cli-2.2.0 → merger_cli-2.3.0}/merger/file_tree/entry.py +0 -0
  22. {merger_cli-2.2.0 → merger_cli-2.3.0}/merger/file_tree/exporters/__init__.py +0 -0
  23. {merger_cli-2.2.0 → merger_cli-2.3.0}/merger/file_tree/exporters/directory_tree_exporter.py +0 -0
  24. {merger_cli-2.2.0 → merger_cli-2.3.0}/merger/file_tree/exporters/json_exporter.py +0 -0
  25. {merger_cli-2.2.0 → merger_cli-2.3.0}/merger/file_tree/exporters/json_tree_exporter.py +0 -0
  26. {merger_cli-2.2.0 → merger_cli-2.3.0}/merger/file_tree/exporters/plain_text_exporter.py +0 -0
  27. {merger_cli-2.2.0 → merger_cli-2.3.0}/merger/file_tree/exporters/tree_exporter.py +0 -0
  28. {merger_cli-2.2.0 → merger_cli-2.3.0}/merger/file_tree/exporters/tree_with_plain_text_exporter.py +0 -0
  29. {merger_cli-2.2.0 → merger_cli-2.3.0}/merger/file_tree/tree.py +0 -0
  30. {merger_cli-2.2.0 → merger_cli-2.3.0}/merger/file_tree/type.py +0 -0
  31. {merger_cli-2.2.0 → merger_cli-2.3.0}/merger/logging/__init__.py +0 -0
  32. {merger_cli-2.2.0 → merger_cli-2.3.0}/merger/logging/logger.py +0 -0
  33. {merger_cli-2.2.0 → merger_cli-2.3.0}/merger/parsing/__init__.py +0 -0
  34. {merger_cli-2.2.0 → merger_cli-2.3.0}/merger/parsing/default_parser.py +0 -0
  35. {merger_cli-2.2.0 → merger_cli-2.3.0}/merger/parsing/modules.py +0 -0
  36. {merger_cli-2.2.0 → merger_cli-2.3.0}/merger/parsing/parser.py +0 -0
  37. {merger_cli-2.2.0 → merger_cli-2.3.0}/merger/parsing/parsers.py +0 -0
  38. {merger_cli-2.2.0/merger/utils → merger_cli-2.3.0/merger/resources}/__init__.py +0 -0
  39. {merger_cli-2.2.0 → merger_cli-2.3.0}/merger/utils/config.py +0 -0
  40. {merger_cli-2.2.0 → merger_cli-2.3.0}/merger/utils/files.py +0 -0
  41. {merger_cli-2.2.0 → merger_cli-2.3.0}/merger/utils/hash.py +0 -0
  42. {merger_cli-2.2.0 → merger_cli-2.3.0}/merger/utils/json.py +0 -0
  43. {merger_cli-2.2.0 → merger_cli-2.3.0}/merger/utils/merger_dir.py +0 -0
  44. {merger_cli-2.2.0 → merger_cli-2.3.0}/merger/utils/patterns.py +0 -0
  45. {merger_cli-2.2.0 → merger_cli-2.3.0}/merger/utils/version.py +0 -0
  46. {merger_cli-2.2.0 → merger_cli-2.3.0}/merger_cli.egg-info/dependency_links.txt +0 -0
  47. {merger_cli-2.2.0 → merger_cli-2.3.0}/merger_cli.egg-info/entry_points.txt +0 -0
  48. {merger_cli-2.2.0 → merger_cli-2.3.0}/merger_cli.egg-info/requires.txt +0 -0
  49. {merger_cli-2.2.0 → merger_cli-2.3.0}/merger_cli.egg-info/top_level.txt +0 -0
  50. {merger_cli-2.2.0 → merger_cli-2.3.0}/setup.cfg +0 -0
@@ -3,3 +3,4 @@ include README.md
3
3
  include pyproject.toml
4
4
 
5
5
  recursive-include merger *.py
6
+ recursive-include merger/resources/ignore_files *.ignore
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: merger-cli
3
- Version: 2.2.0
3
+ Version: 2.3.0
4
4
  Summary: Merger is a tool that scans a directory, filters files using customizable patterns, and merges readable content into a single output file.
5
5
  Author-email: Diogo Toporcov <diogotoporcov@gmail.com>
6
6
  License-Expression: MIT
@@ -2,7 +2,9 @@ import argparse
2
2
  import logging
3
3
  from pathlib import Path
4
4
 
5
- from merger.file_tree.exporters.tree_with_plain_text_exporter import TreeWithPlainTextExporter
5
+ from .exceptions.exceptions import UnknownIgnoreTemplate
6
+ from .file_tree.exporters.tree_with_plain_text_exporter import TreeWithPlainTextExporter
7
+ from .utils.default_ignore_files import read_ignore_template, list_ignore_templates
6
8
  from .file_tree.exporters.strategy import get_exporter_strategy, get_exporter_strategy_names
7
9
  from .file_tree.tree import FileTree
8
10
  from .logging.logger import setup_logger, logger
@@ -99,9 +101,37 @@ def main():
99
101
  help="File containing glob-style patterns to ignore (default: ./merger.ignore)",
100
102
  )
101
103
 
104
+ parser.add_argument(
105
+ "-c",
106
+ "--create-ignore",
107
+ choices=list_ignore_templates(),
108
+ type=str,
109
+ help="Create a merger.ignore file using a built-in template "
110
+ "(e.g. default, python, node, java)",
111
+ )
112
+
102
113
  args = parser.parse_args()
103
114
  setup_logger(level=getattr(logging, args.log_level.upper()))
104
115
 
116
+ # Create default merger.ignore file
117
+ if args.create_ignore:
118
+ target = Path("merger.ignore")
119
+
120
+ if target.exists():
121
+ parser.error("'merger.ignore' already exists.")
122
+
123
+ try:
124
+ body = read_ignore_template(args.create_ignore)
125
+
126
+ except UnknownIgnoreTemplate as e:
127
+ parser.error(str(e))
128
+
129
+ target.write_text(body, encoding="utf-8")
130
+ logger.info(
131
+ f"Created 'merger.ignore' using '{args.create_ignore}' template."
132
+ )
133
+ return
134
+
105
135
  # Install module
106
136
  if args.install_module:
107
137
  try:
@@ -21,3 +21,6 @@ class ModuleAlreadyInstalled(Exception):
21
21
 
22
22
  super().__init__(f"Module at '{path}' is already installed")
23
23
 
24
+
25
+ class UnknownIgnoreTemplate(ValueError):
26
+ pass
@@ -9,10 +9,10 @@ from .tree_with_plain_text_exporter import TreeWithPlainTextExporter
9
9
 
10
10
  _EXPORTERS: Dict[str, Type[TreeExporter]] = {
11
11
  TreeWithPlainTextExporter.NAME.upper(): TreeWithPlainTextExporter,
12
+ DirectoryTreeExporter.NAME.upper(): DirectoryTreeExporter,
12
13
  PlainTextExporter.NAME.upper(): PlainTextExporter,
14
+ JsonExporter.NAME.upper(): JsonExporter,
13
15
  JsonTreeExporter.NAME.upper(): JsonTreeExporter,
14
- DirectoryTreeExporter.NAME.upper(): DirectoryTreeExporter,
15
- JsonExporter.NAME.upper(): JsonExporter
16
16
  }
17
17
 
18
18
 
@@ -0,0 +1,80 @@
1
+ node_modules/
2
+ bower_components/
3
+ vendor/
4
+ .venv/
5
+ venv/
6
+ env/
7
+ ENV/
8
+
9
+ dist/
10
+ build/
11
+ out/
12
+ target/
13
+ bin/
14
+ obj/
15
+ coverage/
16
+ .tmp/
17
+ .cache/
18
+
19
+ logs/
20
+ *.log
21
+ npm-debug.log*
22
+ yarn-debug.log*
23
+ yarn-error.log*
24
+ pnpm-debug.log*
25
+ *.pid
26
+ *.seed
27
+
28
+ .env
29
+ .env.*
30
+ *.key
31
+ *.pem
32
+ *.crt
33
+
34
+ .DS_Store
35
+ .AppleDouble
36
+ .LSOverride
37
+ Thumbs.db
38
+ ehthumbs.db
39
+ desktop.ini
40
+
41
+ .idea/
42
+ .vscode/
43
+ *.sublime-project
44
+ *.sublime-workspace
45
+ *.swp
46
+ *.swo
47
+ .project
48
+ .classpath
49
+ .settings/
50
+
51
+ __pycache__/
52
+ *.py[cod]
53
+ *.pyo
54
+ .pytest_cache/
55
+ .mypy_cache/
56
+ .tox/
57
+
58
+ .eslintcache
59
+ .stylelintcache
60
+ .parcel-cache/
61
+ .next/
62
+ .nuxt/
63
+ .svelte-kit/
64
+
65
+ .pnpm-store/
66
+ .yarn/cache/
67
+ .yarn/unplugged/
68
+
69
+ *.zip
70
+ *.tar
71
+ *.tar.gz
72
+ *.tgz
73
+ *.rar
74
+ *.7z
75
+
76
+ *.tmp
77
+ *.temp
78
+ *.bak
79
+ *.old
80
+ *.orig
@@ -0,0 +1,49 @@
1
+ target/
2
+ out/
3
+ build/
4
+ bin/
5
+ *.class
6
+ *.jar
7
+ *.war
8
+ *.ear
9
+
10
+ .gradle/
11
+ .gradle-cache/
12
+ .mvn/
13
+ .mvn/wrapper/
14
+ dependency-reduced-pom.xml
15
+
16
+ .idea/
17
+ *.iml
18
+ .project
19
+ .classpath
20
+ .settings/
21
+
22
+ logs/
23
+ *.log
24
+
25
+ .env
26
+ .env.*
27
+ *.key
28
+ *.pem
29
+ *.crt
30
+
31
+ .DS_Store
32
+ .AppleDouble
33
+ .LSOverride
34
+ Thumbs.db
35
+ ehthumbs.db
36
+ desktop.ini
37
+
38
+ *.zip
39
+ *.tar
40
+ *.tar.gz
41
+ *.tgz
42
+ *.rar
43
+ *.7z
44
+
45
+ *.tmp
46
+ *.temp
47
+ *.bak
48
+ *.old
49
+ *.orig
@@ -0,0 +1,54 @@
1
+ node_modules/
2
+ bower_components/
3
+ .pnpm-store/
4
+ .yarn/cache/
5
+ .yarn/unplugged/
6
+ .yarn/install-state.gz
7
+
8
+ dist/
9
+ build/
10
+ out/
11
+ .next/
12
+ .nuxt/
13
+ .svelte-kit/
14
+ .parcel-cache/
15
+ .eslintcache
16
+ .stylelintcache
17
+
18
+ logs/
19
+ *.log
20
+ npm-debug.log*
21
+ yarn-debug.log*
22
+ yarn-error.log*
23
+ pnpm-debug.log*
24
+ *.pid
25
+ *.seed
26
+
27
+ .env
28
+ .env.*
29
+ *.key
30
+ *.pem
31
+ *.crt
32
+
33
+ .idea/
34
+ .vscode/
35
+
36
+ .DS_Store
37
+ .AppleDouble
38
+ .LSOverride
39
+ Thumbs.db
40
+ ehthumbs.db
41
+ desktop.ini
42
+
43
+ *.zip
44
+ *.tar
45
+ *.tar.gz
46
+ *.tgz
47
+ *.rar
48
+ *.7z
49
+
50
+ *.tmp
51
+ *.temp
52
+ *.bak
53
+ *.old
54
+ *.orig
@@ -0,0 +1,53 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ *.pyo
4
+ .pytest_cache/
5
+ .mypy_cache/
6
+ .tox/
7
+ .nox/
8
+ .coverage
9
+ coverage.xml
10
+ htmlcov/
11
+
12
+ .venv/
13
+ venv/
14
+ env/
15
+ ENV/
16
+ .virtualenv/
17
+
18
+ dist/
19
+ build/
20
+ *.egg-info/
21
+ .eggs/
22
+ pip-wheel-metadata/
23
+
24
+ .env
25
+ .env.*
26
+ *.key
27
+ *.pem
28
+ *.crt
29
+
30
+ .idea/
31
+ .vscode/
32
+ .pyright/
33
+ .ruff_cache/
34
+
35
+ .DS_Store
36
+ .AppleDouble
37
+ .LSOverride
38
+ Thumbs.db
39
+ ehthumbs.db
40
+ desktop.ini
41
+
42
+ *.zip
43
+ *.tar
44
+ *.tar.gz
45
+ *.tgz
46
+ *.rar
47
+ *.7z
48
+
49
+ *.tmp
50
+ *.temp
51
+ *.bak
52
+ *.old
53
+ *.orig
File without changes
@@ -0,0 +1,31 @@
1
+ from importlib import resources
2
+ from typing import List
3
+
4
+ from ..exceptions.exceptions import UnknownIgnoreTemplate
5
+
6
+
7
+ def list_ignore_templates() -> List[str]:
8
+ base = resources.files("merger.resources.ignore_files")
9
+
10
+ return sorted(
11
+ p.name.removesuffix(".ignore")
12
+ for p in base.iterdir()
13
+ if p.is_file() and p.name.endswith(".ignore")
14
+ )
15
+
16
+
17
+ def read_ignore_template(template: str) -> str:
18
+ name = template.lower().strip()
19
+ filename = f"{name}.ignore"
20
+
21
+ base = resources.files("merger.resources.ignore_files")
22
+ path = base.joinpath(filename)
23
+
24
+ if not path.is_file():
25
+ available = list_ignore_templates()
26
+ raise UnknownIgnoreTemplate(
27
+ f"Unknown ignore template '{template}'. "
28
+ f"Available templates: {', '.join(available)}"
29
+ )
30
+
31
+ return path.read_text(encoding="utf-8")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: merger-cli
3
- Version: 2.2.0
3
+ Version: 2.3.0
4
4
  Summary: Merger is a tool that scans a directory, filters files using customizable patterns, and merges readable content into a single output file.
5
5
  Author-email: Diogo Toporcov <diogotoporcov@gmail.com>
6
6
  License-Expression: MIT
@@ -26,8 +26,15 @@ merger/parsing/default_parser.py
26
26
  merger/parsing/modules.py
27
27
  merger/parsing/parser.py
28
28
  merger/parsing/parsers.py
29
+ merger/resources/__init__.py
30
+ merger/resources/ignore_files/__init__.py
31
+ merger/resources/ignore_files/default.ignore
32
+ merger/resources/ignore_files/java.ignore
33
+ merger/resources/ignore_files/node.ignore
34
+ merger/resources/ignore_files/python.ignore
29
35
  merger/utils/__init__.py
30
36
  merger/utils/config.py
37
+ merger/utils/default_ignore_files.py
31
38
  merger/utils/files.py
32
39
  merger/utils/hash.py
33
40
  merger/utils/json.py
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "merger-cli"
3
- version = "2.2.0"
3
+ version = "2.3.0"
4
4
  description = "Merger is a tool that scans a directory, filters files using customizable patterns, and merges readable content into a single output file."
5
5
  keywords = ["merger", "file system", "concatenation", "automation", "development"]
6
6
  authors = [
@@ -25,6 +25,9 @@ classifiers = [
25
25
  Homepage = "https://github.com/diogotoporcov/merger-cli"
26
26
  Documentation = "https://github.com/diogotoporcov/merger-cli"
27
27
 
28
+ [tool.setuptools.package-data]
29
+ merger = ["resources/ignore_files/*.ignore"]
30
+
28
31
  [build-system]
29
32
  requires = ["setuptools>=80.9.0", "wheel"]
30
33
  build-backend = "setuptools.build_meta"
File without changes
File without changes
File without changes