| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- import * as path from 'node:path';
- import { Client, Inputs, allClients } from './getInputs';
- import { Language } from './getLanguage';
- import {
- PackageManager,
- getPackageManager,
- getPackageManagerCommand,
- } from './getPackageManager';
- import { toMinorSolanaVersion } from './solanaCli';
- export type RenderContext = Omit<Inputs, 'programAddress' | 'solanaVersion'> & {
- anchorVersion: string;
- clientDirectory: string;
- clients: Client[];
- currentDirectory: string;
- getNpmCommand: (scriptName: string, args?: string) => string;
- language: Language;
- programAddress: string;
- programDirectory: string;
- packageManager: PackageManager;
- solanaVersion: string;
- solanaVersionDetected: string;
- targetDirectory: string;
- templateDirectory: string;
- };
- export function getRenderContext({
- inputs,
- language,
- programAddress,
- solanaVersionDetected,
- anchorVersionDetected,
- }: {
- inputs: Inputs;
- language: Language;
- programAddress: string;
- solanaVersionDetected: string;
- anchorVersionDetected?: string;
- }): RenderContext {
- const packageManager = getPackageManager();
- const clients = allClients.flatMap((client) =>
- inputs[`${client}Client`] ? [client] : []
- );
- const getNpmCommand: RenderContext['getNpmCommand'] = (...args) =>
- getPackageManagerCommand(packageManager, ...args);
- // Directories.
- const templateDirectory = path.resolve(__dirname, 'template');
- const currentDirectory = process.cwd();
- const targetDirectory = path.join(
- currentDirectory,
- inputs.targetDirectoryName
- );
- const programDirectory = path.join(targetDirectory, 'program');
- const clientDirectory = path.join(targetDirectory, 'client');
- return {
- ...inputs,
- anchorVersion: anchorVersionDetected ?? '',
- clientDirectory,
- clients,
- currentDirectory,
- getNpmCommand,
- language,
- packageManager,
- programAddress,
- programDirectory,
- solanaVersion:
- inputs.solanaVersion ??
- toMinorSolanaVersion(language, solanaVersionDetected),
- solanaVersionDetected,
- targetDirectory,
- templateDirectory,
- };
- }
|