batchfetch 1.2.1__tar.gz → 1.2.3__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.
- {batchfetch-1.2.1/batchfetch.egg-info → batchfetch-1.2.3}/PKG-INFO +1 -1
- {batchfetch-1.2.1 → batchfetch-1.2.3}/batchfetch/batchfetch_cli.py +5 -0
- {batchfetch-1.2.1 → batchfetch-1.2.3}/batchfetch/batchfetch_git.py +26 -19
- {batchfetch-1.2.1 → batchfetch-1.2.3/batchfetch.egg-info}/PKG-INFO +1 -1
- {batchfetch-1.2.1 → batchfetch-1.2.3}/batchfetch.egg-info/SOURCES.txt +1 -6
- {batchfetch-1.2.1 → batchfetch-1.2.3}/setup.py +1 -1
- batchfetch-1.2.1/.gitignore +0 -138
- batchfetch-1.2.1/run_tests.sh +0 -23
- batchfetch-1.2.1/tests/data/test-md5sum.txt +0 -3
- batchfetch-1.2.1/tests/data/test-run_simple.sh +0 -5
- batchfetch-1.2.1/tests/test_helpers.py +0 -56
- {batchfetch-1.2.1 → batchfetch-1.2.3}/LICENSE +0 -0
- {batchfetch-1.2.1 → batchfetch-1.2.3}/README.md +0 -0
- {batchfetch-1.2.1 → batchfetch-1.2.3}/batchfetch/__init__.py +0 -0
- {batchfetch-1.2.1 → batchfetch-1.2.3}/batchfetch/batchfetch_base.py +0 -0
- {batchfetch-1.2.1 → batchfetch-1.2.3}/batchfetch/helpers.py +0 -0
- {batchfetch-1.2.1 → batchfetch-1.2.3}/batchfetch.egg-info/dependency_links.txt +0 -0
- {batchfetch-1.2.1 → batchfetch-1.2.3}/batchfetch.egg-info/entry_points.txt +0 -0
- {batchfetch-1.2.1 → batchfetch-1.2.3}/batchfetch.egg-info/requires.txt +0 -0
- {batchfetch-1.2.1 → batchfetch-1.2.3}/batchfetch.egg-info/top_level.txt +0 -0
- {batchfetch-1.2.1 → batchfetch-1.2.3}/setup.cfg +0 -0
|
@@ -92,6 +92,11 @@ class BatchFetchCli:
|
|
|
92
92
|
try:
|
|
93
93
|
with open(path, "r", encoding="utf-8") as fhandler:
|
|
94
94
|
yaml_dict = yaml.load(fhandler, Loader=yaml.FullLoader)
|
|
95
|
+
if not isinstance(yaml_dict, dict):
|
|
96
|
+
print(f"Error: Invalid format: {yaml_dict}.",
|
|
97
|
+
file=sys.stderr)
|
|
98
|
+
sys.exit(1)
|
|
99
|
+
|
|
95
100
|
self._loads(dict(yaml_dict))
|
|
96
101
|
except OSError as err:
|
|
97
102
|
raise BatchFetchError(str(err)) from err
|
|
@@ -140,11 +140,16 @@ class BatchFetchGit(TaskBatchFetch):
|
|
|
140
140
|
|
|
141
141
|
self._repo_reset()
|
|
142
142
|
|
|
143
|
-
|
|
143
|
+
git_fetch_done = self._repo_fetch()
|
|
144
|
+
|
|
144
145
|
git_branch_changed = False
|
|
145
146
|
git_branch_changed = self._repo_fix_branch()
|
|
146
147
|
|
|
147
|
-
|
|
148
|
+
git_merge_done = False
|
|
149
|
+
if git_fetch_done:
|
|
150
|
+
git_merge_done = self._git_merge()
|
|
151
|
+
|
|
152
|
+
if (git_fetch_done and git_merge_done) or git_branch_changed:
|
|
148
153
|
self._repo_update_submodules()
|
|
149
154
|
|
|
150
155
|
if self.get_changed():
|
|
@@ -186,7 +191,7 @@ class BatchFetchGit(TaskBatchFetch):
|
|
|
186
191
|
env=self.env,
|
|
187
192
|
cwd=self.git_local_dir,
|
|
188
193
|
)
|
|
189
|
-
self.current_branch = stdout[0]
|
|
194
|
+
self.current_branch = stdout[0]
|
|
190
195
|
self.is_branch = True
|
|
191
196
|
except (IndexError, subprocess.CalledProcessError):
|
|
192
197
|
# Not a symbolic ref
|
|
@@ -234,20 +239,18 @@ class BatchFetchGit(TaskBatchFetch):
|
|
|
234
239
|
cmd = ["git", "reset", "--hard", "HEAD"]
|
|
235
240
|
self._run(cmd, cwd=str(self.git_local_dir), env=self.env)
|
|
236
241
|
|
|
237
|
-
def
|
|
238
|
-
git_merge = False
|
|
239
|
-
|
|
242
|
+
def _repo_fetch(self):
|
|
240
243
|
# Merge
|
|
241
|
-
|
|
244
|
+
do_git_fetch = self["git_pull"]
|
|
242
245
|
if self.is_branch:
|
|
243
|
-
|
|
246
|
+
do_git_fetch = True
|
|
244
247
|
elif not self["revision"]:
|
|
245
|
-
|
|
248
|
+
do_git_fetch = True
|
|
246
249
|
self.add_output(self.indent_spaces +
|
|
247
250
|
"[INFO] Git fetch origin reason: " +
|
|
248
251
|
"No 'revision:' specified\n")
|
|
249
252
|
else:
|
|
250
|
-
|
|
253
|
+
do_git_fetch = False
|
|
251
254
|
commit_ref = None
|
|
252
255
|
|
|
253
256
|
try:
|
|
@@ -259,14 +262,14 @@ class BatchFetchGit(TaskBatchFetch):
|
|
|
259
262
|
pass
|
|
260
263
|
|
|
261
264
|
if not commit_ref and not self.is_branch:
|
|
262
|
-
|
|
265
|
+
do_git_fetch = True
|
|
263
266
|
self.add_output(
|
|
264
267
|
self.indent_spaces +
|
|
265
268
|
"[INFO] Git fetch origin reason: " +
|
|
266
269
|
f"The revision does not exist: {self['revision']}" +
|
|
267
270
|
"\n")
|
|
268
271
|
|
|
269
|
-
if not
|
|
272
|
+
if not do_git_fetch:
|
|
270
273
|
try:
|
|
271
274
|
# Check if the branch is a tag or a branch
|
|
272
275
|
cmd = ["git", "show-ref", "--verify", "--quiet",
|
|
@@ -274,14 +277,14 @@ class BatchFetchGit(TaskBatchFetch):
|
|
|
274
277
|
run_simple(cmd, env=self.env, cwd=self.git_local_dir)
|
|
275
278
|
self.add_output(
|
|
276
279
|
self.indent_spaces +
|
|
277
|
-
"[INFO] Git fetch origin reason:" +
|
|
280
|
+
"[INFO] Git fetch origin reason: " +
|
|
278
281
|
f"{self['revision']} is a branch, not a tag" +
|
|
279
282
|
"\n")
|
|
280
|
-
|
|
283
|
+
do_git_fetch = True
|
|
281
284
|
except subprocess.CalledProcessError:
|
|
282
285
|
pass
|
|
283
286
|
|
|
284
|
-
if not
|
|
287
|
+
if not do_git_fetch and commit_ref:
|
|
285
288
|
# This is to check if a tag has been changed
|
|
286
289
|
try:
|
|
287
290
|
# If the tag is annotated, it points to a tag object,
|
|
@@ -304,14 +307,18 @@ class BatchFetchGit(TaskBatchFetch):
|
|
|
304
307
|
f"Commit ref head '{commit_ref_head}' != "
|
|
305
308
|
f"commit ref '{commit_ref_head}'"
|
|
306
309
|
"\n")
|
|
307
|
-
|
|
310
|
+
do_git_fetch = True
|
|
308
311
|
|
|
309
|
-
if not
|
|
310
|
-
self.add_output(self.indent_spaces + "[INFO] git
|
|
311
|
-
return
|
|
312
|
+
if not do_git_fetch:
|
|
313
|
+
self.add_output(self.indent_spaces + "[INFO] git fetch ignored\n")
|
|
314
|
+
return False
|
|
312
315
|
|
|
313
316
|
# Fetch
|
|
314
317
|
self._git_fetch_origin()
|
|
318
|
+
return True
|
|
319
|
+
|
|
320
|
+
def _git_merge(self):
|
|
321
|
+
git_merge = False
|
|
315
322
|
|
|
316
323
|
# Merge
|
|
317
324
|
real_branch = self._git_is_local_branch("HEAD")
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
.gitignore
|
|
2
1
|
LICENSE
|
|
3
2
|
README.md
|
|
4
|
-
run_tests.sh
|
|
5
3
|
setup.py
|
|
6
4
|
batchfetch/__init__.py
|
|
7
5
|
batchfetch/batchfetch_base.py
|
|
@@ -13,7 +11,4 @@ batchfetch.egg-info/SOURCES.txt
|
|
|
13
11
|
batchfetch.egg-info/dependency_links.txt
|
|
14
12
|
batchfetch.egg-info/entry_points.txt
|
|
15
13
|
batchfetch.egg-info/requires.txt
|
|
16
|
-
batchfetch.egg-info/top_level.txt
|
|
17
|
-
tests/test_helpers.py
|
|
18
|
-
tests/data/test-md5sum.txt
|
|
19
|
-
tests/data/test-run_simple.sh
|
|
14
|
+
batchfetch.egg-info/top_level.txt
|
batchfetch-1.2.1/.gitignore
DELETED
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
# Byte-compiled / optimized / DLL files
|
|
2
|
-
__pycache__/
|
|
3
|
-
*.py[cod]
|
|
4
|
-
*$py.class
|
|
5
|
-
|
|
6
|
-
# C extensions
|
|
7
|
-
*.so
|
|
8
|
-
|
|
9
|
-
# Distribution / packaging
|
|
10
|
-
.Python
|
|
11
|
-
build/
|
|
12
|
-
develop-eggs/
|
|
13
|
-
dist/
|
|
14
|
-
downloads/
|
|
15
|
-
eggs/
|
|
16
|
-
.eggs/
|
|
17
|
-
lib/
|
|
18
|
-
lib64/
|
|
19
|
-
parts/
|
|
20
|
-
sdist/
|
|
21
|
-
var/
|
|
22
|
-
wheels/
|
|
23
|
-
share/python-wheels/
|
|
24
|
-
*.egg-info/
|
|
25
|
-
.installed.cfg
|
|
26
|
-
*.egg
|
|
27
|
-
MANIFEST
|
|
28
|
-
|
|
29
|
-
# PyInstaller
|
|
30
|
-
# Usually these files are written by a python script from a template
|
|
31
|
-
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
32
|
-
*.manifest
|
|
33
|
-
*.spec
|
|
34
|
-
|
|
35
|
-
# Installer logs
|
|
36
|
-
pip-log.txt
|
|
37
|
-
pip-delete-this-directory.txt
|
|
38
|
-
|
|
39
|
-
# Unit test / coverage reports
|
|
40
|
-
htmlcov/
|
|
41
|
-
.tox/
|
|
42
|
-
.nox/
|
|
43
|
-
.coverage
|
|
44
|
-
.coverage.*
|
|
45
|
-
.cache
|
|
46
|
-
nosetests.xml
|
|
47
|
-
coverage.xml
|
|
48
|
-
*.cover
|
|
49
|
-
*.py,cover
|
|
50
|
-
.hypothesis/
|
|
51
|
-
.pytest_cache/
|
|
52
|
-
cover/
|
|
53
|
-
|
|
54
|
-
# Translations
|
|
55
|
-
*.mo
|
|
56
|
-
*.pot
|
|
57
|
-
|
|
58
|
-
# Django stuff:
|
|
59
|
-
*.log
|
|
60
|
-
local_settings.py
|
|
61
|
-
db.sqlite3
|
|
62
|
-
db.sqlite3-journal
|
|
63
|
-
|
|
64
|
-
# Flask stuff:
|
|
65
|
-
instance/
|
|
66
|
-
.webassets-cache
|
|
67
|
-
|
|
68
|
-
# Scrapy stuff:
|
|
69
|
-
.scrapy
|
|
70
|
-
|
|
71
|
-
# Sphinx documentation
|
|
72
|
-
docs/_build/
|
|
73
|
-
|
|
74
|
-
# PyBuilder
|
|
75
|
-
.pybuilder/
|
|
76
|
-
target/
|
|
77
|
-
|
|
78
|
-
# Jupyter Notebook
|
|
79
|
-
.ipynb_checkpoints
|
|
80
|
-
|
|
81
|
-
# IPython
|
|
82
|
-
profile_default/
|
|
83
|
-
ipython_config.py
|
|
84
|
-
|
|
85
|
-
# pyenv
|
|
86
|
-
# For a library or package, you might want to ignore these files since the code is
|
|
87
|
-
# intended to run in multiple environments; otherwise, check them in:
|
|
88
|
-
# .python-version
|
|
89
|
-
|
|
90
|
-
# pipenv
|
|
91
|
-
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
|
92
|
-
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
|
93
|
-
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
|
94
|
-
# install all needed dependencies.
|
|
95
|
-
#Pipfile.lock
|
|
96
|
-
|
|
97
|
-
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
|
|
98
|
-
__pypackages__/
|
|
99
|
-
|
|
100
|
-
# Celery stuff
|
|
101
|
-
celerybeat-schedule
|
|
102
|
-
celerybeat.pid
|
|
103
|
-
|
|
104
|
-
# SageMath parsed files
|
|
105
|
-
*.sage.py
|
|
106
|
-
|
|
107
|
-
# Environments
|
|
108
|
-
.env
|
|
109
|
-
.venv
|
|
110
|
-
env/
|
|
111
|
-
venv/
|
|
112
|
-
ENV/
|
|
113
|
-
env.bak/
|
|
114
|
-
venv.bak/
|
|
115
|
-
|
|
116
|
-
# Spyder project settings
|
|
117
|
-
.spyderproject
|
|
118
|
-
.spyproject
|
|
119
|
-
|
|
120
|
-
# Rope project settings
|
|
121
|
-
.ropeproject
|
|
122
|
-
|
|
123
|
-
# mkdocs documentation
|
|
124
|
-
/site
|
|
125
|
-
|
|
126
|
-
# mypy
|
|
127
|
-
.mypy_cache/
|
|
128
|
-
.dmypy.json
|
|
129
|
-
dmypy.json
|
|
130
|
-
|
|
131
|
-
# Pyre type checker
|
|
132
|
-
.pyre/
|
|
133
|
-
|
|
134
|
-
# pytype static type analyzer
|
|
135
|
-
.pytype/
|
|
136
|
-
|
|
137
|
-
# Cython debug symbols
|
|
138
|
-
cython_debug/
|
batchfetch-1.2.1/run_tests.sh
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
#
|
|
3
|
-
# Copyright (C) 2024 James Cherti
|
|
4
|
-
# URL: https://github.com/jamescherti/batchfetch
|
|
5
|
-
#
|
|
6
|
-
# This program is free software: you can redistribute it and/or modify it under
|
|
7
|
-
# the terms of the GNU General Public License as published by the Free Software
|
|
8
|
-
# Foundation, either version 3 of the License, or (at your option) any later
|
|
9
|
-
# version.
|
|
10
|
-
#
|
|
11
|
-
# This program is distributed in the hope that it will be useful, but WITHOUT
|
|
12
|
-
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
13
|
-
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
14
|
-
#
|
|
15
|
-
# You should have received a copy of the GNU General Public License along with
|
|
16
|
-
# this program. If not, see <https://www.gnu.org/licenses/>.
|
|
17
|
-
#
|
|
18
|
-
cd "$(dirname "${BASH_SOURCE[0]}")"
|
|
19
|
-
export PYTHONPATH="$(pwd)"
|
|
20
|
-
exec pytest -v -v --cov=batchfetch --cov=tests \
|
|
21
|
-
--cov-report=term \
|
|
22
|
-
--cov-report=html:htmlcov \
|
|
23
|
-
tests/test_*py
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python
|
|
2
|
-
#
|
|
3
|
-
# Copyright (C) 2024 James Cherti
|
|
4
|
-
# URL: https://github.com/jamescherti/batchfetch
|
|
5
|
-
#
|
|
6
|
-
# This program is free software: you can redistribute it and/or modify it under
|
|
7
|
-
# the terms of the GNU General Public License as published by the Free Software
|
|
8
|
-
# Foundation, either version 3 of the License, or (at your option) any later
|
|
9
|
-
# version.
|
|
10
|
-
#
|
|
11
|
-
# This program is distributed in the hope that it will be useful, but WITHOUT
|
|
12
|
-
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
13
|
-
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
14
|
-
#
|
|
15
|
-
# You should have received a copy of the GNU General Public License along with
|
|
16
|
-
# this program. If not, see <https://www.gnu.org/licenses/>.
|
|
17
|
-
#
|
|
18
|
-
"""Unit tests."""
|
|
19
|
-
|
|
20
|
-
from pathlib import Path
|
|
21
|
-
|
|
22
|
-
from batchfetch import helpers
|
|
23
|
-
|
|
24
|
-
DATA_PATH = Path(".").joinpath("tests", "data").absolute()
|
|
25
|
-
SCRIPT_RUN_SIMPLE = DATA_PATH / "test-run_simple.sh"
|
|
26
|
-
TEST_MD5SUM_FILE = DATA_PATH / "test-md5sum.txt"
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
def test_md5sum():
|
|
30
|
-
md5sum = helpers.md5sum(TEST_MD5SUM_FILE)
|
|
31
|
-
assert md5sum == "f31e127edc87a6aa2eb01b7d94d2ec58"
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
def test_run_simple():
|
|
35
|
-
# Stdout
|
|
36
|
-
stdout_lines, stderr_lines = helpers.run_simple(str(SCRIPT_RUN_SIMPLE))
|
|
37
|
-
assert stdout_lines == ['Test 1.',
|
|
38
|
-
'Test 2.',
|
|
39
|
-
'Test 3.']
|
|
40
|
-
assert stderr_lines == ['Test 3.']
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
def test_indent_raw_output():
|
|
44
|
-
list_str = \
|
|
45
|
-
helpers.indent_raw_output(["Test 1.", "Test 2."])
|
|
46
|
-
|
|
47
|
-
assert list_str == [" Test 1.", " Test 2."]
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
def test_run_indent():
|
|
51
|
-
stdout_lines, stderr_lines = helpers.run_indent(str(SCRIPT_RUN_SIMPLE))
|
|
52
|
-
assert stdout_lines == [f' [RUN] {str(SCRIPT_RUN_SIMPLE)}',
|
|
53
|
-
' Test 1.',
|
|
54
|
-
' Test 2.',
|
|
55
|
-
' Test 3.']
|
|
56
|
-
assert stderr_lines == [' Test 3.']
|
|
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
|