Skip to content

Commit bef005d

Browse files
committed
force-release-type argument and move ReleaseArgs to models
1 parent a1c58d9 commit bef005d

File tree

6 files changed

+25
-18
lines changed

6 files changed

+25
-18
lines changed

src/redis_release/bht/args.py

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1 @@
11
"""Arguments for release automation."""
2-
3-
from typing import List
4-
5-
from pydantic import BaseModel, Field
6-
7-
8-
class ReleaseArgs(BaseModel):
9-
"""Arguments for release execution."""
10-
11-
release_tag: str
12-
force_rebuild: List[str] = Field(default_factory=list)
13-
only_packages: List[str] = Field(default_factory=list)

src/redis_release/bht/tree.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020

2121
from ..config import Config
2222
from ..github_client_async import GitHubClientAsync
23+
from ..models import ReleaseArgs
2324
from ..state_manager import S3StateStorage, StateManager, StateStorage
24-
from .args import ReleaseArgs
2525
from .backchain import latch_chains
2626
from .behaviours import NeedToPublishRelease
2727
from .composites import (

src/redis_release/cli.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
import typer
99
from py_trees.display import render_dot_tree, unicode_tree
1010

11-
from redis_release.bht.args import ReleaseArgs
1211
from redis_release.bht.state import print_state_table
12+
from redis_release.models import ReleaseType
1313
from redis_release.state_manager import (
1414
InMemoryStateStorage,
1515
S3StateStorage,
@@ -19,6 +19,7 @@
1919
from .bht.tree import TreeInspector, async_tick_tock, initialize_tree_and_state
2020
from .config import load_config
2121
from .logging_config import setup_logging
22+
from .models import ReleaseArgs
2223

2324
app = typer.Typer(
2425
name="redis-release",
@@ -101,6 +102,11 @@ def release(
101102
tree_cutoff: int = typer.Option(
102103
2000, "--tree-cutoff", "-m", help="Max number of ticks to run the tree for"
103104
),
105+
force_release_type: Optional[ReleaseType] = typer.Option(
106+
None,
107+
"--force-release-type",
108+
help="Force release type (public or internal)",
109+
),
104110
) -> None:
105111
"""Run release using behaviour tree implementation."""
106112
setup_logging()
@@ -112,6 +118,7 @@ def release(
112118
release_tag=release_tag,
113119
force_rebuild=force_rebuild or [],
114120
only_packages=only_packages or [],
121+
force_release_type=force_release_type,
115122
)
116123

117124
# Use context manager version with automatic lock management

src/redis_release/models.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import re
44
from enum import Enum
5-
from typing import Optional
5+
from typing import List, Optional
66

77
from pydantic import BaseModel, Field
88

@@ -151,3 +151,12 @@ def __lt__(self, other: "RedisVersion") -> bool:
151151
return True
152152

153153
return self.suffix < other.suffix
154+
155+
156+
class ReleaseArgs(BaseModel):
157+
"""Arguments for release execution."""
158+
159+
release_tag: str
160+
force_rebuild: List[str] = Field(default_factory=list)
161+
only_packages: List[str] = Field(default_factory=list)
162+
force_release_type: Optional[ReleaseType] = None

src/redis_release/state_manager.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@
1111
from botocore.exceptions import ClientError, NoCredentialsError
1212
from rich.pretty import pretty_repr
1313

14-
from redis_release.bht.args import ReleaseArgs
1514
from redis_release.bht.state import ReleaseState, logger, print_state_table
1615
from redis_release.config import Config
1716

1817
from .bht.state import ReleaseState
18+
from .models import ReleaseArgs
1919

2020
logger = logging.getLogger(__name__)
2121

@@ -227,6 +227,10 @@ def apply_args(self, state: ReleaseState) -> None:
227227
if package_name in state.packages:
228228
state.packages[package_name].meta.ephemeral.force_rebuild = True
229229

230+
if self.args.force_release_type:
231+
logger.info(f"Force release type: {self.args.force_release_type}")
232+
state.meta.release_type = self.args.force_release_type
233+
230234
def load(self) -> Optional[ReleaseState]:
231235
"""Load state from storage backend."""
232236
state_data = self.storage.get(self.tag)

src/tests/test_state.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,9 @@
55

66
import pytest
77

8-
from redis_release.bht.args import ReleaseArgs
98
from redis_release.bht.state import ReleaseState, Workflow
109
from redis_release.config import Config, PackageConfig
11-
from redis_release.models import PackageType
10+
from redis_release.models import PackageType, ReleaseArgs
1211
from redis_release.state_manager import InMemoryStateStorage, StateManager
1312

1413

0 commit comments

Comments
 (0)