Skip to content

Commit 087bf95

Browse files
committed
feat: add no-dev
1 parent ed89437 commit 087bf95

File tree

2 files changed

+34
-5
lines changed

2 files changed

+34
-5
lines changed

src/sync_uv_pre_commit/cli.py

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,11 @@ def create_version_pattern(name: str) -> re.Pattern[str]:
6262

6363
@lru_cache
6464
def resolve_pyproject(
65+
*,
6566
pyproject: str | PathLike[str],
6667
temp_directory: str | PathLike[str],
6768
extras: tuple[str, ...],
69+
no_dev: bool,
6870
) -> Path:
6971
origin_pyproject, temp_directory = Path(pyproject), Path(temp_directory)
7072
new_pyproject = temp_directory / "pyproject.toml"
@@ -75,7 +77,11 @@ def resolve_pyproject(
7577

7678
command = ["uv", "export", "--no-hashes", f"--output-file={requirements!s}"]
7779
extras = tuple(extra for extra in extras if extra in valid_extras)
78-
command = [*command, *chain.from_iterable(("--extra", extra) for extra in extras)]
80+
if extras:
81+
command.extend(chain.from_iterable(("--extra", extra) for extra in extras))
82+
if no_dev:
83+
command.append("--no-dev")
84+
7985
logger.info("Running command:\n %s", " ".join(command))
8086

8187
uv_process = subprocess.run( # noqa: S603
@@ -114,12 +120,16 @@ def find_version(name: str, lock_file: str | PathLike[str]) -> str:
114120

115121

116122
def find_version_in_pyproject(
123+
*,
117124
name: str,
118125
pyproject: str | PathLike[str],
119126
temp_directory: str | PathLike[str],
120127
extras: tuple[str, ...],
128+
no_dev: bool,
121129
) -> str:
122-
lock_file = resolve_pyproject(pyproject, temp_directory, extras)
130+
lock_file = resolve_pyproject(
131+
pyproject=pyproject, temp_directory=temp_directory, extras=extras, no_dev=no_dev
132+
)
123133
return find_version(name, lock_file)
124134

125135

@@ -159,10 +169,12 @@ def resolve_arg(arg_string: str) -> Args:
159169

160170

161171
def process(
172+
*,
162173
args: list[Args],
163174
pyproject: str | PathLike[str],
164175
pre_commit: str | PathLike[str],
165176
extras: tuple[str, ...],
177+
no_dev: bool,
166178
) -> None:
167179
if args:
168180
logger.info("Processing args:")
@@ -176,7 +188,11 @@ def process(
176188
with tempfile.TemporaryDirectory() as temp_directory:
177189
for index, arg in enumerate(args):
178190
version = find_version_in_pyproject(
179-
arg["name"], pyproject, temp_directory, extras
191+
name=arg["name"],
192+
pyproject=pyproject,
193+
temp_directory=temp_directory,
194+
extras=extras,
195+
no_dev=no_dev,
180196
)
181197
version = f"{arg.get('prefix', '')}{version}{arg.get('suffix', '')}"
182198

@@ -244,19 +260,31 @@ def _main() -> None:
244260
)
245261
parser.add_argument("-l", "--log-level", type=str, default="INFO")
246262
parser.add_argument("-e", "--extra", action="append", default=[])
263+
parser.add_argument("--no-dev", action="store_true", default=False)
247264
parser.add_argument("dummy", nargs="*")
248265

249266
args = parser.parse_args()
250267
args_string: list[str] = args.args
251268
version_args = [resolve_arg(arg) for arg in args_string]
252-
pyproject, pre_commit, extras = args.pyproject, args.pre_commit, args.extra
269+
pyproject, pre_commit, extras, no_dev = (
270+
args.pyproject,
271+
args.pre_commit,
272+
args.extra,
273+
args.no_dev,
274+
)
253275
logger.setLevel(args.log_level)
254276

255277
pre_commit_version = version("pre-commit")
256278
logger.debug("python version: %s", sys.version)
257279
logger.debug("pre-commit version: %s", pre_commit_version)
258280

259-
process(version_args, pyproject, pre_commit, tuple(extras))
281+
process(
282+
args=version_args,
283+
pyproject=pyproject,
284+
pre_commit=pre_commit,
285+
extras=tuple(extras),
286+
no_dev=no_dev,
287+
)
260288

261289

262290
def main() -> None:

src/sync_uv_pre_commit/toml.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
__all__ = []
1313

1414

15+
@lru_cache
1516
def find_valid_extras(pyproject: str | PathLike[str] | dict[str, Any]) -> set[str]:
1617
if not isinstance(pyproject, dict):
1718
pyproject = read_pyproject(pyproject)

0 commit comments

Comments
 (0)