lennybot 1.0.31__py3-none-any.whl → 1.0.32__py3-none-any.whl

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.
lennybot/__init__.py CHANGED
@@ -91,6 +91,6 @@ def main() -> int:
91
91
  result = app.apply(plan)
92
92
  app.ci_finalize(plan, result)
93
93
  else:
94
- logging.error("Unexpected Arguments", args)
94
+ logging.error("Unexpected Arguments: %s", args)
95
95
  return 1
96
96
  return 0
@@ -1,6 +1,7 @@
1
- import requests
2
1
  import logging
3
2
 
3
+ import requests
4
+
4
5
  from ..config.config import LennyBotActionConfig
5
6
  from .iaction import IAction
6
7
 
@@ -1,7 +1,7 @@
1
- from types import SimpleNamespace
2
-
3
1
  import json
4
- from jsonpath_ng import parse, jsonpath
2
+
3
+ from jsonpath_ng import parse
4
+
5
5
  from ..config.config import LennyBotActionConfig
6
6
  from .iaction import IAction
7
7
 
@@ -1,5 +1,4 @@
1
1
  from ..config.config import LennyBotConfig
2
-
3
2
  from .docker_image_available import DockerImageAvailableCheck
4
3
  from .icheck import ICheck
5
4
 
@@ -5,7 +5,7 @@ from urllib.parse import urlencode
5
5
 
6
6
  import requests
7
7
 
8
- from ..config.config import LennyBotCheckConfig, LennyBotConfigContainerConfig, LennyBotConfigContainerRegistry
8
+ from ..config.config import LennyBotCheckConfig, LennyBotConfigContainerConfig
9
9
  from .icheck import ICheck
10
10
 
11
11
  PATTERN = r"(?:([\-\_\.\w]+)$)|(?:([\-\_\.\w]+)/([\-\_\.\w]+)$)|(?:([\-\.A-z0-9]+)/([\-\_\.\w]+)/([\-\_\.\w]+)$)|(?:([\-\.A-z0-9]+)/([\-\_\.\w]+)/([\-\_\.\w]+)/([\-\_\.\w]+)$)"
@@ -34,6 +34,7 @@ class WwwAuthenticateHeader:
34
34
 
35
35
 
36
36
  class DockerImageAvailableCheck(ICheck):
37
+ # pylint: disable=too-many-positional-arguments
37
38
  def __init__(
38
39
  self,
39
40
  application_name,
lennybot/config/config.py CHANGED
@@ -1,6 +1,6 @@
1
1
  import logging
2
2
  import os
3
- from typing import Any, Dict, List, Optional
3
+ from typing import Dict, List, Optional
4
4
 
5
5
  import yaml
6
6
 
@@ -67,6 +67,7 @@ CONFIGURATION_OPTIONS = {
67
67
  "required": True,
68
68
  "attribute": "_repository",
69
69
  },
70
+ "ltsOnly": {"type": "bool", "required": False, "attribute": "_lts_only"},
70
71
  "regex": {"type": "string", "attribute": "_regex"},
71
72
  },
72
73
  },
@@ -92,6 +93,7 @@ CONFIGURATION_OPTIONS = {
92
93
  "target": {"type": "string", "attribute": "_target"},
93
94
  "targetFile": {"type": "string", "attribute": "_target_file"},
94
95
  "yamlPath": {"type": "string", "attribute": "_yaml_path"},
96
+ "jsonPath": {"type": "string", "attribute": "_json_path"},
95
97
  "valuePattern": {"type": "string", "attribute": "_value_pattern"},
96
98
  },
97
99
  },
@@ -105,6 +107,8 @@ class LennyBotSourceConfig:
105
107
  self._type = None
106
108
  self._repository = None
107
109
  self._regex = None
110
+ self._source_url = None
111
+ self._lts_only = None
108
112
 
109
113
  @property
110
114
  def type(self) -> str:
@@ -118,6 +122,18 @@ class LennyBotSourceConfig:
118
122
  def regex(self) -> str:
119
123
  return str(self._regex)
120
124
 
125
+ @property
126
+ def source_url(self) -> str:
127
+ return str(self._source_url)
128
+
129
+ @property
130
+ def lts_only(self) -> bool:
131
+ return bool(self._lts_only)
132
+
133
+ @lts_only.setter
134
+ def lts_only(self, value: bool) -> None:
135
+ self._lts_only = value
136
+
121
137
 
122
138
  class LennyBotCheckConfig:
123
139
  def __init__(self) -> None:
