Skip to content

Commit a50486a

Browse files
committed
fix delete code
1 parent 687582d commit a50486a

10 files changed

Lines changed: 234 additions & 1053 deletions

.github/workflows/test-vscode-workflows-integration.yml

Lines changed: 51 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,22 +34,65 @@ jobs:
3434
working-directory: test-repo
3535
run: npm ci
3636

37-
- name: Build CLI package
38-
working-directory: toolkit/packages/vscode-extension-ci
39-
run: |
40-
npm install
41-
npm run build
42-
4337
- name: Test ext-package-selector
4438
working-directory: test-repo
4539
run: |
46-
node ../toolkit/packages/vscode-extension-ci/dist/cli.js ext-package-selector
40+
echo "Getting all available VS Code extensions..."
41+
PACKAGES_ROOT="${PACKAGES_ROOT:-packages}"
42+
43+
extensions=()
44+
if [ -d "$PACKAGES_ROOT" ]; then
45+
for dir in "$PACKAGES_ROOT"/*/ ; do
46+
if [ -d "$dir" ] && [ -f "$dir/package.json" ]; then
47+
if jq -e '.publisher' "$dir/package.json" > /dev/null 2>&1; then
48+
package_name=$(basename "$dir")
49+
extensions+=("$package_name")
50+
echo " Found VS Code extension: $package_name"
51+
fi
52+
fi
53+
done
54+
fi
55+
56+
json_array=$(printf '%s\n' "${extensions[@]}" | jq -R . | jq -s -c .)
57+
echo "Found ${#extensions[@]} VS Code extensions"
58+
echo "extensions=$json_array" >> $GITHUB_OUTPUT
4759
echo "✓ Package selector works"
4860
4961
- name: Test ext-build-type
5062
working-directory: test-repo
5163
run: |
52-
node ../toolkit/packages/vscode-extension-ci/dist/cli.js ext-build-type
64+
echo "Determining build type..."
65+
66+
if [ "${GITHUB_EVENT_NAME:-}" = "schedule" ]; then
67+
IS_NIGHTLY="true"
68+
else
69+
IS_NIGHTLY="false"
70+
fi
71+
72+
if [ "$IS_NIGHTLY" = "true" ]; then
73+
VERSION_BUMP="patch"
74+
PRE_RELEASE="true"
75+
else
76+
VERSION_BUMP="${INPUT_VERSION_BUMP:-auto}"
77+
PRE_RELEASE="${INPUT_PRE_RELEASE:-false}"
78+
fi
79+
80+
if [ "$PRE_RELEASE" = "false" ] && [ "$IS_NIGHTLY" = "false" ]; then
81+
IS_PROMOTION="true"
82+
else
83+
IS_PROMOTION="false"
84+
fi
85+
86+
echo "Build type determined:"
87+
echo " Is nightly: $IS_NIGHTLY"
88+
echo " Version bump: $VERSION_BUMP"
89+
echo " Pre-release: $PRE_RELEASE"
90+
echo " Is promotion: $IS_PROMOTION"
91+
92+
echo "is-nightly=$IS_NIGHTLY" >> $GITHUB_OUTPUT
93+
echo "version-bump=$VERSION_BUMP" >> $GITHUB_OUTPUT
94+
echo "pre-release=$PRE_RELEASE" >> $GITHUB_OUTPUT
95+
echo "is-promotion=$IS_PROMOTION" >> $GITHUB_OUTPUT
5396
echo "✓ Build type detection works"
5497
5598
- name: Build VSIX package

.github/workflows/vscode-publish-extensions.yml

Lines changed: 182 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,55 @@ jobs:
128128
PRE_RELEASE: 'true'
129129
SELECTED_EXTENSIONS: ${{ needs.determine-changes.outputs.selected-extensions }}
130130
run: |
131-
node node_modules/github-workflows/packages/vscode-extension-ci/dist/cli.js ext-release-plan
131+
echo "=== EXTENSION RELEASE PLAN ==="
132+
echo "Branch: $BRANCH"
133+
echo "Build type: $BUILD_TYPE"
134+
echo "Is nightly: $IS_NIGHTLY"
135+
echo "Version bump type: $VERSION_BUMP"
136+
echo "Registries: $REGISTRIES"
137+
echo "Pre-release: $PRE_RELEASE"
138+
echo "Dry run mode: ENABLED"
139+
echo ""
140+
echo "Extensions to release: $SELECTED_EXTENSIONS"
141+
echo ""
142+
143+
IFS=',' read -ra extensions <<< "$SELECTED_EXTENSIONS"
144+
for ext in "${extensions[@]}"; do
145+
[ -z "$ext" ] && continue
146+
147+
package_json="packages/$ext/package.json"
148+
if [ ! -f "$package_json" ]; then
149+
echo "Extension: $ext (package.json not found)"
150+
continue
151+
fi
152+
153+
current_version=$(jq -r '.version' "$package_json")
154+
publisher=$(jq -r '.publisher // "N/A"' "$package_json")
155+
156+
echo "Extension: $ext"
157+
echo " Current version: $current_version"
158+
echo " Publisher: $publisher"
159+
160+
if [ "$IS_NIGHTLY" = "true" ]; then
161+
echo " Version strategy: Nightly build (odd minor + nightly timestamp)"
162+
elif [ "$PRE_RELEASE" = "true" ]; then
163+
echo " Version strategy: Pre-release (odd minor version)"
164+
else
165+
echo " Version strategy: Stable release (even minor version)"
166+
fi
167+
168+
echo " Would create GitHub release"
169+
echo " Would package VSIX"
170+
171+
case "$REGISTRIES" in
172+
marketplace) echo " Would publish to: VS Code Marketplace only" ;;
173+
openvsx) echo " Would publish to: Open VSX only" ;;
174+
all) echo " Would publish to: VS Code Marketplace and Open VSX" ;;
175+
esac
176+
echo ""
177+
done
178+
179+
echo "=== END OF RELEASE PLAN ==="
132180
133181
bump-versions:
134182
needs: [determine-changes]
@@ -297,7 +345,55 @@ jobs:
297345
echo "Nightly build detected - skipping marketplace publishing"
298346
echo 'matrix=[]' >> $GITHUB_OUTPUT
299347
else
300-
node node_modules/github-workflows/packages/vscode-extension-ci/dist/cli.js ext-publish-matrix
348+
# Parse extensions
349+
IFS=',' read -ra extensions <<< "$SELECTED_EXTENSIONS"
350+
351+
# Determine registries
352+
if [ "$REGISTRIES" = "all" ]; then
353+
registries=("vsce" "ovsx")
354+
else
355+
IFS=',' read -ra registries <<< "$REGISTRIES"
356+
fi
357+
358+
# Build matrix JSON
359+
matrix_entries=()
360+
for ext in "${extensions[@]}"; do
361+
[ -z "$ext" ] && continue
362+
363+
# Map extension names to VSIX patterns
364+
if [ "$ext" = "apex-lsp-vscode-extension" ]; then
365+
vsix_pattern="*apex-language-server-extension*-[0-9]*.vsix"
366+
else
367+
vsix_pattern="*${ext}*.vsix"
368+
fi
369+
370+
for registry in "${registries[@]}"; do
371+
[ -z "$registry" ] && continue
372+
373+
case "$registry" in
374+
vsce) marketplace="VS Code Marketplace" ;;
375+
ovsx) marketplace="Open VSX Registry" ;;
376+
*) marketplace="$registry" ;;
377+
esac
378+
379+
entry=$(jq -n \
380+
--arg reg "$registry" \
381+
--arg pattern "$vsix_pattern" \
382+
--arg market "$marketplace" \
383+
'{registry: $reg, vsix_pattern: $pattern, marketplace: $market}')
384+
385+
matrix_entries+=("$entry")
386+
done
387+
done
388+
389+
# Combine into matrix JSON
390+
if [ ${#matrix_entries[@]} -eq 0 ]; then
391+
matrix_json='{"include":[]}'
392+
else
393+
matrix_json=$(printf '%s\n' "${matrix_entries[@]}" | jq -s '{include: .}')
394+
fi
395+
396+
echo "matrix=$matrix_json" >> $GITHUB_OUTPUT
301397
fi
302398
303399
publish:
@@ -467,7 +563,90 @@ jobs:
467563
BRANCH: ${{ inputs.branch || github.ref_name }}
468564
VSIX_ARTIFACTS_PATH: ./vsix-artifacts
469565
run: |
470-
node node_modules/github-workflows/packages/vscode-extension-ci/dist/cli.js ext-github-releases
566+
echo "Mode: $([ "$DRY_RUN" = "true" ] && echo "DRY RUN" || echo "LIVE")"
567+
echo "Creating GitHub releases..."
568+
569+
IFS=',' read -ra extensions <<< "$SELECTED_EXTENSIONS"
570+
571+
for ext in "${extensions[@]}"; do
572+
[ -z "$ext" ] && continue
573+
574+
package_json="packages/$ext/package.json"
575+
if [ ! -f "$package_json" ]; then
576+
echo "⚠️ Skipping $ext: package.json not found"
577+
continue
578+
fi
579+
580+
current_version=$(jq -r '.version' "$package_json")
581+
echo "Processing extension: $ext (version: $current_version)"
582+
583+
# Find VSIX files
584+
if [ "$ext" = "apex-lsp-vscode-extension" ]; then
585+
vsix_pattern="*apex-language-server-extension-*.vsix"
586+
else
587+
vsix_pattern="*${ext}*.vsix"
588+
fi
589+
590+
vsix_files=("$VSIX_ARTIFACTS_PATH"/$ext/$vsix_pattern)
591+
if [ ! -f "${vsix_files[0]}" ]; then
592+
echo "⚠️ No VSIX files found for $ext"
593+
continue
594+
fi
595+
596+
# Filter out *-web-* builds
597+
filtered_files=()
598+
for file in "${vsix_files[@]}"; do
599+
if [[ ! "$(basename "$file")" =~ -web- ]]; then
600+
filtered_files+=("$file")
601+
fi
602+
done
603+
604+
# Create release tag
605+
release_tag="v$current_version"
606+
release_title="$ext v$current_version"
607+
608+
if [ "$IS_NIGHTLY" = "true" ]; then
609+
nightly_date=$(date -u +%Y%m%d)
610+
branch_suffix=""
611+
[ "$BRANCH" != "main" ] && branch_suffix=".${BRANCH//\//-}"
612+
release_tag="v${current_version}-nightly${branch_suffix}.${nightly_date}"
613+
release_title="$ext v$current_version (Nightly $BRANCH $nightly_date)"
614+
fi
615+
616+
if [ "$DRY_RUN" = "true" ]; then
617+
echo "✅ DRY RUN: Would create release $release_tag with ${#filtered_files[@]} VSIX files"
618+
else
619+
# Check if release exists
620+
if gh release view "$release_tag" --repo "$GITHUB_REPOSITORY" > /dev/null 2>&1; then
621+
echo "⏭️ Release $release_tag already exists - skipping"
622+
else
623+
# Generate release notes
624+
notes_file=".release-notes-$(date +%s).tmp"
625+
cat > "$notes_file" << EOF
626+
## $ext v$current_version
627+
628+
### Installation
629+
Download the VSIX file and install via VS Code.
630+
631+
$([ "$PRE_RELEASE" = "true" ] && echo "⚠️ **This is a pre-release version**")
632+
$([ "$IS_NIGHTLY" = "true" ] && echo "🌙 **Nightly build from $(date -u +%Y%m%d)**")
633+
EOF
634+
635+
# Create release
636+
gh release create "$release_tag" \
637+
--title "$release_title" \
638+
--notes-file "$notes_file" \
639+
--prerelease="$PRE_RELEASE" \
640+
--repo "$GITHUB_REPOSITORY" \
641+
"${filtered_files[@]}"
642+
643+
rm -f "$notes_file"
644+
echo "✅ Release created for $ext"
645+
fi
646+
fi
647+
done
648+
649+
echo "$([ "$DRY_RUN" = "true" ] && echo "✅ DRY RUN complete" || echo "✅ Releases created")"
471650
472651
publish-to-cbweb-marketplace:
473652
name: Publish to CBWeb Internal Marketplace

0 commit comments

Comments
 (0)