Skip to content

Commit fc0ba15

Browse files
Merge remote-tracking branch 'upstream/main' into explicit-event-id-minification
2 parents 9b57ec1 + 21406ab commit fc0ba15

87 files changed

Lines changed: 2191 additions & 894 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
: "${PKG:?}"
5+
6+
LATEST=$(git tag -l "${PKG}-v*" | sed "s/^${PKG}-v//" | sort -V | tail -1)
7+
if [ -z "$LATEST" ]; then
8+
NEXT="0.0.1"
9+
else
10+
IFS='.' read -r MAJOR MINOR PATCH <<< "$LATEST"
11+
NEXT="${MAJOR}.${MINOR}.$((PATCH + 1))"
12+
fi
13+
14+
echo "version=$NEXT" >> "$GITHUB_OUTPUT"
15+
echo "tag=${PKG}-v${NEXT}" >> "$GITHUB_OUTPUT"
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
: "${TAG:?}"
5+
: "${PKG:?}"
6+
: "${VERSION:?}"
7+
: "${GH_TOKEN:?}"
8+
: "${GITHUB_SHA:?}"
9+
10+
gh release create "$TAG" \
11+
--title "$PKG@$VERSION" \
12+
--notes "Automated release for $PKG v$VERSION" \
13+
--target "$GITHUB_SHA" \
14+
--latest=false
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
: "${EVENT_NAME:?}"
5+
6+
if [ "$EVENT_NAME" = "workflow_dispatch" ]; then
7+
: "${DISPATCH_PACKAGE:?}"
8+
printf 'packages=["%s"]\n' "$DISPATCH_PACKAGE" >> "$GITHUB_OUTPUT"
9+
exit 0
10+
fi
11+
12+
PACKAGES=()
13+
for pkg in reflex-components-internal reflex-site-shared; do
14+
if git diff --name-only HEAD~1 HEAD -- "packages/$pkg/" | grep -q .; then
15+
PACKAGES+=("\"$pkg\"")
16+
fi
17+
done
18+
19+
JOINED=$(IFS=,; echo "${PACKAGES[*]:-}")
20+
echo "packages=[$JOINED]" >> "$GITHUB_OUTPUT"
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
: "${TAG:?}"
5+
: "${GH_TOKEN:?}"
6+
7+
gh workflow run publish.yml -f tag="$TAG"
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
: "${TAG:?}"
5+
6+
# Tag format: v1.2.3 for reflex, reflex-lucide-v0.1.0 for sub-packages
7+
if [[ "$TAG" =~ ^v([0-9].*)$ ]]; then
8+
PACKAGE="reflex"
9+
BUILD_DIR="."
10+
VERSION="${BASH_REMATCH[1]}"
11+
elif [[ "$TAG" =~ ^(.+)-v([0-9].*)$ ]]; then
12+
PACKAGE="${BASH_REMATCH[1]}"
13+
VERSION="${BASH_REMATCH[2]}"
14+
if [ -d "packages/$PACKAGE" ]; then
15+
BUILD_DIR="packages/$PACKAGE"
16+
else
17+
echo "Error: no build directory known for package '$PACKAGE'"
18+
exit 1
19+
fi
20+
else
21+
echo "Error: Tag '$TAG' does not match expected format (v* or <package>-v*)"
22+
exit 1
23+
fi
24+
25+
{
26+
echo "package=$PACKAGE"
27+
echo "build_dir=$BUILD_DIR"
28+
echo "version=$VERSION"
29+
} >> "$GITHUB_OUTPUT"
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
: "${VERSION:?}"
5+
6+
if ! grep -q '"reflex-base >= ' pyproject.toml; then
7+
echo "Error: expected 'reflex-base >= ...' dependency in pyproject.toml"
8+
exit 1
9+
fi
10+
sed -i 's|"reflex-base >= [^"]*"|"reflex-base == '"$VERSION"'"|' pyproject.toml
11+
grep '"reflex-base' pyproject.toml
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
: "${BUILD_DIR:?}"
5+
6+
if unzip -l "$BUILD_DIR"/dist/*.whl | grep '\.pyi$'; then
7+
echo "✓ .pyi files found in distribution"
8+
else
9+
echo "Error: No .pyi files found in wheel"
10+
exit 1
11+
fi

.github/workflows/auto_release_internal.yml

Lines changed: 4 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -34,20 +34,7 @@ jobs:
3434
env:
3535
EVENT_NAME: ${{ github.event_name }}
3636
DISPATCH_PACKAGE: ${{ inputs.package }}
37-
run: |
38-
set -euo pipefail
39-
if [ "$EVENT_NAME" = "workflow_dispatch" ]; then
40-
printf 'packages=["%s"]\n' "$DISPATCH_PACKAGE" >> "$GITHUB_OUTPUT"
41-
exit 0
42-
fi
43-
PACKAGES=()
44-
for pkg in reflex-components-internal reflex-site-shared; do
45-
if git diff --name-only HEAD~1 HEAD -- "packages/$pkg/" | grep -q .; then
46-
PACKAGES+=("\"$pkg\"")
47-
fi
48-
done
49-
JOINED=$(IFS=,; echo "${PACKAGES[*]:-}")
50-
echo "packages=[$JOINED]" >> "$GITHUB_OUTPUT"
37+
run: bash .github/scripts/auto_release_internal/detect.sh
5138

5239
release:
5340
needs: detect
@@ -69,34 +56,16 @@ jobs:
6956
id: version
7057
env:
7158
PKG: ${{ matrix.package }}
72-
run: |
73-
set -euo pipefail
74-
LATEST=$(git tag -l "${PKG}-v*" | sed "s/^${PKG}-v//" | sort -V | tail -1)
75-
if [ -z "$LATEST" ]; then
76-
NEXT="0.0.1"
77-
else
78-
IFS='.' read -r MAJOR MINOR PATCH <<< "$LATEST"
79-
NEXT="${MAJOR}.${MINOR}.$((PATCH + 1))"
80-
fi
81-
echo "version=$NEXT" >> "$GITHUB_OUTPUT"
82-
echo "tag=${PKG}-v${NEXT}" >> "$GITHUB_OUTPUT"
59+
run: bash .github/scripts/auto_release_internal/compute_version.sh
8360
- name: Create GitHub release (not marked latest)
8461
env:
8562
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
8663
TAG: ${{ steps.version.outputs.tag }}
8764
PKG: ${{ matrix.package }}
8865
VERSION: ${{ steps.version.outputs.version }}
89-
run: |
90-
set -euo pipefail
91-
gh release create "$TAG" \
92-
--title "$PKG@$VERSION" \
93-
--notes "Automated release for $PKG v$VERSION" \
94-
--target "$GITHUB_SHA" \
95-
--latest=false
66+
run: bash .github/scripts/auto_release_internal/create_release.sh
9667
- name: Trigger publish workflow
9768
env:
9869
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
9970
TAG: ${{ steps.version.outputs.tag }}
100-
run: |
101-
set -euo pipefail
102-
gh workflow run publish.yml -f tag="$TAG"
71+
run: bash .github/scripts/auto_release_internal/trigger_publish.sh

.github/workflows/publish.yml

Lines changed: 9 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -32,50 +32,24 @@ jobs:
3232

3333
- name: Parse release tag
3434
id: parse
35-
run: |
36-
TAG="${{ github.event.release.tag_name || inputs.tag }}"
37-
# Tag format: v1.2.3 for reflex, reflex-lucide-v0.1.0 for sub-packages
38-
if [[ "$TAG" =~ ^v([0-9].*)$ ]]; then
39-
echo "package=reflex" >> "$GITHUB_OUTPUT"
40-
echo "build_dir=." >> "$GITHUB_OUTPUT"
41-
echo "version=${BASH_REMATCH[1]}" >> "$GITHUB_OUTPUT"
42-
elif [[ "$TAG" =~ ^(.+)-v([0-9].*)$ ]]; then
43-
PACKAGE="${BASH_REMATCH[1]}"
44-
if [ ! -d "packages/$PACKAGE" ]; then
45-
echo "Error: packages/$PACKAGE does not exist"
46-
exit 1
47-
fi
48-
echo "package=$PACKAGE" >> "$GITHUB_OUTPUT"
49-
echo "build_dir=packages/$PACKAGE" >> "$GITHUB_OUTPUT"
50-
echo "version=${BASH_REMATCH[2]}" >> "$GITHUB_OUTPUT"
51-
else
52-
echo "Error: Tag '$TAG' does not match expected format (v* or <package>-v*)"
53-
exit 1
54-
fi
35+
env:
36+
TAG: ${{ github.event.release.tag_name || inputs.tag }}
37+
run: bash .github/scripts/publish/parse_tag.sh
5538

5639
- name: Pin reflex-base to exact version
5740
if: steps.parse.outputs.package == 'reflex'
58-
run: |
59-
VERSION="${{ steps.parse.outputs.version }}"
60-
if ! grep -q '"reflex-base >= ' pyproject.toml; then
61-
echo "Error: expected 'reflex-base >= ...' dependency in pyproject.toml"
62-
exit 1
63-
fi
64-
sed -i 's|"reflex-base >= [^"]*"|"reflex-base == '"$VERSION"'"|' pyproject.toml
65-
grep '"reflex-base' pyproject.toml
41+
env:
42+
VERSION: ${{ steps.parse.outputs.version }}
43+
run: bash .github/scripts/publish/pin_reflex_base.sh
6644

6745
- name: Build
6846
run: uv build --directory "${{ steps.parse.outputs.build_dir }}"
6947

7048
- name: Verify .pyi files in wheel
7149
if: steps.parse.outputs.package == 'reflex'
72-
run: |
73-
if unzip -l ${{ steps.parse.outputs.build_dir }}/dist/*.whl | grep '\.pyi$'; then
74-
echo "✓ .pyi files found in distribution"
75-
else
76-
echo "Error: No .pyi files found in wheel"
77-
exit 1
78-
fi
50+
env:
51+
BUILD_DIR: ${{ steps.parse.outputs.build_dir }}
52+
run: bash .github/scripts/publish/verify_pyi.sh
7953

8054
- name: Publish
8155
run: uv publish dist/*

.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ repos:
44
hooks:
55
- id: ruff-format
66
name: ruff-format
7-
entry: ruff format --preview
7+
entry: ruff format
88
language: system
99
types_or: [python, markdown]
1010
require_serial: true

0 commit comments

Comments
 (0)