Skip to content

Commit 390cf44

Browse files
authored
Add helper task to update dependencies (#10447)
When there is the need to add a new dependency, we have to update each file one by one, instead of doing that, I'm creating an invoke task.
1 parent 038e1b6 commit 390cf44

File tree

2 files changed

+51
-29
lines changed

2 files changed

+51
-29
lines changed

.github/workflows/pip-tools.yaml

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -27,25 +27,15 @@ jobs:
2727
- uses: actions/setup-python@v4
2828
with:
2929
python-version: "3.10"
30-
- name: Install test dependencies
31-
run: python -m pip install -U pip-tools
32-
33-
- name: Run pip-compile on requirements/pip.in
34-
run: pip-compile --upgrade --resolver=backtracking --output-file=requirements/pip.txt requirements/pip.in
35-
36-
- name: Run pip-compile on requirements/docker.in
37-
run: pip-compile --upgrade --resolver=backtracking --output-file=requirements/docker.txt requirements/docker.in
38-
39-
- name: Run pip-compile on requirements/testing.in
40-
run: pip-compile --upgrade --resolver=backtracking --output-file=requirements/testing.txt requirements/testing.in
41-
42-
- name: Run pip-compile on requirements/docs.in
43-
run: pip-compile --upgrade --resolver=backtracking --output-file=requirements/docs.txt requirements/docs.in
4430

4531
- name: Install "pg_config" requirement
4632
run: sudo apt-get install libpq-dev
47-
- name: Run pip-compile on requirements/deploy.in
48-
run: pip-compile --upgrade --resolver=backtracking --output-file=requirements/deploy.txt requirements/deploy.in
33+
34+
- name: Install piptools and invoke
35+
run: python -m pip install -U pip-tools invoke
36+
37+
- name: Update dependencies from requirements/*.txt
38+
run: invoke requirements.update
4939

5040
- name: Create Pull Request
5141
uses: peter-evans/create-pull-request@v5

tasks.py

Lines changed: 45 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,41 +16,73 @@
1616
Collection(
1717
common.tasks.setup_labels,
1818
),
19-
name='github',
19+
name="github",
2020
)
2121

2222
namespace.add_collection(
2323
Collection.from_module(
2424
common.dockerfiles.tasks,
2525
config={
26-
'container_prefix': 'community',
26+
"container_prefix": "community",
2727
},
2828
),
29-
name='docker',
29+
name="docker",
3030
)
3131

32+
3233
@task
3334
def docs(ctx, regenerate_config=False, push=False):
34-
"""Pull and push translations to Transifex for our docs"""
35-
with ctx.cd(os.path.join(ROOT_PATH, 'docs')):
35+
"""Pull and push translations to Transifex for our docs."""
36+
with ctx.cd(os.path.join(ROOT_PATH, "docs")):
3637
# Update our translations
37-
ctx.run('tx pull -a')
38+
ctx.run("tx pull -a")
3839
# Update resources
3940
if regenerate_config:
40-
os.remove(os.path.join(ROOT_PATH, 'docs', '.tx', 'config'))
41-
ctx.run('sphinx-intl create-txconfig')
42-
ctx.run('sphinx-intl update-txconfig-resources --transifex-project-name readthedocs-docs')
41+
os.remove(os.path.join(ROOT_PATH, "docs", ".tx", "config"))
42+
ctx.run("sphinx-intl create-txconfig")
43+
ctx.run(
44+
"sphinx-intl update-txconfig-resources --transifex-project-name readthedocs-docs"
45+
)
4346
# Rebuild
44-
ctx.run('sphinx-intl build')
45-
ctx.run('make gettext')
47+
ctx.run("sphinx-intl build")
48+
ctx.run("make gettext")
4649
# Push new ones
4750
if push:
48-
ctx.run('tx push -s')
51+
ctx.run("tx push -s")
4952

5053

5154
namespace.add_collection(
5255
Collection(
5356
docs,
5457
),
55-
name='l10n',
58+
name="l10n",
59+
)
60+
61+
62+
@task(
63+
help={
64+
"package": "If specified, only update this package",
65+
}
66+
)
67+
def update(ctx, package=None):
68+
"""Update Python dependencies from requirements/*.txt."""
69+
cmd = ["pip-compile", "--resolver=backtracking"]
70+
if package:
71+
cmd.extend(["--upgrade-package", package])
72+
else:
73+
cmd.append("--upgrade")
74+
files = [
75+
"requirements/pip",
76+
"requirements/docker",
77+
"requirements/testing",
78+
"requirements/docs",
79+
"requirements/deploy",
80+
]
81+
for file in files:
82+
ctx.run(" ".join(cmd) + f" --output-file {file}.txt {file}.in")
83+
84+
85+
namespace.add_collection(
86+
Collection(update),
87+
name="requirements",
5688
)

0 commit comments

Comments
 (0)