Select Git revision
-
Michael Kriese authored
Co-authored-by:
HonkingGoose <34918129+HonkingGoose@users.noreply.github.com> Co-authored-by:
Rhys Arkins <rhys@arkins.net>
Michael Kriese authoredCo-authored-by:
HonkingGoose <34918129+HonkingGoose@users.noreply.github.com> Co-authored-by:
Rhys Arkins <rhys@arkins.net>
utils.ts 3.58 KiB
import { quote } from 'shlex';
import { GlobalConfig } from '../../../config/global';
import { logger } from '../../../logger';
import type { ToolConstraint } from '../../../util/exec/types';
import { api, id as composerVersioningId } from '../../versioning/composer';
import type { UpdateArtifactsConfig } from '../types';
import type { ComposerConfig, ComposerLock } from './types';
export { composerVersioningId };
const depRequireInstall = new Set(['symfony/flex']);
export function getComposerArguments(
config: UpdateArtifactsConfig,
toolConstraint: ToolConstraint
): string {
let args = '';
if (config.composerIgnorePlatformReqs) {
if (config.composerIgnorePlatformReqs.length === 0) {
// TODO: toolConstraint.constraint can be null or undefined?
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
const major = api.getMajor(toolConstraint.constraint!);
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
const minor = api.getMinor(toolConstraint.constraint!);
args += api.matches(`${major}.${minor}`, '^2.2')
? " --ignore-platform-req='ext-*' --ignore-platform-req='lib-*'"
: ' --ignore-platform-reqs';
} else {
config.composerIgnorePlatformReqs.forEach((req) => {
args += ' --ignore-platform-req ' + quote(req);
});
}
}
args += ' --no-ansi --no-interaction';
if (!GlobalConfig.get('allowScripts') || config.ignoreScripts) {
args += ' --no-scripts --no-autoloader';
}
if (!GlobalConfig.get('allowPlugins') || config.ignorePlugins) {
args += ' --no-plugins';
}
return args;
}
export function getPhpConstraint(
constraints: Record<string, string>
): string | null {
const { php } = constraints;
if (php) {
logger.debug('Using php constraint from config');
return php;
}
return null;
}
export function requireComposerDependencyInstallation(
lock: ComposerLock
): boolean {
return (
lock.packages?.some((p) => depRequireInstall.has(p.name)) === true ||
lock['packages-dev']?.some((p) => depRequireInstall.has(p.name)) === true
);
}
export function extractContraints(