This commit is contained in:
14
.gitea/workflows/deploy_pack.yml
Normal file
14
.gitea/workflows/deploy_pack.yml
Normal file
@ -0,0 +1,14 @@
|
||||
on:
|
||||
push:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
deploy_site:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: src.pmh.codes/build-tools/react2minio:latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- run: pnpm i
|
||||
- run: pnpm run pkg
|
||||
- run: mc cp $PWD/dist/* minio/releases/
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,2 +1,3 @@
|
||||
node_modules/
|
||||
build/
|
||||
dist/
|
||||
|
21
package.json
21
package.json
@ -1,11 +1,13 @@
|
||||
{
|
||||
"name": "bpsets",
|
||||
"version": "0.1.0",
|
||||
"main": "dist/main.js",
|
||||
"main": "build/main.js",
|
||||
"bin": "build/main.js",
|
||||
"scripts": {
|
||||
"build": "rimraf ./dist && tsc",
|
||||
"pkg": "rimraf ./build && tsc && pkg .",
|
||||
"build": "rimraf ./build && tsc",
|
||||
"start": "node .",
|
||||
"dev": "nodemon -e ts --exec \"rimraf ./dist && tsc && node . || exit 1\""
|
||||
"dev": "nodemon -e ts --exec \"rimraf ./build && tsc && node . || exit 1\""
|
||||
},
|
||||
"author": "Minhyeok Park<pmh_only@pmh.codes>",
|
||||
"license": "MIT",
|
||||
@ -48,7 +50,20 @@
|
||||
"@types/express": "^5.0.0",
|
||||
"@types/node": "^22.10.2",
|
||||
"@types/sha.js": "^2.4.4",
|
||||
"@yao-pkg/pkg": "^6.2.0",
|
||||
"nodemon": "^3.1.9",
|
||||
"typescript": "^5.7.2"
|
||||
},
|
||||
"pkg": {
|
||||
"scripts": "build/**/*",
|
||||
"assets": [
|
||||
"views/**/*",
|
||||
"bpset_metadata.json"
|
||||
],
|
||||
"targets": [
|
||||
"node22-linuxstatic-x86_64",
|
||||
"node22-linuxstatic-arm64"
|
||||
],
|
||||
"outputPath": "dist"
|
||||
}
|
||||
}
|
||||
|
778
pnpm-lock.yaml
generated
778
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@ -22,25 +22,25 @@ export class BPManager {
|
||||
}
|
||||
|
||||
private async loadBPSets() {
|
||||
const bpSetFiles = await readdir('./dist/bpsets', {
|
||||
recursive: true,
|
||||
withFileTypes: true
|
||||
})
|
||||
const bpSetFolders = await readdir(path.join(__dirname, 'bpsets'))
|
||||
|
||||
for (const bpSetFolder of bpSetFolders) {
|
||||
const bpSetFiles = await readdir(path.join(__dirname, 'bpsets', bpSetFolder))
|
||||
|
||||
for (const bpSetFile of bpSetFiles) {
|
||||
if (bpSetFile.isDirectory())
|
||||
continue
|
||||
const bpSetPath = path.join(__dirname, 'bpsets', bpSetFolder, bpSetFile)
|
||||
const bpSetClasses = await import(bpSetPath) as Record<string, new () => BPSet>
|
||||
|
||||
const bpSetPath = path.join(bpSetFile.parentPath, bpSetFile.name)
|
||||
const bpSetClasses = await import('../' + bpSetPath) as Record<string, new () => BPSet>
|
||||
|
||||
for (const bpSetClass of Object.keys(bpSetClasses))
|
||||
for (const bpSetClass of Object.keys(bpSetClasses)) {
|
||||
this.bpSets[bpSetClass] = new bpSetClasses[bpSetClass]()
|
||||
console.log('BPSet implement,', bpSetClass, 'loaded')
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private async loadBPSetMetadatas() {
|
||||
const bpSetMetadatasRaw = await readFile('./bpset_metadata.json')
|
||||
const bpSetMetadatasRaw = await readFile(path.join(__dirname, '../bpset_metadata.json'))
|
||||
const bpSetMetadatas = JSON.parse(bpSetMetadatasRaw.toString('utf-8')) as BPSetMetadata[]
|
||||
|
||||
for (const [idx, bpSetMetadata] of bpSetMetadatas.entries()) {
|
||||
|
@ -2,6 +2,7 @@ import express, { Request, Response } from 'express'
|
||||
import { BPManager } from './BPManager'
|
||||
import { BPSetMetadata } from './types'
|
||||
import { Memorizer } from './Memorizer'
|
||||
import path from 'path'
|
||||
|
||||
export class WebServer {
|
||||
private readonly app = express()
|
||||
@ -12,7 +13,7 @@ export class WebServer {
|
||||
private readonly port = 2424
|
||||
) {
|
||||
this.app.set('view engine', 'ejs')
|
||||
this.app.set('views', './views');
|
||||
this.app.set('views', path.join(__dirname, '../views'));
|
||||
|
||||
this.app.get('/', this.getMainPage.bind(this))
|
||||
this.app.get('/check', this.runCheckOnce.bind(this))
|
||||
|
@ -2,7 +2,7 @@
|
||||
"compilerOptions": {
|
||||
"target": "ES2016",
|
||||
"module": "CommonJS",
|
||||
"outDir": "./dist",
|
||||
"outDir": "./build",
|
||||
"esModuleInterop": true,
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"strict": true,
|
||||
|
@ -5,11 +5,23 @@
|
||||
|
||||
<tr>
|
||||
<td class="fw-bold">#<%= metadata.idx + 1 %></td>
|
||||
<td><%= metadata.name %></td>
|
||||
<td>
|
||||
<span
|
||||
class="m-0"
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-placement="bottom"
|
||||
data-bs-title="<%= metadata.description %>">
|
||||
<%= metadata.name %>
|
||||
</span>
|
||||
</td>
|
||||
<td><%= metadata.bestPracticeCategory %></td>
|
||||
|
||||
<td>
|
||||
<span class="badge text-bg-<%= priorityColor %>">
|
||||
<span
|
||||
class="badge text-bg-<%= priorityColor %>"
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-placement="bottom"
|
||||
data-bs-title="<%= metadata.priorityReason %>">
|
||||
<%= metadata.priority %> - <%= priorityLabel %>
|
||||
</span>
|
||||
</td>
|
||||
|
@ -32,7 +32,7 @@
|
||||
<div class="progress-bar progress-bar-striped progress-bar-animated bg-secondary" style="width: 100%"></div>
|
||||
</div>
|
||||
|
||||
<p>Progressing</p>
|
||||
<p class="m-0">Progressing</p>
|
||||
</td>
|
||||
<% } %>
|
||||
|
||||
@ -42,7 +42,7 @@
|
||||
<div class="progress-bar progress-bar-striped bg-danger" style="width: 100%"></div>
|
||||
</div>
|
||||
|
||||
<p>Error</p>
|
||||
<p class="m-0">Error</p>
|
||||
</td>
|
||||
<% } %>
|
||||
|
||||
@ -52,6 +52,6 @@
|
||||
<div class="progress-bar" style="width: 0%"></div>
|
||||
</div>
|
||||
|
||||
<p>Ready</p>
|
||||
<p class="m-0">Ready</p>
|
||||
</td>
|
||||
<% } %>
|
||||
|
Reference in New Issue
Block a user