async function findMatch()

in src/installer.ts [77:107]


async function findMatch(
  versionSpec: string,
  osFileName: string,
  token: string
): Promise<IBazeliskVersion | undefined> {
  let versions = new Map<string, IBazeliskVersion>();
  let bazeliskVersions = await getVersionsFromDist(token);

  bazeliskVersions.forEach((bazeliskVersion: IBazeliskVersion) => {
    const hasRelevantAsset: boolean = bazeliskVersion.assets.some(
      (asset: IBazeliskAsset) => {
        return asset.name == osFileName;
      }
    );
    if (hasRelevantAsset) {
      const version: semver.SemVer | null = semver.coerce(
        bazeliskVersion.tag_name
      );
      if (version) {
        versions.set(version.version, bazeliskVersion);
      }
    }
  });

  // get the latest version that matches the version spec
  let version: string = evaluateVersions(
    Array.from(versions.keys()),
    versionSpec
  );
  return versions.get(version);
}