Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude/hooks/bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion .claude/hooks/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,6 @@
"dependencies": {
"@types/node": "^25.6.0",
"tsx": "^4.21.0",
"typescript": "^6.0.2"
"typescript": "^6.0.3"
}
}
6 changes: 3 additions & 3 deletions .github/workflows/cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,19 +17,19 @@ jobs:
# ====================================================
semantic-release:
name: semantic-release
uses: wislertt/zerv/.github/workflows/shared-semantic-release.yml@643777b9a3573497fd9f8edabe340f256acce981 # v0.8.13
uses: wislertt/zerv/.github/workflows/shared-semantic-release.yml@19299eac1a2c1b20717f1bf5c1f2a19ffe17f741 # v0.8.14
with:
allowed_workflow_dispatch_branches: '["main"]'
fail_on_invalid_workflow_dispatch_ref: true

zerv-versioning:
needs: semantic-release
if: needs.semantic-release.outputs.is_valid_semantic_release == 'true'
uses: wislertt/zerv/.github/workflows/shared-zerv-versioning.yml@643777b9a3573497fd9f8edabe340f256acce981 # v0.8.13
uses: wislertt/zerv/.github/workflows/shared-zerv-versioning.yml@19299eac1a2c1b20717f1bf5c1f2a19ffe17f741 # v0.8.14

create-version-prefix-tags:
needs: zerv-versioning
uses: wislertt/zerv/.github/workflows/shared-create-tags.yml@643777b9a3573497fd9f8edabe340f256acce981 # v0.8.13
uses: wislertt/zerv/.github/workflows/shared-create-tags.yml@19299eac1a2c1b20717f1bf5c1f2a19ffe17f741 # v0.8.14
with:
tags: >-
[
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
# ====================================================
check-pre-release:
name: check-pre-release
uses: wislertt/zerv/.github/workflows/shared-check-pr-label-and-branch.yml@643777b9a3573497fd9f8edabe340f256acce981 # v0.8.13
uses: wislertt/zerv/.github/workflows/shared-check-pr-label-and-branch.yml@19299eac1a2c1b20717f1bf5c1f2a19ffe17f741 # v0.8.14
with:
target_label: "pre-release"
branch_prefixes: '["release/"]'
Expand All @@ -23,7 +23,7 @@ jobs:
zerv-versioning:
name: zerv-versioning
needs: check-pre-release
uses: wislertt/zerv/.github/workflows/shared-zerv-versioning.yml@643777b9a3573497fd9f8edabe340f256acce981 # v0.8.13
uses: wislertt/zerv/.github/workflows/shared-zerv-versioning.yml@19299eac1a2c1b20717f1bf5c1f2a19ffe17f741 # v0.8.14
with:
schema: >-
${{ (needs.check-pre-release.outputs.is_valid == 'true'
Expand All @@ -34,7 +34,7 @@ jobs:
name: tag-pre-release
needs: [zerv-versioning, check-pre-release]
if: needs.check-pre-release.outputs.is_valid == 'true'
uses: wislertt/zerv/.github/workflows/shared-create-tags.yml@643777b9a3573497fd9f8edabe340f256acce981 # v0.8.13
uses: wislertt/zerv/.github/workflows/shared-create-tags.yml@19299eac1a2c1b20717f1bf5c1f2a19ffe17f741 # v0.8.14
with:
tags: '["${{ fromJson(needs.zerv-versioning.outputs.versions).v_semver }}"]'

Expand Down
30 changes: 21 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -416,19 +416,31 @@ BaseSpace provides these tasks (override as needed):

#### Multi-Environment Bakebooks

For projects with multiple environments (dev, staging, prod), use environment bakebooks:
For projects with multiple environments (dev, staging, prod), use environment mixins:

```python
from bakelib.environ import (
DevEnvBakebook,
StagingEnvBakebook,
ProdEnvBakebook,
BaseEnv,
DevEnvMixin,
EnvBakebook,
ProdEnvMixin,
StagingEnvMixin,
get_bakebook,
)

bakebook_dev = DevEnvBakebook()
bakebook_staging = StagingEnvBakebook()
bakebook_prod = ProdEnvBakebook()
# Compose env mixins with EnvBakebook
class DevBakebook(DevEnvMixin, EnvBakebook[BaseEnv]):
pass

class StagingBakebook(StagingEnvMixin, EnvBakebook[BaseEnv]):
pass

class ProdBakebook(ProdEnvMixin, EnvBakebook[BaseEnv]):
pass

bakebook_dev = DevBakebook()
bakebook_staging = StagingBakebook()
bakebook_prod = ProdBakebook()

# Select bakebook based on ENV environment variable
bakebook = get_bakebook([bakebook_dev, bakebook_staging, bakebook_prod])
Expand All @@ -448,8 +460,8 @@ from bakelib.environ import BaseEnv, EnvBakebook
class MyEnv(BaseEnv):
ENV_ORDER = ["dev", "sit", "qa", "uat", "prod"]

class MyEnvBakebook(EnvBakebook):
env_: MyEnv = MyEnv("local")
class MyEnvBakebook(EnvBakebook[MyEnv]):
env: MyEnv = MyEnv("local")
```

For more details, see the [bakelib source](https://github.com/wislertt/bakefile/tree/main/src/bakelib).
Expand Down
13 changes: 7 additions & 6 deletions bakefile.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,14 @@

import typer
import zerv
from pydantic import SecretBytes, SecretStr

from bake import DEFAULT_BAKE_LOG, DEFAULT_BAKE_LOG_PRETTY, command, console, params
from bake import (
DEFAULT_BAKE_LOG,
DEFAULT_BAKE_LOG_PRETTY,
command,
console,
params,
)
from bakelib import GitHubActionsTools, PythonLibSpace

logger = logging.getLogger(__name__)
Expand All @@ -18,10 +23,6 @@ class MyBakebook(GitHubActionsTools, PythonLibSpace):
bake_log_verbosity: params.BakeLogVerbosityField = 3
bake_log_pretty: bool = DEFAULT_BAKE_LOG_PRETTY

# Secret
some_secret_str: SecretStr = SecretStr("my_str_secret")
some_secret_bytes: SecretBytes = SecretBytes(b"my_bytes_secret")

def _get_mise_tools(self) -> set[str]:
mise_tools = super()._get_mise_tools()
mise_tools.remove("pipx:bakefile")
Expand Down
Loading
Loading