summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/create-astro/src/actions/dependencies.ts2
-rw-r--r--packages/create-astro/src/actions/git.ts2
-rw-r--r--packages/create-astro/src/messages.ts2
-rw-r--r--packages/create-astro/src/shell.ts65
-rw-r--r--packages/create-astro/test/git.test.js6
5 files changed, 41 insertions, 36 deletions
diff --git a/packages/create-astro/src/actions/dependencies.ts b/packages/create-astro/src/actions/dependencies.ts
index bf46d5d5f..339e3379f 100644
--- a/packages/create-astro/src/actions/dependencies.ts
+++ b/packages/create-astro/src/actions/dependencies.ts
@@ -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(
diff --git a/packages/create-astro/src/actions/git.ts b/packages/create-astro/src/actions/git.ts
index 9711387b4..c2a59b0b3 100644
--- a/packages/create-astro/src/actions/git.ts
+++ b/packages/create-astro/src/actions/git.ts
@@ -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'))) {
diff --git a/packages/create-astro/src/messages.ts b/packages/create-astro/src/messages.ts
index da2c08f1d..89ccddcdb 100644
--- a/packages/create-astro/src/messages.ts
+++ b/packages/create-astro/src/messages.ts
@@ -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
diff --git a/packages/create-astro/src/shell.ts b/packages/create-astro/src/shell.ts
index 4941d788c..d2d7ef033 100644
--- a/packages/create-astro/src/shell.ts
+++ b/packages/create-astro/src/shell.ts
@@ -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 };
}
diff --git a/packages/create-astro/test/git.test.js b/packages/create-astro/test/git.test.js
index 0ba14c56b..d05ad5bdc 100644
--- a/packages/create-astro/test/git.test.js
+++ b/packages/create-astro/test/git.test.js
@@ -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 });
- })
-})
+ });
+});