Files
theia-code-os/.github/workflows/check-new-package.yml
mawkone 8bb5110148
Some checks failed
Playwright Tests / Playwright Tests (ubuntu-22.04, Node.js 22.x) (push) Has been cancelled
3PP License Check / 3PP License Check (11, 22.x, ubuntu-22.04) (push) Has been cancelled
Publish packages to NPM / Perform Publishing (push) Has been cancelled
deploy: current vibn theia state
Made-with: Cursor
2026-02-27 12:01:08 -08:00

98 lines
4.4 KiB
YAML

name: Check New Theia Package
on:
pull_request:
branches: [master]
types: [opened, synchronized, reopened]
paths:
- 'packages/*/package.json'
permissions:
pull-requests: write
contents: read
jobs:
detect-new-packages:
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
with:
fetch-depth: 0
- name: Detect if a new package was added
id: detect
run: |
git fetch origin ${{ github.base_ref }}
NEW_PACKAGES=$(git diff --name-only --diff-filter=A origin/${{ github.base_ref }}...HEAD | grep -E '^packages/[^/]+/package\.json$' || true)
if [ -z "$NEW_PACKAGES" ]; then
echo "new_package_found=false" >> $GITHUB_OUTPUT
echo "No new packages detected"
else
echo "new_package_found=true" >> $GITHUB_OUTPUT
PACKAGE_NAMES=$(echo "$NEW_PACKAGES" | sed 's|packages/\([^/]*\)/package\.json|\1|' | tr '\n' ',' | sed 's/,$//')
echo "package_names=$PACKAGE_NAMES" >> $GITHUB_OUTPUT
echo "New packages detected: $PACKAGE_NAMES"
fi
- name: Post or update checklist comment
if: steps.detect.outputs.new_package_found == 'true'
uses: actions/github-script@ffc2c79a5b2490bd33e0a41c1de74b877714d736 # v3.2.0
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const packageNames = '${{ steps.detect.outputs.package_names }}';
const packageList = packageNames.split(',').map(name => `\`${name}\``).join(', ');
const commentBody = `
### New \`@theia\` Package(s) Detected
This PR adds the following new package(s): ${packageList}
Please ensure the following checklist items are completed before merging:
- [ ] \`package.json\` contains all required fields (name, version, description, license, etc.) and scripts
- [ ] \`README.md\` was added (please align with the existing README structure, e.g. [README.md](https://github.com/eclipse-theia/theia/blob/master/packages/editor/README.md))
- [ ] Config files (\`tsconfig.json\`, \`.eslintrc.js\`) were added and align with the existing packages
- [ ] Folder structure follows Theia conventions (see [Code Organization](https://github.com/eclipse-theia/theia/blob/master/doc/code-organization.md))
- [ ] Package is added to the example applications (i.e. \`browser\`, \`browser-only\`, \`electron\`)
- [ ] New packages must be published manually by a Theia committer initially (see also [Release Process - Newly added Theia packages](https://github.com/eclipse-theia/theia/blob/master/doc/Publishing.md#212-newly-added-theia-packages---publish-initially-to-npm)).
If you are not a committer or do not have enough time, please open a follow-up ticket with the label \`toDoWithRelease\` to inform the release team about the new package (see for example: <https://github.com/eclipse-theia/theia/issues/16651>).
- [ ] If the package should also be part of the Theia IDE, please [open a ticket for the Theia IDE](https://github.com/eclipse-theia/theia-ide/issues/new?template=feature_request.md)
and assign the \`toDoWithRelease\` (see for example: <https://github.com/eclipse-theia/theia-ide/issues/615>)
`;
const issue_number = context.issue.number;
const owner = context.repo.owner;
const repo = context.repo.repo;
const comments = await github.issues.listComments({
owner,
repo,
issue_number
});
const botComment = comments.data.find(comment =>
comment.user.type === 'Bot' &&
comment.body.includes('New `@theia` Package(s) Detected')
);
if (botComment) {
await github.issues.updateComment({
owner,
repo,
comment_id: botComment.id,
body: commentBody
});
console.log('Updated existing comment');
} else {
await github.issues.createComment({
owner,
repo,
issue_number,
body: commentBody
});
console.log('Created new comment');
}