This repository has been archived by the owner on Dec 18, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 6
/
poetry.py
53 lines (39 loc) · 1.48 KB
/
poetry.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import logging
from typing import List, Optional
from packaging import version as version_
from poetryup.core.cmd import cmd_run
class Poetry:
"""A helper class to run poetry commands"""
@property
def version(self) -> str:
"""Return the installed poetry version"""
output = cmd_run(["poetry", "--version"], capture_output=True)
# output is: 'Poetry (version x.y.z)'
return output.rsplit(" ", 1).pop().strip().replace(")", "")
def show(self) -> str:
"""Run poetry show command
Returns:
The output from the poetry show command
"""
return cmd_run(["poetry", "show", "--tree"], capture_output=True)
def update(self) -> None:
"""Run poetry update command"""
cmd_run(["poetry", "update"])
def add(
self,
packages: List[str],
group: Optional[str],
) -> None:
"""Run poetry add command
Args:
package: The package(s) to add
group: The group the package(s) should be added to
"""
if group is None or group == "default":
cmd_run(["poetry", "add", *packages])
elif group == "dev" and self.version < version_.parse("1.2.0"):
cmd_run(["poetry", "add", *packages, f"--{group}"])
elif self.version >= version_.parse("1.2.0"):
cmd_run(["poetry", "add", *packages, "--group", group])
else:
logging.warning(f"Couldn't add package(s) '{packages}'")