[ci] format
This commit is contained in:
parent
44cf30a252
commit
1e9902177d
5 changed files with 41 additions and 36 deletions
|
@ -1,8 +1,8 @@
|
|||
import { color } from '@astrojs/cli-kit';
|
||||
import { shell } from '../shell.js';
|
||||
import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
import { error, info, spinner, title } from '../messages.js';
|
||||
import { shell } from '../shell.js';
|
||||
import type { Context } from './context';
|
||||
|
||||
export async function dependencies(
|
||||
|
|
|
@ -3,8 +3,8 @@ import path from 'node:path';
|
|||
import type { Context } from './context';
|
||||
|
||||
import { color } from '@astrojs/cli-kit';
|
||||
import { shell } from '../shell.js';
|
||||
import { error, info, spinner, title } from '../messages.js';
|
||||
import { shell } from '../shell.js';
|
||||
|
||||
export async function git(ctx: Pick<Context, 'cwd' | 'git' | 'yes' | 'prompt' | 'dryRun'>) {
|
||||
if (fs.existsSync(path.join(ctx.cwd, '.git'))) {
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
/* eslint no-console: 'off' */
|
||||
import { color, say as houston, label, spinner as load } from '@astrojs/cli-kit';
|
||||
import { align, sleep } from '@astrojs/cli-kit/utils';
|
||||
import { shell } from './shell.js';
|
||||
import fetch from 'node-fetch-native';
|
||||
import { exec } from 'node:child_process';
|
||||
import stripAnsi from 'strip-ansi';
|
||||
import detectPackageManager from 'which-pm-runs';
|
||||
import { shell } from './shell.js';
|
||||
|
||||
// Users might lack access to the global npm registry, this function
|
||||
// checks the user's project type and will return the proper npm registry
|
||||
|
|
|
@ -3,42 +3,47 @@
|
|||
import type { StdioOptions } from 'node:child_process';
|
||||
import type { Readable } from 'node:stream';
|
||||
|
||||
import { text as textFromStream } from 'node:stream/consumers';
|
||||
import { spawn } from 'node:child_process';
|
||||
import { text as textFromStream } from 'node:stream/consumers';
|
||||
import { setTimeout as sleep } from 'node:timers/promises';
|
||||
|
||||
export interface ExecaOptions {
|
||||
cwd?: string | URL;
|
||||
stdio?: StdioOptions;
|
||||
timeout?: number;
|
||||
cwd?: string | URL;
|
||||
stdio?: StdioOptions;
|
||||
timeout?: number;
|
||||
}
|
||||
export interface Output {
|
||||
stdout: string;
|
||||
stderr: string;
|
||||
exitCode: number;
|
||||
stdout: string;
|
||||
stderr: string;
|
||||
exitCode: number;
|
||||
}
|
||||
const text = (stream: NodeJS.ReadableStream | Readable | null) => stream ? textFromStream(stream).then(t => t.trimEnd()) : '';
|
||||
const text = (stream: NodeJS.ReadableStream | Readable | null) =>
|
||||
stream ? textFromStream(stream).then((t) => t.trimEnd()) : '';
|
||||
|
||||
export async function shell(command: string, flags: string[], opts: ExecaOptions = {}): Promise<Output> {
|
||||
const controller = opts.timeout ? new AbortController() : undefined;
|
||||
const child = spawn(command, flags, {
|
||||
cwd: opts.cwd,
|
||||
shell: true,
|
||||
stdio: opts.stdio,
|
||||
signal: controller?.signal
|
||||
})
|
||||
const stdout = await text(child.stdout);
|
||||
const stderr = await text(child.stderr);
|
||||
if (opts.timeout) {
|
||||
sleep(opts.timeout).then(() => {
|
||||
controller!.abort();
|
||||
throw { stdout, stderr, exitCode: 1 }
|
||||
})
|
||||
}
|
||||
await new Promise((resolve) => child.on('exit', resolve))
|
||||
const { exitCode } = child;
|
||||
if (exitCode !== 0) {
|
||||
throw { stdout, stderr, exitCode };
|
||||
}
|
||||
return { stdout, stderr, exitCode }
|
||||
export async function shell(
|
||||
command: string,
|
||||
flags: string[],
|
||||
opts: ExecaOptions = {}
|
||||
): Promise<Output> {
|
||||
const controller = opts.timeout ? new AbortController() : undefined;
|
||||
const child = spawn(command, flags, {
|
||||
cwd: opts.cwd,
|
||||
shell: true,
|
||||
stdio: opts.stdio,
|
||||
signal: controller?.signal,
|
||||
});
|
||||
const stdout = await text(child.stdout);
|
||||
const stderr = await text(child.stderr);
|
||||
if (opts.timeout) {
|
||||
sleep(opts.timeout).then(() => {
|
||||
controller!.abort();
|
||||
throw { stdout, stderr, exitCode: 1 };
|
||||
});
|
||||
}
|
||||
await new Promise((resolve) => child.on('exit', resolve));
|
||||
const { exitCode } = child;
|
||||
if (exitCode !== 0) {
|
||||
throw { stdout, stderr, exitCode };
|
||||
}
|
||||
return { stdout, stderr, exitCode };
|
||||
}
|
||||
|
|
|
@ -37,7 +37,7 @@ describe('git initialized', () => {
|
|||
before(async () => {
|
||||
await mkdir(dir, { recursive: true });
|
||||
await writeFile(new URL('./git.json', dir), '{}', { encoding: 'utf8' });
|
||||
})
|
||||
});
|
||||
|
||||
it('already initialized', async () => {
|
||||
const context = {
|
||||
|
@ -53,5 +53,5 @@ describe('git initialized', () => {
|
|||
|
||||
after(() => {
|
||||
rmSync(dir, { recursive: true, force: true });
|
||||
})
|
||||
})
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue