foundrytools-cli 2.1.0__tar.gz → 2.2.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.
- {foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/PKG-INFO +19 -25
- {foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/README.md +8 -16
- foundrytools_cli-2.2.0/pyproject.toml +131 -0
- foundrytools_cli-2.2.0/pyproject.toml.orig +112 -0
- foundrytools_cli-2.2.0/src/foundrytools_cli/__init__.py +3 -0
- {foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/__main__.py +1 -1
- {foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/fix/cli.py +0 -1
- {foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/utils/cli.py +0 -11
- {foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/utils/font_renamer.py +6 -3
- {foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/utils/sync_timestamps.py +3 -4
- {foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/utils/task_runner.py +4 -4
- foundrytools_cli-2.1.0/pyproject.toml +0 -74
- foundrytools_cli-2.1.0/src/foundrytools_cli/__init__.py +0 -3
- {foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/__init__.py +0 -0
- {foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/cff.py +0 -0
- {foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/cmap.py +0 -0
- {foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/converter/__init__.py +0 -0
- {foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/converter/cli.py +0 -0
- {foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/converter/ttf_to_otf.py +0 -0
- {foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/fix/__init__.py +0 -0
- {foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/fix/legacy_accents.py +0 -0
- {foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/fix/vertical_metrics.py +0 -0
- {foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/font.py +0 -0
- {foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/gsub.py +0 -0
- {foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/hhea.py +0 -0
- {foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/name.py +0 -0
- {foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/os_2.py +0 -0
- {foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/otf.py +0 -0
- {foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/post.py +0 -0
- {foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/print/__init__.py +0 -0
- {foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/print/cli.py +0 -0
- {foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/print/font_info.py +0 -0
- {foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/print/font_names.py +0 -0
- {foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/print/vf_instances.py +0 -0
- {foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/ttf.py +0 -0
- {foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/utils/__init__.py +0 -0
- {foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/utils/font_organizer.py +0 -0
- {foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/utils/__init__.py +0 -0
- {foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/utils/logger.py +0 -0
- {foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/utils/timer.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: foundrytools-cli
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.2.0
|
|
4
4
|
Summary: A set of command line tools to inspect, manipulate and convert font files
|
|
5
5
|
Author: Cesare Gilento
|
|
6
6
|
Author-email: Cesare Gilento <ftcli@proton.me>
|
|
@@ -11,23 +11,25 @@ Classifier: Intended Audience :: End Users/Desktop
|
|
|
11
11
|
Classifier: Natural Language :: English
|
|
12
12
|
Classifier: Operating System :: OS Independent
|
|
13
13
|
Classifier: Programming Language :: Python :: 3
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
15
14
|
Classifier: Programming Language :: Python :: 3.11
|
|
16
15
|
Classifier: Programming Language :: Python :: 3.12
|
|
17
16
|
Classifier: Programming Language :: Python :: 3.13
|
|
18
17
|
Classifier: Programming Language :: Python :: 3.14
|
|
19
|
-
Classifier:
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
20
19
|
Classifier: Topic :: Text Processing :: Fonts
|
|
21
|
-
Requires-Dist: afdko
|
|
22
|
-
Requires-Dist: click>=8.
|
|
20
|
+
Requires-Dist: afdko==4.0.3
|
|
21
|
+
Requires-Dist: click>=8.5.0
|
|
23
22
|
Requires-Dist: foundrytools>=0.1.6
|
|
24
23
|
Requires-Dist: loguru>=0.7.3
|
|
25
24
|
Requires-Dist: pathvalidate>=3.3.1
|
|
26
|
-
Requires-Dist: rich>=
|
|
27
|
-
Requires-Dist: ufolib2>=0.
|
|
28
|
-
Requires-Dist: win32-setctime>=1.2.0 ; sys_platform
|
|
29
|
-
Requires-
|
|
25
|
+
Requires-Dist: rich>=15.0.0
|
|
26
|
+
Requires-Dist: ufolib2>=0.19.0
|
|
27
|
+
Requires-Dist: win32-setctime>=1.2.0 ; sys_platform == 'win32'
|
|
28
|
+
Requires-Dist: sphinx-click>=6.2.0 ; extra == 'docs'
|
|
29
|
+
Requires-Dist: sphinx-rtd-theme>=3.0.2 ; extra == 'docs'
|
|
30
|
+
Requires-Python: >=3.11
|
|
30
31
|
Project-URL: Homepage, https://github.com/ftCLI/FoundryTools-CLI
|
|
32
|
+
Provides-Extra: docs
|
|
31
33
|
Description-Content-Type: text/markdown
|
|
32
34
|
|
|
33
35
|
# FoundryTools-CLI
|
|
@@ -54,10 +56,7 @@ rendered by [rich](https://github.com/Textualize/rich).
|
|
|
54
56
|
|
|
55
57
|
## Installation
|
|
56
58
|
|
|
57
|
-
FoundryTools-CLI requires Python 3.
|
|
58
|
-
|
|
59
|
-
**IMPORTANT**: If you have Python 2.x installed in your system, you may have to use `python3`
|
|
60
|
-
(instead of `python`) in the commands below.
|
|
59
|
+
FoundryTools-CLI requires Python 3.11 or later.
|
|
61
60
|
|
|
62
61
|
### pip
|
|
63
62
|
|
|
@@ -71,25 +70,20 @@ python -m pip install foundrytools-cli
|
|
|
71
70
|
### Editable mode
|
|
72
71
|
|
|
73
72
|
If you would like to contribute to the development, you can clone the repository from GitHub,
|
|
74
|
-
install the package in 'editable' mode and modify the source code in place.
|
|
75
|
-
|
|
73
|
+
install the package in 'editable' mode and modify the source code in place. Install
|
|
74
|
+
[uv](https://docs.astral.sh/uv/getting-started/installation/) first to create the project
|
|
75
|
+
environment.
|
|
76
76
|
|
|
77
77
|
```
|
|
78
78
|
# clone the repository:
|
|
79
79
|
git clone https://github.com/ftCLI/foundrytools-cli.git
|
|
80
80
|
cd foundrytools-cli
|
|
81
81
|
|
|
82
|
-
#
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
# to activate the virtual environmtnet in macOS and Linux, do:
|
|
86
|
-
. ftcli-venv/bin/activate
|
|
87
|
-
|
|
88
|
-
# to activate the virtual environment in Windows, do:
|
|
89
|
-
ftcli-venv\Scripts\activate.bat
|
|
82
|
+
# install the project and development tools in a managed environment:
|
|
83
|
+
uv sync --locked --group dev
|
|
90
84
|
|
|
91
|
-
#
|
|
92
|
-
|
|
85
|
+
# run the CLI:
|
|
86
|
+
uv run ftcli --help
|
|
93
87
|
```
|
|
94
88
|
|
|
95
89
|
## Documentation
|
|
@@ -22,10 +22,7 @@ rendered by [rich](https://github.com/Textualize/rich).
|
|
|
22
22
|
|
|
23
23
|
## Installation
|
|
24
24
|
|
|
25
|
-
FoundryTools-CLI requires Python 3.
|
|
26
|
-
|
|
27
|
-
**IMPORTANT**: If you have Python 2.x installed in your system, you may have to use `python3`
|
|
28
|
-
(instead of `python`) in the commands below.
|
|
25
|
+
FoundryTools-CLI requires Python 3.11 or later.
|
|
29
26
|
|
|
30
27
|
### pip
|
|
31
28
|
|
|
@@ -39,25 +36,20 @@ python -m pip install foundrytools-cli
|
|
|
39
36
|
### Editable mode
|
|
40
37
|
|
|
41
38
|
If you would like to contribute to the development, you can clone the repository from GitHub,
|
|
42
|
-
install the package in 'editable' mode and modify the source code in place.
|
|
43
|
-
|
|
39
|
+
install the package in 'editable' mode and modify the source code in place. Install
|
|
40
|
+
[uv](https://docs.astral.sh/uv/getting-started/installation/) first to create the project
|
|
41
|
+
environment.
|
|
44
42
|
|
|
45
43
|
```
|
|
46
44
|
# clone the repository:
|
|
47
45
|
git clone https://github.com/ftCLI/foundrytools-cli.git
|
|
48
46
|
cd foundrytools-cli
|
|
49
47
|
|
|
50
|
-
#
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
# to activate the virtual environmtnet in macOS and Linux, do:
|
|
54
|
-
. ftcli-venv/bin/activate
|
|
55
|
-
|
|
56
|
-
# to activate the virtual environment in Windows, do:
|
|
57
|
-
ftcli-venv\Scripts\activate.bat
|
|
48
|
+
# install the project and development tools in a managed environment:
|
|
49
|
+
uv sync --locked --group dev
|
|
58
50
|
|
|
59
|
-
#
|
|
60
|
-
|
|
51
|
+
# run the CLI:
|
|
52
|
+
uv run ftcli --help
|
|
61
53
|
```
|
|
62
54
|
|
|
63
55
|
## Documentation
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["uv_build>=0.13.1,<0.14"]
|
|
3
|
+
build-backend = "uv_build"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "foundrytools-cli"
|
|
7
|
+
version = "2.2.0"
|
|
8
|
+
description = "A set of command line tools to inspect, manipulate and convert font files"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.11"
|
|
11
|
+
license = "MIT"
|
|
12
|
+
dependencies = [
|
|
13
|
+
"afdko==4.0.3",
|
|
14
|
+
"click>=8.5.0",
|
|
15
|
+
"foundrytools>=0.1.6",
|
|
16
|
+
"loguru>=0.7.3",
|
|
17
|
+
"pathvalidate>=3.3.1",
|
|
18
|
+
"rich>=15.0.0",
|
|
19
|
+
"ufolib2>=0.19.0",
|
|
20
|
+
"win32-setctime>=1.2.0; sys_platform == 'win32'",
|
|
21
|
+
]
|
|
22
|
+
classifiers = [
|
|
23
|
+
"Development Status :: 5 - Production/Stable",
|
|
24
|
+
"Intended Audience :: Developers",
|
|
25
|
+
"Intended Audience :: End Users/Desktop",
|
|
26
|
+
"Natural Language :: English",
|
|
27
|
+
"Operating System :: OS Independent",
|
|
28
|
+
"Programming Language :: Python :: 3",
|
|
29
|
+
"Programming Language :: Python :: 3.11",
|
|
30
|
+
"Programming Language :: Python :: 3.12",
|
|
31
|
+
"Programming Language :: Python :: 3.13",
|
|
32
|
+
"Programming Language :: Python :: 3.14",
|
|
33
|
+
"Programming Language :: Python :: 3.15",
|
|
34
|
+
"Topic :: Text Processing :: Fonts",
|
|
35
|
+
]
|
|
36
|
+
|
|
37
|
+
[[project.authors]]
|
|
38
|
+
name = "Cesare Gilento"
|
|
39
|
+
email = "ftcli@proton.me"
|
|
40
|
+
|
|
41
|
+
[project.optional-dependencies]
|
|
42
|
+
docs = [
|
|
43
|
+
"sphinx-click>=6.2.0",
|
|
44
|
+
"sphinx-rtd-theme>=3.0.2",
|
|
45
|
+
]
|
|
46
|
+
|
|
47
|
+
[project.scripts]
|
|
48
|
+
ftcli = "foundrytools_cli.__main__:cli"
|
|
49
|
+
|
|
50
|
+
[project.urls]
|
|
51
|
+
Homepage = "https://github.com/ftCLI/FoundryTools-CLI"
|
|
52
|
+
|
|
53
|
+
[dependency-groups]
|
|
54
|
+
dev = [
|
|
55
|
+
"bump-my-version>=1.6.0",
|
|
56
|
+
"mypy>=2.4.0",
|
|
57
|
+
"pre-commit>=4.6.2",
|
|
58
|
+
"ruff>=0.11.0",
|
|
59
|
+
]
|
|
60
|
+
security = [
|
|
61
|
+
"bandit>=1.8.6",
|
|
62
|
+
"pip-audit>=2.9.0",
|
|
63
|
+
]
|
|
64
|
+
|
|
65
|
+
[tool.uv.build-backend]
|
|
66
|
+
module-name = "foundrytools_cli"
|
|
67
|
+
module-root = "src"
|
|
68
|
+
|
|
69
|
+
[tool.mypy]
|
|
70
|
+
warn_unused_configs = true
|
|
71
|
+
disallow_untyped_defs = true
|
|
72
|
+
|
|
73
|
+
[[tool.mypy.overrides]]
|
|
74
|
+
module = [
|
|
75
|
+
"afdko.*",
|
|
76
|
+
"fontTools.*",
|
|
77
|
+
"win32_setctime.*",
|
|
78
|
+
]
|
|
79
|
+
ignore_missing_imports = true
|
|
80
|
+
|
|
81
|
+
[tool.ruff]
|
|
82
|
+
line-length = 100
|
|
83
|
+
indent-width = 4
|
|
84
|
+
target-version = "py311"
|
|
85
|
+
|
|
86
|
+
[tool.ruff.lint]
|
|
87
|
+
select = [
|
|
88
|
+
"C",
|
|
89
|
+
"E",
|
|
90
|
+
"F",
|
|
91
|
+
"UP",
|
|
92
|
+
"B",
|
|
93
|
+
"SIM",
|
|
94
|
+
"I",
|
|
95
|
+
]
|
|
96
|
+
ignore = []
|
|
97
|
+
fixable = ["ALL"]
|
|
98
|
+
unfixable = []
|
|
99
|
+
dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
|
|
100
|
+
|
|
101
|
+
[tool.ruff.format]
|
|
102
|
+
quote-style = "double"
|
|
103
|
+
indent-style = "space"
|
|
104
|
+
skip-magic-trailing-comma = false
|
|
105
|
+
line-ending = "auto"
|
|
106
|
+
docstring-code-format = true
|
|
107
|
+
docstring-code-line-length = "dynamic"
|
|
108
|
+
|
|
109
|
+
[tool.bumpversion]
|
|
110
|
+
current_version = "2.2.0"
|
|
111
|
+
commit = false
|
|
112
|
+
tag = false
|
|
113
|
+
|
|
114
|
+
[[tool.bumpversion.files]]
|
|
115
|
+
filename = "src/foundrytools_cli/__init__.py"
|
|
116
|
+
search = '__version__ = "{current_version}"'
|
|
117
|
+
replace = '__version__ = "{new_version}"'
|
|
118
|
+
|
|
119
|
+
[[tool.bumpversion.files]]
|
|
120
|
+
filename = "docs/source/conf.py"
|
|
121
|
+
search = 'release = "{current_version}"'
|
|
122
|
+
replace = 'release = "{new_version}"'
|
|
123
|
+
|
|
124
|
+
[[tool.bumpversion.files]]
|
|
125
|
+
filename = "pyproject.toml"
|
|
126
|
+
search = """
|
|
127
|
+
name = "foundrytools-cli"
|
|
128
|
+
version = "{current_version}""""
|
|
129
|
+
replace = """
|
|
130
|
+
name = "foundrytools-cli"
|
|
131
|
+
version = "{new_version}""""
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["uv_build>=0.13.1,<0.14"]
|
|
3
|
+
build-backend = "uv_build"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "foundrytools-cli"
|
|
7
|
+
version = "2.2.0"
|
|
8
|
+
description = "A set of command line tools to inspect, manipulate and convert font files"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.11"
|
|
11
|
+
license = "MIT"
|
|
12
|
+
authors = [{ name = "Cesare Gilento", email = "ftcli@proton.me" }]
|
|
13
|
+
dependencies = [
|
|
14
|
+
"afdko==4.0.3",
|
|
15
|
+
"click>=8.5.0",
|
|
16
|
+
"foundrytools>=0.1.6",
|
|
17
|
+
"loguru>=0.7.3",
|
|
18
|
+
"pathvalidate>=3.3.1",
|
|
19
|
+
"rich>=15.0.0",
|
|
20
|
+
"ufolib2>=0.19.0",
|
|
21
|
+
"win32-setctime>=1.2.0; sys_platform == 'win32'",
|
|
22
|
+
]
|
|
23
|
+
classifiers = [
|
|
24
|
+
"Development Status :: 5 - Production/Stable",
|
|
25
|
+
"Intended Audience :: Developers",
|
|
26
|
+
"Intended Audience :: End Users/Desktop",
|
|
27
|
+
"Natural Language :: English",
|
|
28
|
+
"Operating System :: OS Independent",
|
|
29
|
+
"Programming Language :: Python :: 3",
|
|
30
|
+
"Programming Language :: Python :: 3.11",
|
|
31
|
+
"Programming Language :: Python :: 3.12",
|
|
32
|
+
"Programming Language :: Python :: 3.13",
|
|
33
|
+
"Programming Language :: Python :: 3.14",
|
|
34
|
+
"Programming Language :: Python :: 3.15",
|
|
35
|
+
"Topic :: Text Processing :: Fonts",
|
|
36
|
+
]
|
|
37
|
+
|
|
38
|
+
[dependency-groups]
|
|
39
|
+
dev = [
|
|
40
|
+
"bump-my-version>=1.6.0",
|
|
41
|
+
"mypy>=2.4.0",
|
|
42
|
+
"pre-commit>=4.6.2",
|
|
43
|
+
"ruff>=0.11.0",
|
|
44
|
+
]
|
|
45
|
+
security = [
|
|
46
|
+
"bandit>=1.8.6",
|
|
47
|
+
"pip-audit>=2.9.0",
|
|
48
|
+
]
|
|
49
|
+
|
|
50
|
+
[project.optional-dependencies]
|
|
51
|
+
docs = [
|
|
52
|
+
"sphinx-click>=6.2.0",
|
|
53
|
+
"sphinx-rtd-theme>=3.0.2",
|
|
54
|
+
]
|
|
55
|
+
|
|
56
|
+
[project.scripts]
|
|
57
|
+
ftcli = "foundrytools_cli.__main__:cli"
|
|
58
|
+
|
|
59
|
+
[project.urls]
|
|
60
|
+
Homepage = "https://github.com/ftCLI/FoundryTools-CLI"
|
|
61
|
+
|
|
62
|
+
[tool.uv.build-backend]
|
|
63
|
+
module-name = "foundrytools_cli"
|
|
64
|
+
module-root = "src"
|
|
65
|
+
|
|
66
|
+
[tool.mypy]
|
|
67
|
+
warn_unused_configs = true
|
|
68
|
+
disallow_untyped_defs = true
|
|
69
|
+
|
|
70
|
+
[[tool.mypy.overrides]]
|
|
71
|
+
module = ["afdko.*", "fontTools.*", "win32_setctime.*"]
|
|
72
|
+
ignore_missing_imports = true
|
|
73
|
+
|
|
74
|
+
[tool.ruff]
|
|
75
|
+
line-length = 100
|
|
76
|
+
indent-width = 4
|
|
77
|
+
target-version = "py311"
|
|
78
|
+
|
|
79
|
+
[tool.ruff.lint]
|
|
80
|
+
select = ["C", "E", "F", "UP", "B", "SIM", "I"]
|
|
81
|
+
ignore = []
|
|
82
|
+
fixable = ["ALL"]
|
|
83
|
+
unfixable = []
|
|
84
|
+
dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
|
|
85
|
+
|
|
86
|
+
[tool.ruff.format]
|
|
87
|
+
quote-style = "double"
|
|
88
|
+
indent-style = "space"
|
|
89
|
+
skip-magic-trailing-comma = false
|
|
90
|
+
line-ending = "auto"
|
|
91
|
+
docstring-code-format = true
|
|
92
|
+
docstring-code-line-length = "dynamic"
|
|
93
|
+
|
|
94
|
+
[tool.bumpversion]
|
|
95
|
+
current_version = "2.2.0"
|
|
96
|
+
commit = false
|
|
97
|
+
tag = false
|
|
98
|
+
|
|
99
|
+
[[tool.bumpversion.files]]
|
|
100
|
+
filename = "src/foundrytools_cli/__init__.py"
|
|
101
|
+
search = '__version__ = "{current_version}"'
|
|
102
|
+
replace = '__version__ = "{new_version}"'
|
|
103
|
+
|
|
104
|
+
[[tool.bumpversion.files]]
|
|
105
|
+
filename = "docs/source/conf.py"
|
|
106
|
+
search = 'release = "{current_version}"'
|
|
107
|
+
replace = 'release = "{new_version}"'
|
|
108
|
+
|
|
109
|
+
[[tool.bumpversion.files]]
|
|
110
|
+
filename = "pyproject.toml"
|
|
111
|
+
search = "name = \"foundrytools-cli\"\nversion = \"{current_version}\""
|
|
112
|
+
replace = "name = \"foundrytools-cli\"\nversion = \"{new_version}\""
|
{foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/utils/cli.py
RENAMED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
# pylint: disable=import-outside-toplevel
|
|
2
1
|
from collections.abc import Callable
|
|
3
2
|
from pathlib import Path
|
|
4
3
|
from typing import Any, cast
|
|
@@ -56,16 +55,6 @@ cli = click.Group(help="Miscellaneous utilities.")
|
|
|
56
55
|
6: Macintosh LWFN (LaserWriter Font Naming) using 5:3:3 rule
|
|
57
56
|
""",
|
|
58
57
|
)
|
|
59
|
-
@click.option(
|
|
60
|
-
"-o",
|
|
61
|
-
"--overwrite",
|
|
62
|
-
"overwrite",
|
|
63
|
-
is_flag=True,
|
|
64
|
-
help="""
|
|
65
|
-
Allow overwriting output files. THIS MIGHT POTENTIALLY RESULT IN LOSS OF FILES.
|
|
66
|
-
USE WITH CARE.
|
|
67
|
-
""",
|
|
68
|
-
)
|
|
69
58
|
@recursive_flag()
|
|
70
59
|
def font_renamer(input_path: Path, **options: dict[str, Any]) -> None:
|
|
71
60
|
"""
|
|
@@ -116,7 +116,7 @@ def _get_file_stem(font: Font, source: int = 1) -> str:
|
|
|
116
116
|
return sanitize_filename(file_name, platform="auto")
|
|
117
117
|
|
|
118
118
|
|
|
119
|
-
def main(font: Font, source: int = 1
|
|
119
|
+
def main(font: Font, source: int = 1) -> None:
|
|
120
120
|
"""
|
|
121
121
|
Renames the given font files.
|
|
122
122
|
"""
|
|
@@ -128,25 +128,28 @@ def main(font: Font, source: int = 1, overwrite: bool = False) -> None:
|
|
|
128
128
|
f"source=4 and source=5 can be used for OTF files only. Using source=1 for "
|
|
129
129
|
f"{old_file.name}"
|
|
130
130
|
)
|
|
131
|
+
|
|
131
132
|
new_file_name = sanitize_filename(_get_file_stem(font=font, source=source))
|
|
132
133
|
new_file = font.get_file_path(
|
|
133
134
|
file=Path(new_file_name),
|
|
134
135
|
extension=font.get_file_ext(),
|
|
135
136
|
output_dir=old_file.parent,
|
|
136
|
-
overwrite=
|
|
137
|
+
overwrite=True,
|
|
137
138
|
)
|
|
138
139
|
if new_file == old_file:
|
|
139
140
|
logger.skip(f"{old_file.name} is already named correctly") # type: ignore
|
|
140
141
|
return
|
|
142
|
+
|
|
141
143
|
if new_file.exists():
|
|
142
144
|
logger.warning(f"Another file named {new_file.name} already exists")
|
|
143
145
|
logger.skip(f"{old_file.name} was not renamed") # type: ignore
|
|
144
146
|
return
|
|
147
|
+
|
|
145
148
|
try:
|
|
146
149
|
old_file.rename(new_file)
|
|
147
150
|
logger.opt(colors=True).info(
|
|
148
151
|
f"<light-black>{old_file.name}</> --> <bold><magenta>{new_file.name}</></>"
|
|
149
152
|
)
|
|
150
|
-
except Exception as e:
|
|
153
|
+
except Exception as e:
|
|
151
154
|
logger.error(f"Error renaming {old_file.name}: {e}")
|
|
152
155
|
return
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
# pylint: disable=import-outside-toplevel
|
|
2
1
|
import os
|
|
3
2
|
import platform
|
|
4
3
|
from pathlib import Path
|
|
@@ -19,7 +18,7 @@ if platform.system() == "Windows":
|
|
|
19
18
|
from win32_setctime import setctime
|
|
20
19
|
|
|
21
20
|
SETCTIME = setctime
|
|
22
|
-
except (ImportError, Exception) as exc:
|
|
21
|
+
except (ImportError, Exception) as exc:
|
|
23
22
|
SETCTIME = None
|
|
24
23
|
IMPORT_ERROR = exc
|
|
25
24
|
|
|
@@ -98,7 +97,7 @@ def _set_windows_ctime(path: Path, timestamp: int) -> None:
|
|
|
98
97
|
try:
|
|
99
98
|
SETCTIME(path, timestamp + epoch_diff)
|
|
100
99
|
logger.info(f"created timestamp : {timestampToString(timestamp)}")
|
|
101
|
-
except Exception as e:
|
|
100
|
+
except Exception as e:
|
|
102
101
|
logger.error(f"Error setting file creation time: {e}")
|
|
103
102
|
|
|
104
103
|
|
|
@@ -107,7 +106,7 @@ def _set_mtime_and_atime(path: Path, timestamp: int) -> None:
|
|
|
107
106
|
os.utime(path, (timestamp + epoch_diff, timestamp + epoch_diff))
|
|
108
107
|
logger.info(f"modified timestamp : {timestampToString(timestamp)}")
|
|
109
108
|
logger.info(f"access timestamp : {timestampToString(timestamp)}")
|
|
110
|
-
except Exception as e:
|
|
109
|
+
except Exception as e:
|
|
111
110
|
logger.error(f"Error setting file timestamps: {e}")
|
|
112
111
|
|
|
113
112
|
|
|
@@ -35,7 +35,7 @@ class SaveOptions:
|
|
|
35
35
|
overwrite: bool = False
|
|
36
36
|
|
|
37
37
|
|
|
38
|
-
class TaskRunnerConfig:
|
|
38
|
+
class TaskRunnerConfig:
|
|
39
39
|
"""
|
|
40
40
|
Handle options for TaskRunner.
|
|
41
41
|
"""
|
|
@@ -85,7 +85,7 @@ class TaskRunnerConfig: # pylint: disable=too-few-public-methods
|
|
|
85
85
|
setattr(options_group, key, value)
|
|
86
86
|
|
|
87
87
|
|
|
88
|
-
class TaskRunner:
|
|
88
|
+
class TaskRunner:
|
|
89
89
|
"""
|
|
90
90
|
A class for running tasks on multiple fonts.
|
|
91
91
|
|
|
@@ -162,7 +162,7 @@ class TaskRunner: # pylint: disable=too-few-public-methods
|
|
|
162
162
|
def _execute_task(self, font: Font) -> bool:
|
|
163
163
|
try:
|
|
164
164
|
return bool(self.task(font, **self.config.task_options))
|
|
165
|
-
except Exception as e:
|
|
165
|
+
except Exception as e:
|
|
166
166
|
self._log_error(e)
|
|
167
167
|
return False
|
|
168
168
|
|
|
@@ -181,7 +181,7 @@ class TaskRunner: # pylint: disable=too-few-public-methods
|
|
|
181
181
|
out_file = self._get_out_file_name(font)
|
|
182
182
|
font.save(out_file, reorder_tables=self.config.save_options.reorder_tables)
|
|
183
183
|
logger.success(f"File saved to {out_file}")
|
|
184
|
-
except Exception as e:
|
|
184
|
+
except Exception as e:
|
|
185
185
|
self._log_error(e)
|
|
186
186
|
|
|
187
187
|
def _get_out_file_name(self, font: Font) -> Path:
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
[build-system]
|
|
2
|
-
requires = ["uv_build>=0.9.17"]
|
|
3
|
-
build-backend = "uv_build"
|
|
4
|
-
|
|
5
|
-
[project]
|
|
6
|
-
name = "foundrytools-cli"
|
|
7
|
-
version = "2.1.0"
|
|
8
|
-
description = "A set of command line tools to inspect, manipulate and convert font files"
|
|
9
|
-
readme = "README.md"
|
|
10
|
-
license = "MIT"
|
|
11
|
-
requires-python = ">=3.10"
|
|
12
|
-
authors = [
|
|
13
|
-
{ name = "Cesare Gilento", email = "ftcli@proton.me" },
|
|
14
|
-
]
|
|
15
|
-
|
|
16
|
-
classifiers = [
|
|
17
|
-
"Development Status :: 5 - Production/Stable",
|
|
18
|
-
"Intended Audience :: Developers",
|
|
19
|
-
"Intended Audience :: End Users/Desktop",
|
|
20
|
-
"Natural Language :: English",
|
|
21
|
-
"Operating System :: OS Independent",
|
|
22
|
-
"Programming Language :: Python :: 3",
|
|
23
|
-
"Programming Language :: Python :: 3.10",
|
|
24
|
-
"Programming Language :: Python :: 3.11",
|
|
25
|
-
"Programming Language :: Python :: 3.12",
|
|
26
|
-
"Programming Language :: Python :: 3.13",
|
|
27
|
-
"Programming Language :: Python :: 3.14",
|
|
28
|
-
"License :: OSI Approved :: MIT License",
|
|
29
|
-
"Topic :: Text Processing :: Fonts",
|
|
30
|
-
]
|
|
31
|
-
|
|
32
|
-
dependencies = [
|
|
33
|
-
"afdko>=4.0.3",
|
|
34
|
-
"click>=8.3.1",
|
|
35
|
-
"foundrytools>=0.1.6",
|
|
36
|
-
"loguru>=0.7.3",
|
|
37
|
-
"pathvalidate>=3.3.1",
|
|
38
|
-
"rich>=14.3.0",
|
|
39
|
-
"ufolib2>=0.18.1",
|
|
40
|
-
"win32-setctime>=1.2.0; sys_platform >= 'win32'",
|
|
41
|
-
]
|
|
42
|
-
|
|
43
|
-
[dependency-groups]
|
|
44
|
-
dev = [
|
|
45
|
-
"bump-my-version>=1.2.6",
|
|
46
|
-
"mypy>=1.19.1",
|
|
47
|
-
"pre-commit>=4.5.1",
|
|
48
|
-
"pylint>=4.0.4",
|
|
49
|
-
]
|
|
50
|
-
docs = [
|
|
51
|
-
"sphinx-click>=6.2.0",
|
|
52
|
-
"sphinx-rtd-theme>=3.1.0",
|
|
53
|
-
]
|
|
54
|
-
|
|
55
|
-
[project.scripts]
|
|
56
|
-
ftcli = "foundrytools_cli.__main__:cli"
|
|
57
|
-
|
|
58
|
-
[project.urls]
|
|
59
|
-
Homepage = "https://github.com/ftCLI/FoundryTools-CLI"
|
|
60
|
-
|
|
61
|
-
[tool.bumpversion]
|
|
62
|
-
current_version = "2.1.0"
|
|
63
|
-
commit = false
|
|
64
|
-
tag = false
|
|
65
|
-
|
|
66
|
-
[[tool.bumpversion.files]]
|
|
67
|
-
filename = "src/foundrytools_cli/__init__.py"
|
|
68
|
-
search = '__version__ = "{current_version}"'
|
|
69
|
-
replace = '__version__ = "{new_version}"'
|
|
70
|
-
|
|
71
|
-
[[tool.bumpversion.files]]
|
|
72
|
-
filename = "docs/source/conf.py"
|
|
73
|
-
search = 'release = "{current_version}"'
|
|
74
|
-
replace = 'release = "{new_version}"'
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/converter/cli.py
RENAMED
|
File without changes
|
|
File without changes
|
{foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/fix/__init__.py
RENAMED
|
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
|
|
File without changes
|
{foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/print/__init__.py
RENAMED
|
File without changes
|
{foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/print/cli.py
RENAMED
|
File without changes
|
{foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/print/font_info.py
RENAMED
|
File without changes
|
{foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/print/font_names.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{foundrytools_cli-2.1.0 → foundrytools_cli-2.2.0}/src/foundrytools_cli/commands/utils/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|