Skip to content

Upgrade "@decky/ui" & "rollup" to latest versions #27

Upgrade "@decky/ui" & "rollup" to latest versions

Upgrade "@decky/ui" & "rollup" to latest versions #27

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
});