lennybot/lennybot.py CHANGED
@@ -47,7 +47,7 @@ class LennyBot:
47
47
  pickle.dump(plan, file_ptr)
48
48
 
49
49
  def ci_setup(self):
50
- self._log.debug(f"Setup CI")
50
+ self._log.debug("Setup CI")
51
51
  now = datetime.now().strftime("%Y%m%d%H%M%S")
52
52
  self._branch_name = f"{self._config.github_pr.branch_prefix}"
53
53
  if not self._branch_name.endswith("-"):
@@ -58,14 +58,14 @@ class LennyBot:
58
58
  if result != 0:
59
59
  self._log.error("Unexpected return code from git config")
60
60
  self._repo = Repo("./", odbt=GitDB) # type: ignore
61
- self._log.debug(f"Initialized repository")
61
+ self._log.debug("Initialized repository")
62
62
  head = self._repo.create_head(self._branch_name)
63
- self._log.debug(f"Created Head")
63
+ self._log.debug("Created Head")
64
64
  head.checkout()
65
65
  self._log.info(f"Working branch is {self._branch_name}")
66
66
 
67
67
  def ci_finalize(self, plan: LennyBotPlan, result):
68
- self._log.debug(f"Finalize CI")
68
+ self._log.debug("Finalize CI")
69
69
  if self._repo is None:
70
70
  raise Exception("Repository is non, ci_setup was not called")
71
71
  if not self._repo.index.diff(None) and not self._repo.untracked_files:
lennybot/model/plan.py CHANGED
@@ -1,4 +1,4 @@
1
- from typing import Any, List
1
+ from typing import List
2
2
 
3
3
  from ..actions.iaction import IAction
4
4
  from ..model.state import LennyBotState
lennybot/service/apply.py CHANGED
@@ -1,5 +1,4 @@
1
1
  import logging
2
- from typing import List
3
2
 
4
3
  from ..model.plan import LennyBotPlan
5
4
 
lennybot/service/plan.py CHANGED
@@ -1,9 +1,8 @@
1
1
  import logging
2
2
  from typing import List
3
3
 
4
- from ..check import create_check
5
-
6
4
  from ..actions import IAction, create_action
5
+ from ..check import create_check
7
6
  from ..config import LennyBotAppConfig, LennyBotConfig
8
7
  from ..helper import semver_2_vc
9
8
  from ..model import LennyBotPlan, LennyBotState
@@ -2,6 +2,7 @@ from ...config import LennyBotSourceConfig
2
2
  from .isource import ISource
3
3
  from .source_github import GithubSource
4
4
  from .source_github_query import GithubQuerySource
5
+ from .source_nodejs import NodeJSVersionSource
5
6
 
6
7
 
7
8
  def create_source(name, config: LennyBotSourceConfig, github) -> ISource:
@@ -10,4 +11,6 @@ def create_source(name, config: LennyBotSourceConfig, github) -> ISource:
10
11
  return GithubSource(name, config, github)
11
12
  if source_type == "github-query":
12
13
  return GithubQuerySource(name, config, github)
14
+ if source_type == "nodejs-version":
15
+ return NodeJSVersionSource(name, config)
13
16
  raise Exception(f"Unknown Source Type: {source_type}")
@@ -1,7 +1,5 @@
1
1
  import re
2
2
 
3
- import requests
4
-
5
3
  from ...config import LennyBotSourceConfig
6
4
  from ..github import GitHubService
7
5
  from .isource import ISource
