* feat: Start work on package api * feat: Browser Context Controller * feat: Add packages to cluster metadata feat: Change structure of Package * 🐛 fix: format * 🔨 feat: Add more functions wrapping around Modrinth * 🔨 feat: Start working on browser frontend * feat: BrowserPackage work + markdown support * 🐛 fix: fmt Signed-off-by: Pauline <git@ethanlibs.co> * 🚧 wip: h Signed-off-by: Pauline <git@ethanlibs.co> * feat: Download button for packages for suitable clusters + tweaks * 🚧 wip: markdown and stuff Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: some patches Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: remove react bloat Signed-off-by: Pauline <git@ethanlibs.co> * 🔨 chore(pkg/infer): try to reduce reused code Signed-off-by: Pauline <git@ethanlibs.co> * 🔨 chore: bump deps Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: markdown innerhtml Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: h Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: tweak Signed-off-by: Pauline <git@ethanlibs.co> * 🚧 wip: idk Signed-off-by: Pauline <git@ethanlibs.co> * fix: Gamemode compile error chore: Add missing and remove unused libraries feat: usePreventLeave hook feat: ClusterOverview edit mode continues with navigation (assuming there was a navigation attempt) after pressing Yes or No for save * feat: Add reload clusters button on home page * feat: More information provided to BrowserPackage * fix: Minor fixes (Navbar isActive, Markdown click prevention, Markdown list styling) * 🐛 fix: h Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: highlighting Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: forge modern Signed-off-by: Pauline <git@ethanlibs.co> * 🔨 chore: bump deps Signed-off-by: Pauline <git@ethanlibs.co> * fix: Markdown-it issue + Added promptOpener hook for Markdown links * feat: Made BrowserPackage sidebar sticky * refactor: Package system (not yet in a working state) * 🚧 wip: bump deps temp Signed-off-by: Pauline <git@ethanlibs.co> * feat: Added a package manager * ✨ feature: start prisma work, but it doesnt break anything so we can keep it until its done. also fix some stuff Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: pushing Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: linting Signed-off-by: Pauline <git@ethanlibs.co> * ✨ feature: start ingress integration Signed-off-by: Pauline <git@ethanlibs.co> * feat: Package Manager should work now 👍 * fix: Package manager tracing spam * feat: Added tauri commands for cluster packages format: Auto formatted frontend + backend * 🐛 fix: tmp Signed-off-by: Pauline <git@ethanlibs.co> * 🔨 chore: format Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: specta extension Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: github actions Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: alias Signed-off-by: Pauline <git@ethanlibs.co> * chore: Some tweaks and fixes * chore: Rebase + gitignore bindings.ts * chore: Remove bindings.ts * 🐛 fix: migrate Signed-off-by: Pauline <git@ethanlibs.co> * 🚧 wip: not sure Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: finalize prisma init schema Signed-off-by: Pauline <git@ethanlibs.co> * 🔨 chore: format Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: bump deps Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: system deps Signed-off-by: Pauline <git@ethanlibs.co> * fix: solid-router navigation issue * feat: Added new BrowserMain page * feat: Tweaks + new package list view * 🐛 fix: bump + format (todo: tauri2, etc) Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: devx (fixes #126) Signed-off-by: Pauline <git@ethanlibs.co> * 🔨 chore: migrate to consola Signed-off-by: Pauline <git@ethanlibs.co> --------- Signed-off-by: Pauline <git@ethanlibs.co> Co-authored-by: LynithDev <61880709+LynithDev@users.noreply.github.com>
129 lines
3.2 KiB
TypeScript
129 lines
3.2 KiB
TypeScript
import { tmpdir as getTmpdir } from 'node:os';
|
|
import { promises as fs } from 'node:fs';
|
|
import { env, cwd as getCwd } from 'node:process';
|
|
import { Buffer } from 'node:buffer';
|
|
import { join, relative } from 'pathe';
|
|
import { rmRF } from '@actions/io';
|
|
import { exec } from '@actions/exec';
|
|
import { getInput as getCoreInput, group } from '@actions/core';
|
|
import { installReviewdog } from './installer';
|
|
|
|
const getInput = <T = string>(name: string): T => getCoreInput(name) as T;
|
|
|
|
async function run(): Promise<void> {
|
|
const runnerTmpdir = env.RUNNER_TEMP || getTmpdir();
|
|
const tmpdir = await fs.mkdtemp(join(runnerTmpdir, 'reviewdog-'));
|
|
|
|
const reviewdogVersion = getInput('reviewdog_version') || 'latest';
|
|
const toolName = getInput('tool_name') || 'clippy';
|
|
const clippyFlags = getInput('clippy_flags');
|
|
const clippyDebug = getInput('clippy_debug') || 'false';
|
|
const level = getInput('level') || 'error';
|
|
const reporter = getInput('reporter') || 'github-pr-check';
|
|
const filterMode = getInput('filter_mode') || 'added';
|
|
const failOnError = getInput('fail_on_error') || 'false';
|
|
const reviewdogFlags = getInput('reviewdog_flags');
|
|
const workdir = getInput('workdir') || '.';
|
|
const cwd = relative(env.GITHUB_WORKSPACE || getCwd(), workdir);
|
|
const reviewdog = await group('installing reviewdog', async () => await installReviewdog(reviewdogVersion, tmpdir));
|
|
|
|
const output: string[] = [];
|
|
await exec(
|
|
'cargo',
|
|
[
|
|
'+nightly',
|
|
'clippy',
|
|
'--color',
|
|
'never',
|
|
'-q',
|
|
'--message-format',
|
|
'json',
|
|
...parse(clippyFlags),
|
|
],
|
|
{
|
|
cwd,
|
|
ignoreReturnCode: true,
|
|
silent: clippyDebug !== 'true',
|
|
listeners: {
|
|
stdline: (data) => {
|
|
const content: CompilerMessage = JSON.parse(data);
|
|
|
|
if (content.reason !== 'compiler-message')
|
|
return;
|
|
|
|
if (content.message.code === null)
|
|
return;
|
|
|
|
const span = content.message.spans[0]!;
|
|
const messageLevel = content.message.level === 'warning' ? 'w' : 'e';
|
|
const rendered = reporter === 'github-pr-review'
|
|
? ` \n<pre><code>${content.message.rendered}</code></pre>\n__END__`
|
|
: `${content.message.rendered}\n__END__`;
|
|
const ret = `${span.file_name}:${span.line_start}:${span.column_start}:${messageLevel}:${rendered}`;
|
|
output.push(ret);
|
|
},
|
|
},
|
|
},
|
|
);
|
|
|
|
env.REVIEWDOG_GITHUB_API_TOKEN = getInput('github_token');
|
|
await exec(
|
|
reviewdog,
|
|
[
|
|
'-efm=<pre><code>%E%f:%l:%c:%t:%m',
|
|
'-efm=%E%f:%l:%c:%t:%m',
|
|
'-efm=%Z__END__',
|
|
'-efm=%C%m</code></pre>',
|
|
'-efm=%C%m',
|
|
'-efm=%C',
|
|
`-name=${toolName}`,
|
|
`-reporter=${reporter}`,
|
|
`-filter-mode=${filterMode}`,
|
|
`-fail-on-error=${failOnError}`,
|
|
`-level=${level}`,
|
|
...parse(reviewdogFlags),
|
|
],
|
|
{
|
|
cwd,
|
|
input: Buffer.from(output.join('\n'), 'utf-8'),
|
|
ignoreReturnCode: true,
|
|
},
|
|
);
|
|
|
|
await rmRF(tmpdir);
|
|
}
|
|
|
|
function parse(flags: string): string[] {
|
|
flags = flags.trim();
|
|
if (flags === '')
|
|
return [];
|
|
|
|
return flags.split(/\s+/);
|
|
}
|
|
|
|
interface CompilerMessage {
|
|
reason: string;
|
|
message: {
|
|
code: Code;
|
|
level: string;
|
|
message: string;
|
|
rendered: string;
|
|
spans: Span[];
|
|
};
|
|
}
|
|
|
|
interface Code {
|
|
code: string;
|
|
explanation?: string;
|
|
}
|
|
|
|
interface Span {
|
|
file_name: string;
|
|
is_primary: boolean;
|
|
line_start: number;
|
|
line_end: number;
|
|
column_start: number;
|
|
column_end: number;
|
|
}
|
|
|
|
run();
|