Skip to content
Snippets Groups Projects
Select Git revision
  • fe739befbf6b914a322ab998283e0d1adb08097c
  • main default protected
  • renovate/main-zod-3.x
  • renovate/main-ghcr.io-renovatebot-base-image-10.x
  • renovate/main-ghcr.io-containerbase-devcontainer-13.x
  • next
  • revert-31645-feat/rename-gradle-wrapper-validation-action
  • renovate/main-redis-5.x
  • fix/36615b-branch-reuse-no-cache
  • chore/punycode
  • fix/36615-branch-reuse-bug
  • refactor/pin-new-value
  • feat/36219--git-x509-signing
  • feat/structured-logger
  • hotfix/39.264.1
  • feat/skip-dangling
  • gh-readonly-queue/next/pr-36034-7a061c4ca1024a19e2c295d773d9642625d1c2be
  • hotfix/39.238.3
  • refactor/gitlab-auto-approve
  • feat/template-strings
  • gh-readonly-queue/next/pr-35654-137d934242c784e0c45d4b957362214f0eade1d7
  • 41.28.2
  • 41.28.1
  • 41.28.0
  • 41.27.1
  • 41.27.0
  • 41.26.2
  • 41.26.1
  • 41.26.0
  • 41.25.1
  • 41.25.0
  • 41.24.0
  • 41.23.5
  • 41.23.4
  • 41.23.3
  • 41.23.2
  • 41.23.1
  • 41.23.0
  • 41.22.0
  • 41.21.4
  • 41.21.3
41 results

index.ts

Blame
  • extract.ts 1.53 KiB
    import is from '@sindresorhus/is';
    import yaml from 'js-yaml';
    import { logger } from '../../logger';
    import { PackageDependency, ExtractConfig, PackageFile } from '../common';
    
    function extractDepFromInclude(includeObj: {
      file: any;
      project: string;
      ref: string;
    }): PackageDependency | null {
      if (!includeObj.file || !includeObj.project) {
        return null;
      }
      const dep: PackageDependency = {
        datasource: 'gitlab',
        depName: includeObj.project,
        depType: 'repository',
      };
      if (!includeObj.ref) {
        dep.skipReason = 'unknown-version';
        return dep;
      }
      dep.currentValue = includeObj.ref;
      return dep;
    }
    
    export function extractPackageFile(
      content: string,
      _packageFile: string,
      config: ExtractConfig
    ): PackageFile | null {
      const deps: PackageDependency[] = [];
      try {
        const doc = yaml.safeLoad(content, { json: true });
        if (doc.include && is.array(doc.include)) {
          for (const includeObj of doc.include) {
            const dep = extractDepFromInclude(includeObj);
            if (dep) {
              if (config.endpoint) {
                dep.registryUrls = [config.endpoint.replace(/\/api\/v4\/?/, '')];
              }
              deps.push(dep);
            }
          }
        }
      } catch (err) /* istanbul ignore next */ {
        if (err.stack && err.stack.startsWith('YAMLException:')) {
          logger.debug({ err });
          logger.info('YAML exception extracting GitLab CI includes');
        } else {
          logger.warn({ err }, 'Error extracting GitLab CI includes');
        }
      }
    
      if (!deps.length) {
        return null;
      }
      return { deps };
    }