@process-engine/ci_tools
Version:
CI tools for process-engine.io
42 lines (33 loc) • 1.26 kB
text/typescript
import { sh } from '../cli/shell';
export type Dependency = { name: string; version: string }
type DependencyObject = { [name: string]: string }
export function convertToDependencyArray(dependencies: DependencyObject): Dependency[] {
return Object
.entries(dependencies)
.map(([name, version]) => {
return {
name: name,
version: version,
};
});
}
export function getDependencyAsString(dependency: Dependency): string {
return `${dependency.name}@${dependency.version}`;
}
export function getRegistryInfo(packageName: string) {
const registryInfoRaw = sh(`npm view --json ${packageName}`);
return JSON.parse(registryInfoRaw);
}
export function getLatestRevision(packageName: string, baseVersion: string, releaseChannelName: string): string {
const registryInfo = getRegistryInfo(packageName);
const availableVersions = registryInfo.versions as string[];
const versionCandidates = availableVersions
.filter((versionCandidate) => {
if (releaseChannelName === 'stable') {
return versionCandidate === baseVersion;
}
return versionCandidate.startsWith(`${baseVersion}-${releaseChannelName}`);
})
.sort();
return versionCandidates[versionCandidates.length - 1];
}