T3MP3ST public launch build

This commit is contained in:
t3mp3st contributors committed 2026-07-03 10:57:20 -04:00
1 parent 972247b881
commit 184c7d4e59
1589 files changed
+57150 -506

No files matched your search

@@ -0,0 +1,110 @@
import { join, resolve } from 'node:path';
import createdLogger from 'debug';
import { whichPackageManager } from 'which-package-manager';
import { execa } from 'execa';
import type { MemFsEditorFile } from 'mem-fs-editor';
import type { InputOutputAdapter } from '@yeoman/types';
import type { Store } from 'mem-fs';
const debug = createdLogger('yeoman:environment:package-manager');
export type InstallTask = (nodePackageManager: string | undefined, defaultTask: () => Promise<boolean>) => void | Promise<void>;
export type PackageManagerInstallTaskOptions = {
memFs: Store<MemFsEditorFile>;
packageJsonLocation: string;
adapter: InputOutputAdapter;
nodePackageManager?: string;
customInstallTask?: boolean | InstallTask;
skipInstall?: boolean;
};
/**
* Executes package manager install.
* - checks if package.json was committed.
* - uses a preferred package manager or try to detect.
* @return {Promise<boolean>} Promise true if the install execution suceeded.
*/
/*
const { customInstallTask } = this.composedStore;
packageJsonFile: join(this.cwd, 'package.json');
*/
export async function packageManagerInstallTask({
memFs,
packageJsonLocation,
customInstallTask,
adapter,
nodePackageManager,
skipInstall,
}: PackageManagerInstallTaskOptions) {
debug('Running packageManagerInstallTask');
packageJsonLocation = resolve(packageJsonLocation);
/**
* @private
* Get the destination package.json file.
* @return {Vinyl | undefined} a Vinyl file.
*/
function getDestinationPackageJson() {
return memFs.get(join(packageJsonLocation, 'package.json'));
}
/**
* @private
* Get the destination package.json commit status.
* @return {boolean} package.json commit status.
*/
function isDestinationPackageJsonCommitted() {
const file = getDestinationPackageJson();
return file.committed;
}
if (!getDestinationPackageJson()) {
return false;
}
if (customInstallTask && typeof customInstallTask !== 'function') {
debug('Install disabled by customInstallTask');
return false;
}
if (!isDestinationPackageJsonCommitted()) {
adapter.log(`
No change to package.json was detected. No package manager install will be executed.`);
return false;
}
adapter.log(`
Changes to package.json were detected.`);
if (skipInstall) {
adapter.log(`Skipping package manager install.
`);
return false;
}
let packageManagerName = nodePackageManager ?? (await whichPackageManager({ cwd: packageJsonLocation }));
const execPackageManager = async () => {
if (!packageManagerName) {
packageManagerName = 'npm';
adapter.log('Error detecting the package manager. Falling back to npm.');
}
if (!['npm', 'yarn', 'pnpm', 'bun'].includes(packageManagerName)) {
adapter.log(`${packageManagerName} is not a supported package manager. Run it by yourself.`);
return false;
}
adapter.log(`
Running ${packageManagerName} install for you to install the required dependencies.`);
await execa(packageManagerName, ['install'], { stdio: 'inherit', cwd: packageJsonLocation });
return true;
};
if (customInstallTask) {
return customInstallTask(packageManagerName, execPackageManager);
}
return execPackageManager();
}