@@ -0,0 +1,57 @@
1
+ from typing import Any
2
+
3
+ import requests
4
+
5
+ from ...config import LennyBotSourceConfig
6
+ from .isource import ISource
7
+
8
+ NODEJS_ORG_VERSIONS_URL = "https://nodejs.org/dist/index.json"
9
+
10
+
11
+ class NodeJSVersionNotFoundException(Exception):
12
+ def __init__(self, data: Any, *args: object) -> None:
13
+ super().__init__(*args)
14
+ self._data = data
15
+
16
+
17
+ class NodeJSFormatException(Exception):
18
+ def __init__(self, *args: object) -> None:
19
+ super().__init__(*args)
20
+
21
+
22
+ class NodeJSVersionSource(ISource):
23
+ def __init__(self, name, config: LennyBotSourceConfig) -> None:
24
+ self._name = name
25
+ self._lts_only = config.lts_only
26
+ self._source_url = config.source_url
27
+
28
+ @property
29
+ def application(self) -> str:
30
+ return self._name
31
+
32
+ def latest_version(self) -> str:
33
+ headers = {"user-agent": "lennybot/0.0.1"}
34
+ response = requests.get(NODEJS_ORG_VERSIONS_URL, headers=headers)
35
+ response.raise_for_status()
36
+
37
+ releases = response.json()
38
+ sorted(releases, key=lambda x: x["version"])
39
+ for release in releases:
40
+ if not self._lts_only:
41
+ return self._extract_semver_version(release)
42
+ if release["lts"]:
43
+ return self._extract_semver_version(release)
44
+
45
+ raise NodeJSVersionNotFoundException(releases)
46
+
47
+ def _extract_semver_version(self, release) -> str:
48
+ if "version" not in release.keys():
49
+ raise NodeJSFormatException("Missing version field in release")
50
+ version = release["version"]
51
+
52
+ if not version.startswith("v"):
53
+ raise NodeJSFormatException("Invalid version format")
54
+
55
+ version = version.replace("v", "")
56
+
57
+ return version
@@ -0,0 +1 @@
1
+ 1.0.32
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lennybot
3
- Version: 1.0.31
3
+ Version: 1.0.32
4
4
  Summary: Automatic Updates for Kustomize Resources
5
5
  Home-page: http://github.com/raynigon/lennybot
6
6
  Author: Simon Schneider
