Skip to content
Snippets Groups Projects
Select Git revision
  • v0.16.2-gitlab.15-rc1
  • main default
  • bugfix/update-govmomi-for-vsphere-8
  • faleksic-main-patch-45738
  • sh-debug-docker-restart-error
  • mb-update-download-link-2024-01-31
  • il-central-1
  • update-aws-govcloud-regions
  • ajwalker/golang-upgrade
  • main-patch-3e07
  • dbickford-add-darwin-arm64-build
  • darren-patch-docs
  • debug-ssh-connections
  • DarrenEastman-main-patch-57526
  • add-command-for-base-certificates-regeneration
  • ak/go-modules
  • linux-s390x
  • contribution-warning
  • nelbacha-master-patch-89734
  • gitlab-0-14-0-release
  • test-longer-creation-waiting-time-for-DO
  • v0.16.2-gitlab.25
  • v0.16.2-gitlab.24
  • v0.16.2-gitlab.23
  • v0.16.2-gitlab.22
  • v0.16.2-gitlab.21
  • v0.16.2-gitlab.20
  • v0.16.2-gitlab.19
  • v0.16.2-gitlab.18
  • v0.16.2-gitlab.17
  • v0.16.2-gitlab.16
  • v0.16.2-gitlab.15
  • v0.16.2-gitlab.15-rc2
  • v0.16.2-gitlab.14
  • v0.16.2-gitlab.13
  • v0.16.2-gitlab.12
  • v0.16.2-gitlab.11
  • v0.16.2-gitlab.10
  • v0.16.2-gitlab.9
  • v0.16.2-gitlab.8
40 results

appveyor.yml

Blame
  • v2.ts 2.08 KiB
    import { XmlDocument, XmlElement } from 'xmldoc';
    import { logger } from '../../logger';
    import { Http } from '../../util/http';
    import { ReleaseResult } from '../common';
    
    import { id } from './common';
    
    const http = new Http(id);
    
    function getPkgProp(pkgInfo: XmlElement, propName: string): string {
      return pkgInfo.childNamed('m:properties').childNamed(`d:${propName}`)?.val;
    }
    
    export async function getReleases(
      feedUrl: string,
      pkgName: string
    ): Promise<ReleaseResult | null> {
      const dep: ReleaseResult = {
        pkgName,
        releases: [],
      };
      try {
        let pkgUrlList = `${feedUrl}/FindPackagesById()?id=%27${pkgName}%27&$select=Version,IsLatestVersion,ProjectUrl`;
        do {
          const pkgVersionsListRaw = await http.get(pkgUrlList);
          const pkgVersionsListDoc = new XmlDocument(pkgVersionsListRaw.body);
    
          const pkgInfoList = pkgVersionsListDoc.childrenNamed('entry');
    
          for (const pkgInfo of pkgInfoList) {
            const pkgVersion = getPkgProp(pkgInfo, 'Version');
            dep.releases.push({
              version: pkgVersion,
            });
            try {
              const pkgIsLatestVersion = getPkgProp(pkgInfo, 'IsLatestVersion');
              if (pkgIsLatestVersion === 'true') {
                const projectUrl = getPkgProp(pkgInfo, 'ProjectUrl');
                if (projectUrl) {
                  dep.sourceUrl = projectUrl;
                }
              }
            } catch (err) /* istanbul ignore next */ {
              logger.debug(
                { err, pkgName, feedUrl },
                `nuget registry failure: can't parse pkg info for project url`
              );
            }
          }
    
          const nextPkgUrlListLink = pkgVersionsListDoc
            .childrenNamed('link')
            .find((node) => node.attr.rel === 'next');
    
          pkgUrlList = nextPkgUrlListLink ? nextPkgUrlListLink.attr.href : null;
        } while (pkgUrlList !== null);
    
        // dep not found if no release, so we can try next registry
        if (dep.releases.length === 0) {
          return null;
        }
    
        return dep;
      } catch (err) {
        logger.debug(
          { err, pkgName, feedUrl },
          'nuget registry failure: Unknown error'
        );
        return null;
      }
    }