apollo-elements/apollo-elements

View on GitHub
packages/create/test/commands.ts

Summary

Maintainability
C
7 hrs
Test Coverage
import { execaCommand } from 'execa';
import { normalize } from 'path';

const filePath = new URL(normalize('../bin/main.js'), import.meta.url).pathname;

const appFlags = [
  '--no-install',
  '--no-start',
  '--overwrite',
  '--package-defaults',
  '--uri /graphql',
  '--silent',
];

const componentFlags = [
  '--name x-l',
  '--no-edit',
  '--no-subdir',
  '--no-codegen',
  '--operation-name X',
  '--type query',
  `--fields 'y(input: $input) { z }'`,
  `--variables '$input: Input'`,
  '--silent',
];

export async function scaffoldApp(cwd: string): Promise<void> {
  const proc = execaCommand(`node ${filePath} app --directory ${cwd} ${appFlags.join(' ')}`, { shell: 'sh' });
  proc.stdout?.pipe(process.stdout);
  proc.stderr?.pipe(process.stderr);
  await proc;
}

export async function scaffoldComponent(cwd: string): Promise<void> {
  const proc = execaCommand(`node ${filePath} component --directory ${cwd} ${componentFlags.join(' ')}`, { shell: 'sh' });
  proc.stdout?.pipe(process.stdout);
  proc.stderr?.pipe(process.stderr);
  await proc;
}