mirror of
https://github.com/compiler-explorer/compiler-explorer.git
synced 2026-05-16 12:33:04 -04:00
Enable Biome's `organizeImports` with groups matching the original ESLint `import/order` configuration: 1. **Node builtins** (`node:fs`, `path`, etc.) 2. *(blank line)* 3. **Third-party packages** (`express`, `@sentry/node`, etc.) 4. *(blank line)* 5. **Local/relative imports** (`../foo.js`, `./bar.js`, aliases) This resolves the inconsistency where Biome wasn't enforcing import grouping, meaning new files would lose the blank-line separation that the old ESLint config enforced. ### Impact - **354 files** updated out of 738 checked (~48%) - **+188 / -240 lines** (net -52) — almost entirely single blank line additions/removals between import groups - No import reordering; purely group separator consistency Fixes #7373 🤖 Generated by LLM (Claude, via OpenClaw)
101 lines
3.5 KiB
TypeScript
101 lines
3.5 KiB
TypeScript
import path from 'node:path';
|
|
|
|
import Semver from 'semver';
|
|
|
|
import {splitArguments} from '../../shared/common-utils.js';
|
|
import type {
|
|
ActiveTool,
|
|
BypassCache,
|
|
ExecutionParams,
|
|
FiledataPair,
|
|
} from '../../types/compilation/compilation.interfaces.js';
|
|
import type {ConfiguredOverrides} from '../../types/compilation/compiler-overrides.interfaces.js';
|
|
import type {BasicExecutionResult, ExecutableExecutionOptions} from '../../types/execution/execution.interfaces.js';
|
|
import type {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces.js';
|
|
import type {SelectedLibraryVersion} from '../../types/libraries/libraries.interfaces.js';
|
|
import {BaseCompiler} from '../base-compiler.js';
|
|
import type {IExecutionEnvironment} from '../execution/execution-env.interfaces.js';
|
|
|
|
export class MicroPythonCompiler extends BaseCompiler {
|
|
static get key() {
|
|
return 'micropython';
|
|
}
|
|
|
|
override getOutputFilename(dirPath: string) {
|
|
return path.join(dirPath, `${path.basename(this.compileFilename, this.lang.extensions[0])}.mpy`);
|
|
}
|
|
|
|
override prepareArguments(
|
|
userOptions: string[],
|
|
filters: ParseFiltersAndOutputOptions,
|
|
backendOptions: Record<string, any>,
|
|
inputFilename: string,
|
|
outputFilename: string,
|
|
libraries: SelectedLibraryVersion[],
|
|
overrides: ConfiguredOverrides,
|
|
) {
|
|
if (Semver.eq(this.compiler.semver, '1.20.0')) {
|
|
return [
|
|
...['-o', outputFilename],
|
|
...(filters.dontMaskFilenames ? [] : ['-s', this.compileFilename]),
|
|
...(this.compiler.options ? splitArguments(this.compiler.options) : []),
|
|
...userOptions,
|
|
...[inputFilename],
|
|
];
|
|
} else {
|
|
return [
|
|
...['-o', outputFilename],
|
|
...(filters.dontMaskFilenames ? [] : ['-s', this.compileFilename]),
|
|
...(this.compiler.options ? splitArguments(this.compiler.options) : []),
|
|
...userOptions,
|
|
...['--', inputFilename],
|
|
];
|
|
}
|
|
}
|
|
|
|
override async compile(
|
|
source: string,
|
|
options: string[],
|
|
backendOptions: Record<string, any>,
|
|
filters: ParseFiltersAndOutputOptions,
|
|
bypassCache: BypassCache,
|
|
tools: ActiveTool[],
|
|
executeParameters: ExecutionParams,
|
|
libraries: SelectedLibraryVersion[],
|
|
files: FiledataPair[],
|
|
) {
|
|
filters.binary = true;
|
|
return super.compile(
|
|
source,
|
|
options,
|
|
backendOptions,
|
|
filters,
|
|
bypassCache,
|
|
tools,
|
|
executeParameters,
|
|
libraries,
|
|
files,
|
|
);
|
|
}
|
|
|
|
override async runExecutable(
|
|
executable: string,
|
|
executeParameters: ExecutableExecutionOptions,
|
|
homeDir: string,
|
|
): Promise<BasicExecutionResult> {
|
|
const execOptionsCopy: ExecutableExecutionOptions = JSON.parse(
|
|
JSON.stringify(executeParameters),
|
|
) as ExecutableExecutionOptions;
|
|
|
|
execOptionsCopy.args = [
|
|
...this.compiler.executionWrapperArgs,
|
|
...['-m', path.basename(executable, '.mpy')],
|
|
...execOptionsCopy.args,
|
|
];
|
|
executable = this.compiler.executionWrapper;
|
|
|
|
const execEnv: IExecutionEnvironment = new this.executionEnvironmentClass(this.env);
|
|
return execEnv.execBinary(executable, execOptionsCopy, homeDir);
|
|
}
|
|
}
|