@@ -0,0 +1,38 @@
1
+ lennybot/__init__.py,sha256=X5rwD93YiHnGhTfYKMx1r160P-wZAf2zVwYnPCP_YCg,2700
2
+ lennybot/__main__.py,sha256=iPpiz09xKqtAjrhONS99OYp6R2dQ6Anbhw1qPIN8ELo,80
3
+ lennybot/lennybot.py,sha256=oCVbCYqHOHuYq-ecN_p_0sWuBro0h0xyQ9oWBLctRNw,3786
4
+ lennybot/actions/__init__.py,sha256=3nR2DlivXdylqdTsccL9yvkHKqo0FO5JyczGvvKTXWI,1249
5
+ lennybot/actions/download_resources.py,sha256=uEpde1tz2IRjpN01CCZRPYVLcF9NaTjenpKF2ZBOMws,1768
6
+ lennybot/actions/iaction.py,sha256=KR2IkxSNYQc_bKsiKuJjxPr5VTj6dUfB7P1V_uA4yVI,428
7
+ lennybot/actions/remove_checksums.py,sha256=3GMo_6vDdeBYTG5AYlYHB0iEiqa9tMD4PfIOxOXZ3cE,1797
8
+ lennybot/actions/update_dockerfile.py,sha256=zkQEmKaIWpECmIwb27moonLJ_7Jr-BBnc6LMrGWo6Rk,1699
9
+ lennybot/actions/update_image_tag.py,sha256=1XQ40Ls47qDNDair2qyuRWtRYzSNV5tkHGC_yPKY40E,1689
10
+ lennybot/actions/update_json.py,sha256=vnfHC3gNo0-g0H7ssU8h69_Uqk_zB3o4GxO8ZAM8hJs,1697
11
+ lennybot/actions/update_yaml.py,sha256=o7qywAVvDgLcBCYCL4MirmYKduELNemkil7TLxon-BY,1919
12
+ lennybot/check/__init__.py,sha256=-lyJziRPmxBd7_OWBFwlzmp9x56CVryC_GkRPFuNYGY,485
13
+ lennybot/check/docker_image_available.py,sha256=ynrJkFoTTmvOjdNsAWMUpVqWuGygWb0tb2HAC2GWHro,8416
14
+ lennybot/check/icheck.py,sha256=sCMy1y_rrjVNrKh4vAiHH2QpiZIaUWaF06qkGnyC-N8,500
15
+ lennybot/config/__init__.py,sha256=L85iDCHQJ1zH6U3s8XJuY3bzpj_r8ZOLm_djv84pG-U,119
16
+ lennybot/config/config.py,sha256=WlT2eGY3-1aSIWHtWzZwnmF0JbaJN0VOCwITLqIhTik,12237
17
+ lennybot/helper/__init__.py,sha256=u_-EsBGjsXi5qXxEtFlMsRkh2ocxH17w3RfPH2j2QWU,221
18
+ lennybot/model/__init__.py,sha256=e_P6FXQooilrRoSKFdewkEUWL8x6k_45lH97yxL1rks,64
19
+ lennybot/model/plan.py,sha256=yCJt4Kr1bVFFXZQyK55iDoxhjiqhORRDX4kPLe8dKbw,1091
20
+ lennybot/model/state.py,sha256=UK9ALA3O5tGYQW5WCxQpybHeXrrwrQMgtvoZ4W_N9ok,1453
21
+ lennybot/service/__init__.py,sha256=jU103QJj6LHYY6-R7wYEdu1oiwRT0FfwLG4wgZYbMAo,96
22
+ lennybot/service/apply.py,sha256=8XdbyU4oMBobaPlrplGiyS6wPJoeqQsPmQsICqYM0N0,671
23
+ lennybot/service/github.py,sha256=6BHQiu30aRVKPe6Rc6O2ZWMPAvZTRW7rJZw_f9AhGLE,2973
24
+ lennybot/service/plan.py,sha256=rzEKoT9q4DMS9ic6ECS6xAhaSQNrEXKF_Ui373LSfYI,3434
25
+ lennybot/service/source/__init__.py,sha256=h7idvlw1BfeyBawAEDslnfgjIFHLhDWjcVKBJ9E13IY,639
26
+ lennybot/service/source/isource.py,sha256=s7T95siVMyKvCX2Ta4O7Jarc5BFAoYWfN74ocyLQiRM,253
27
+ lennybot/service/source/source_github.py,sha256=MMkg0bJZMWOTv6pr3tf5iLg7HnSe7lSc3iXWtrR8lXo,1056
28
+ lennybot/service/source/source_github_query.py,sha256=Dn764TBPw6PABhNa_A1JIGCfLoBhcvmScEBHHmCbEbI,1072
29
+ lennybot/service/source/source_nodejs.py,sha256=-N86ymk4LjtgBEI42SOe0WGCQvB4I8r9rhGtY0gmPnw,1711
30
+ lennybot-1.0.32.data/data/generic/README.md,sha256=80AiUnPW9CnHB3Iwa8qGggGQl2XXUe5tVNtAny-_1nk,9831
31
+ lennybot-1.0.32.data/data/generic/requirements.txt,sha256=ehp2P57fAPHl3tX8r5t3vyyPmW6tflMIKBBB0vKpvws,55
32
+ lennybot-1.0.32.data/data/generic/version.txt,sha256=lJlaFE-y4dFjsYr6jbTGb5uzUQ_dp_LO5e9G4R2TeMk,6
33
+ lennybot-1.0.32.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
34
+ lennybot-1.0.32.dist-info/METADATA,sha256=BtdWYvsMqcwag1DmyROAcKzV_tyf-Atih4VreGbQiys,11017
35
+ lennybot-1.0.32.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
36
+ lennybot-1.0.32.dist-info/entry_points.txt,sha256=TOjzBcHTJaiBU2arbNIMVr7_clYPAYjBZf5WqiZ8Uhw,43
37
+ lennybot-1.0.32.dist-info/top_level.txt,sha256=Hrq9FY_KliVyEMH7LEA9rhCumLFTpKOHdSaZqzfHxhw,9
38
+ lennybot-1.0.32.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (74.0.0)
2
+ Generator: setuptools (75.3.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1 +0,0 @@
1
- 1.0.31
@@ -1,37 +0,0 @@
1
- lennybot/__init__.py,sha256=xlswzbdsh3hj2f3UxHKUW7sZhQkS_7ONEtUIV9QJEy8,2696
2
- lennybot/__main__.py,sha256=iPpiz09xKqtAjrhONS99OYp6R2dQ6Anbhw1qPIN8ELo,80
3
- lennybot/lennybot.py,sha256=6Sm1cvzDkopeqtNEf1RsB-i9CttB94oj4UneZEm3oD4,3790
4
- lennybot/actions/__init__.py,sha256=3nR2DlivXdylqdTsccL9yvkHKqo0FO5JyczGvvKTXWI,1249
5
- lennybot/actions/download_resources.py,sha256=AuZoMdqxdl0VngHBMT6zc5phBnuaWjjGIwJyIBGod6w,1767
6
- lennybot/actions/iaction.py,sha256=KR2IkxSNYQc_bKsiKuJjxPr5VTj6dUfB7P1V_uA4yVI,428
7
- lennybot/actions/remove_checksums.py,sha256=3GMo_6vDdeBYTG5AYlYHB0iEiqa9tMD4PfIOxOXZ3cE,1797
8
- lennybot/actions/update_dockerfile.py,sha256=zkQEmKaIWpECmIwb27moonLJ_7Jr-BBnc6LMrGWo6Rk,1699
9
- lennybot/actions/update_image_tag.py,sha256=1XQ40Ls47qDNDair2qyuRWtRYzSNV5tkHGC_yPKY40E,1689
10
- lennybot/actions/update_json.py,sha256=_aRO7fxxFjck5I9Z_j4pPDvGDjMtCS_yjqn9G_sbcqc,1740
11
- lennybot/actions/update_yaml.py,sha256=o7qywAVvDgLcBCYCL4MirmYKduELNemkil7TLxon-BY,1919
12
- lennybot/check/__init__.py,sha256=BurwXJzk8CQcAiEZh7BeHum2N0WbRCTpZbeE2ZbhdaI,486
13
- lennybot/check/docker_image_available.py,sha256=Op2-n6U3Fkk0UOOaz3Koo21lqdErmItD-S01RBNLqV8,8397
14
- lennybot/check/icheck.py,sha256=sCMy1y_rrjVNrKh4vAiHH2QpiZIaUWaF06qkGnyC-N8,500
15
- lennybot/config/__init__.py,sha256=L85iDCHQJ1zH6U3s8XJuY3bzpj_r8ZOLm_djv84pG-U,119
16
- lennybot/config/config.py,sha256=hrFDP5NM59BPH60vFmYiQxgvrDmpka3v8i0VoazbYBY,11741
17
- lennybot/helper/__init__.py,sha256=u_-EsBGjsXi5qXxEtFlMsRkh2ocxH17w3RfPH2j2QWU,221
18
- lennybot/model/__init__.py,sha256=e_P6FXQooilrRoSKFdewkEUWL8x6k_45lH97yxL1rks,64
19
- lennybot/model/plan.py,sha256=KwITeVucCSxjM_SyetyUtGSw8hCXfZqO4yrY-330ba4,1096
20
- lennybot/model/state.py,sha256=UK9ALA3O5tGYQW5WCxQpybHeXrrwrQMgtvoZ4W_N9ok,1453
21
- lennybot/service/__init__.py,sha256=jU103QJj6LHYY6-R7wYEdu1oiwRT0FfwLG4wgZYbMAo,96
22
- lennybot/service/apply.py,sha256=P-Nkp5zsGRIEt7vkYkNJ_QuBgoN463XvABd5mRUDM0o,695
23
- lennybot/service/github.py,sha256=6BHQiu30aRVKPe6Rc6O2ZWMPAvZTRW7rJZw_f9AhGLE,2973
24
- lennybot/service/plan.py,sha256=GclYDy3bqdEsS_KDWUgDF4125uTUuOSDJh2sUdQS6Z8,3435
25
- lennybot/service/source/__init__.py,sha256=MX1dINBfsTIv7TDVbX-qbqiMsZN8XM6I4lhudcPnYlM,503
26
- lennybot/service/source/isource.py,sha256=s7T95siVMyKvCX2Ta4O7Jarc5BFAoYWfN74ocyLQiRM,253
27
- lennybot/service/source/source_github.py,sha256=z3xV4nH-opDagCGTgCKDjfeGHqbd4kdpmCvk0LCm04w,1073
28
- lennybot/service/source/source_github_query.py,sha256=Dn764TBPw6PABhNa_A1JIGCfLoBhcvmScEBHHmCbEbI,1072
29
- lennybot-1.0.31.data/data/generic/README.md,sha256=80AiUnPW9CnHB3Iwa8qGggGQl2XXUe5tVNtAny-_1nk,9831
30
- lennybot-1.0.31.data/data/generic/requirements.txt,sha256=ehp2P57fAPHl3tX8r5t3vyyPmW6tflMIKBBB0vKpvws,55
31
- lennybot-1.0.31.data/data/generic/version.txt,sha256=VmLTmBbOULW3noulizLqu_B8fqxN0ySSfEW-8f3y1Sk,6
32
- lennybot-1.0.31.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
33
- lennybot-1.0.31.dist-info/METADATA,sha256=_g63wg36lPVDPBn0doLjDH2nsojkzt67YHIum9cZFmw,11017
34
- lennybot-1.0.31.dist-info/WHEEL,sha256=UvcQYKBHoFqaQd6LKyqHw9fxEolWLQnlzP0h_LgJAfI,91
35
- lennybot-1.0.31.dist-info/entry_points.txt,sha256=TOjzBcHTJaiBU2arbNIMVr7_clYPAYjBZf5WqiZ8Uhw,43
36
- lennybot-1.0.31.dist-info/top_level.txt,sha256=Hrq9FY_KliVyEMH7LEA9rhCumLFTpKOHdSaZqzfHxhw,9
37
- lennybot-1.0.31.dist-info/RECORD,,