feat(plugin): Add page changes using Left & Right Trigger #31
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Create PR File and Upload as Artifact | |
on: | |
pull_request: | |
types: [opened, synchronize, reopened, closed] | |
jobs: | |
check: | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
- name: Setup Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
- name: Setup pnpm | |
uses: pnpm/action-setup@v4 | |
with: | |
version: 9 | |
- name: Install Dependencies | |
run: pnpm install | |
- name: TypeScript Check | |
run: pnpm tsc --noEmit | |
- name: Check formatting | |
run: pnpm biome format | |
- name: Check linting | |
run: pnpm biome lint | |
- name: Setup bun | |
uses: oven-sh/setup-bun@v2 | |
- name: Testing | |
run: bun test | |
create_merge_request_artifact: | |
needs: check | |
runs-on: ubuntu-20.04 | |
permissions: | |
contents: write | |
pull-requests: write | |
repository-projects: write | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Setup Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
- name: Setup pnpm | |
uses: pnpm/action-setup@v4 | |
with: | |
version: 9 | |
- name: Get Package Version | |
run: echo "PACKAGE_VERSION=$(node -p "require('./package.json').version")" >> $GITHUB_ENV | |
- name: Get Commit Hash | |
run: echo "COMMIT_HASH=$(git rev-parse --short "$GITHUB_SHA")" >> $GITHUB_ENV | |
- name: Install Frontend Dependencies | |
run: pnpm install | |
- name: Build plugin | |
uses: actions/github-script@v7 | |
env: | |
release_id: ${{ needs.create-release.outputs.release_id }} | |
release_tag: ${{ needs.create-release.outputs.tag }} | |
with: | |
script: | | |
const fs = require("fs"); | |
const child_process = require("child_process"); | |
const path = require("path"); | |
const includeInBuild = [ | |
"plugin.json", | |
"package.json", | |
"main.py", | |
"README.md", | |
"LICENSE" | |
]; | |
function copyDirRecursive(parentPath, contents, dest) { | |
for (const file of contents) { | |
const fileName = file.name; | |
const srcPath = path.join(cwdPath, parentPath, fileName); | |
const destPath = path.join(cwdPath, dest, fileName); | |
if (fs.lstatSync(srcPath).isDirectory()) { | |
const dirContents = fs.readdirSync(srcPath, { withFileTypes: true }); | |
const dirDestPath = path.join(dest, fileName); | |
fs.mkdirSync(dirDestPath, { recursive: true }); | |
copyDirRecursive(path.join(parentPath, fileName), dirContents, dirDestPath); | |
} else { | |
fs.copyFileSync(srcPath, destPath); | |
} | |
} | |
} | |
const cwdPath = path.resolve(process.cwd()); | |
// * build the plugin with `pnpm build` | |
child_process.execSync("pnpm build"); | |
// * once finished, make folder with all files in includeInBuild | |
const bundleWrapperPath = path.join(cwdPath, "bundle"); | |
const bundlePath = path.join(bundleWrapperPath, "SDH-PlayTime"); | |
fs.mkdirSync(bundlePath, { recursive: true }); | |
fs.mkdirSync(path.join(bundlePath, "dist")); | |
for (const fileToInclude of includeInBuild) { | |
const srcPath = path.join(cwdPath, fileToInclude); | |
const destPath = path.join(bundlePath, fileToInclude); | |
fs.copyFileSync(srcPath, destPath); | |
} | |
// * check contents of defaults | |
const defaultsPath = path.join(cwdPath, "defaults"); | |
if (fs.existsSync(defaultsPath)) { | |
const defaultContents = fs.readdirSync(defaultsPath, { withFileTypes: true }); | |
copyDirRecursive("defaults", defaultContents, `bundle${path.sep}SDH-PlayTime`); | |
} | |
// * check contents of dist | |
const distPath = path.join(cwdPath, "dist"); | |
if (fs.existsSync(distPath)) { | |
const distContents = fs.readdirSync(distPath, { withFileTypes: true }); | |
copyDirRecursive("dist", distContents, `bundle${path.sep}SDH-PlayTime${path.sep}/dist`); | |
} | |
- name: Upload plugin build as artifact | |
uses: actions/upload-artifact@v4 | |
id: artifact-upload-step | |
with: | |
name: SDH-PlayTime-MR${{ github.event.pull_request.number }}-${{ env.COMMIT_HASH }} | |
path: ./bundle | |
- name: Post comment with artifact URL | |
uses: actions/github-script@v7 | |
with: | |
script: | | |
const prNumber = "${{ github.event.pull_request.number }}"; | |
const commentBody = `Build artifact: [SDH-PlayTime-MR${{ github.event.pull_request.number }}-${{ env.COMMIT_HASH }}](${{ steps.artifact-upload-step.outputs.artifact-url }}).`; | |
const response = await github.rest.issues.createComment({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
issue_number: prNumber, | |
body: commentBody | |
}); |