Fix type check issues

This commit is contained in:
Reinier Criel 2025-11-03 07:13:36 -08:00
parent 3d98bb5084
commit a2fb94d0f0
8 changed files with 60 additions and 4 deletions

View file

@ -7,7 +7,13 @@ import {
pipWheelCommand,
} from "./utils/pipCommands.js";
/**
* @param {string} [command]
*/
export function createPipPackageManager(command = "pip") {
/**
* @param {string[]} args
*/
function isSupportedCommand(args) {
const scanner = findDependencyScannerForCommand(
commandScannerMapping,
@ -16,6 +22,9 @@ export function createPipPackageManager(command = "pip") {
return scanner.shouldScan(args);
}
/**
* @param {string[]} args
*/
function getDependencyUpdatesForCommand(args) {
const scanner = findDependencyScannerForCommand(
commandScannerMapping,
@ -25,7 +34,7 @@ export function createPipPackageManager(command = "pip") {
}
return {
runCommand: (args) => runPip(command, args),
runCommand: /** @param {string[]} args */ (args) => runPip(command, args),
isSupportedCommand,
getDependencyUpdatesForCommand,
};
@ -43,6 +52,10 @@ const NULL_SCANNER = {
scan: () => [],
};
/**
* @param {Record<string, any>} scanners
* @param {string[]} args
*/
function findDependencyScannerForCommand(scanners, args) {
const command = getPipCommandForArgs(args);
if (!command) {

View file

@ -1,13 +1,22 @@
import { parsePackagesFromInstallArgs } from "../parsing/parsePackagesFromInstallArgs.js";
import { hasDryRunArg } from "../utils/pipCommands.js";
/**
* @param {{ ignoreDryRun?: boolean }} [options]
*/
export function commandArgumentScanner(options = {}) {
const { ignoreDryRun = false } = options;
/**
* @param {string[]} args
*/
function shouldScan(args) {
return shouldScanDependencies(args, ignoreDryRun);
}
/**
* @param {string[]} args
*/
function scan(args) {
return scanDependencies(args);
}
@ -18,14 +27,24 @@ export function commandArgumentScanner(options = {}) {
};
}
/**
* @param {string[]} args
* @param {boolean} ignoreDryRun
*/
function shouldScanDependencies(args, ignoreDryRun) {
return ignoreDryRun || !hasDryRunArg(args);
}
/**
* @param {string[]} args
*/
function scanDependencies(args) {
return checkChangesFromArgs(args);
}
/**
* @param {string[]} args
*/
export function checkChangesFromArgs(args) {
const packageUpdates = parsePackagesFromInstallArgs(args);

View file

@ -14,6 +14,9 @@
* - git+https://... (VCS URLs - returned without version)
* - -r requirements.txt (handled by flag skipping)
*/
/**
* @param {string[]} args
*/
export function parsePackagesFromInstallArgs(args) {
const packages = [];
let skipNext = false;
@ -48,6 +51,9 @@ export function parsePackagesFromInstallArgs(args) {
return packages;
}
/**
* @param {string} arg
*/
function isPipOptionWithParameter(arg) {
// Check if a pip flag takes a parameter
@ -100,6 +106,9 @@ function isPipOptionWithParameter(arg) {
return optionsWithParameters.includes(arg);
}
/**
* @param {string} spec
*/
function parsePipSpec(spec) {
// Ignore obvious URLs and paths, rely on mitm scanner
const lower = spec.toLowerCase();

View file

@ -2,6 +2,9 @@ export const pipInstallCommand = "install";
export const pipDownloadCommand = "download";
export const pipWheelCommand = "wheel";
/**
* @param {string[]} args
*/
export function getPipCommandForArgs(args) {
if (!args || args.length === 0) {
return null;
@ -17,6 +20,9 @@ export function getPipCommandForArgs(args) {
return null;
}
/**
* @param {string[]} args
*/
export function hasDryRunArg(args) {
return args.some((arg) => arg === "--dry-run");
return args.some(/** @param {string} arg */ (arg) => arg === "--dry-run");
}