Better parsing of outputs
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									fb848139a7
								
							
						
					
					
						commit
						75727aa23f
					
				
							
								
								
									
										36
									
								
								dist/index.js
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										36
									
								
								dist/index.js
									
									
									
										generated
									
									
										vendored
									
									
								
							@ -5327,7 +5327,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
 | 
			
		||||
    return (mod && mod.__esModule) ? mod : { "default": mod };
 | 
			
		||||
};
 | 
			
		||||
Object.defineProperty(exports, "__esModule", { value: true });
 | 
			
		||||
exports.parseVersion = exports.getVersion = exports.isAvailable = exports.getSecret = exports.getImageID = exports.getImageIDFile = void 0;
 | 
			
		||||
exports.parseVersion = exports.getVersion = exports.isAvailable = exports.hasGitAuthToken = exports.isLocalOrTarExporter = exports.getSecret = exports.getImageID = exports.getImageIDFile = void 0;
 | 
			
		||||
const fs_1 = __importDefault(__webpack_require__(747));
 | 
			
		||||
const path_1 = __importDefault(__webpack_require__(622));
 | 
			
		||||
const semver = __importStar(__webpack_require__(383));
 | 
			
		||||
@ -5360,6 +5360,26 @@ function getSecret(kvp) {
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
exports.getSecret = getSecret;
 | 
			
		||||
function isLocalOrTarExporter(outputs) {
 | 
			
		||||
    for (let output of outputs) {
 | 
			
		||||
        for (let [key, value] of output.split(/\s*,\s*/).map(chunk => chunk.split('='))) {
 | 
			
		||||
            if (key == 'type' && (value == 'local' || value == 'tar')) {
 | 
			
		||||
                return true;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
exports.isLocalOrTarExporter = isLocalOrTarExporter;
 | 
			
		||||
function hasGitAuthToken(secrets) {
 | 
			
		||||
    for (let secret of secrets) {
 | 
			
		||||
        if (secret.startsWith('GIT_AUTH_TOKEN=')) {
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
exports.hasGitAuthToken = hasGitAuthToken;
 | 
			
		||||
function isAvailable() {
 | 
			
		||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
        return yield exec.exec(`docker`, ['buildx'], true).then(res => {
 | 
			
		||||
@ -13692,15 +13712,13 @@ function getBuildArgs(inputs, defaultContext, buildxVersion) {
 | 
			
		||||
        if (inputs.platforms.length > 0) {
 | 
			
		||||
            args.push('--platform', inputs.platforms.join(','));
 | 
			
		||||
        }
 | 
			
		||||
        let isLocalOrTarExporter = false;
 | 
			
		||||
        yield exports.asyncForEach(inputs.outputs, (output) => __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
            if (output.startsWith('type=local') || output.startsWith('type=tar')) {
 | 
			
		||||
                isLocalOrTarExporter = true;
 | 
			
		||||
            }
 | 
			
		||||
            args.push('--output', output);
 | 
			
		||||
        }));
 | 
			
		||||
        // TODO: Remove platforms length cond when buildx >0.4.2 available on runner (docker/buildx#351)
 | 
			
		||||
        if (inputs.platforms.length == 0 && !isLocalOrTarExporter && semver.satisfies(buildxVersion, '>=0.4.2')) {
 | 
			
		||||
        if (inputs.platforms.length == 0 &&
 | 
			
		||||
            !buildx.isLocalOrTarExporter(inputs.outputs) &&
 | 
			
		||||
            semver.satisfies(buildxVersion, '>=0.4.2')) {
 | 
			
		||||
            args.push('--iidfile', yield buildx.getImageIDFile());
 | 
			
		||||
        }
 | 
			
		||||
        yield exports.asyncForEach(inputs.cacheFrom, (cacheFrom) => __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
@ -13709,14 +13727,10 @@ function getBuildArgs(inputs, defaultContext, buildxVersion) {
 | 
			
		||||
        yield exports.asyncForEach(inputs.cacheTo, (cacheTo) => __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
            args.push('--cache-to', cacheTo);
 | 
			
		||||
        }));
 | 
			
		||||
        let hasGitAuthToken = false;
 | 
			
		||||
        yield exports.asyncForEach(inputs.secrets, (secret) => __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
            if (secret.startsWith('GIT_AUTH_TOKEN=')) {
 | 
			
		||||
                hasGitAuthToken = true;
 | 
			
		||||
            }
 | 
			
		||||
            args.push('--secret', yield buildx.getSecret(secret));
 | 
			
		||||
        }));
 | 
			
		||||
        if (inputs.githubToken && !hasGitAuthToken && inputs.context == defaultContext) {
 | 
			
		||||
        if (inputs.githubToken && !buildx.hasGitAuthToken(inputs.secrets) && inputs.context == defaultContext) {
 | 
			
		||||
            args.push('--secret', yield buildx.getSecret(`GIT_AUTH_TOKEN=${inputs.githubToken}`));
 | 
			
		||||
        }
 | 
			
		||||
        if (inputs.file) {
 | 
			
		||||
 | 
			
		||||
@ -25,6 +25,26 @@ export async function getSecret(kvp: string): Promise<string> {
 | 
			
		||||
  return `id=${key},src=${secretFile}`;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function isLocalOrTarExporter(outputs: string[]): Boolean {
 | 
			
		||||
  for (let output of outputs) {
 | 
			
		||||
    for (let [key, value] of output.split(/\s*,\s*/).map(chunk => chunk.split('='))) {
 | 
			
		||||
      if (key == 'type' && (value == 'local' || value == 'tar')) {
 | 
			
		||||
        return true;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function hasGitAuthToken(secrets: string[]): Boolean {
 | 
			
		||||
  for (let secret of secrets) {
 | 
			
		||||
    if (secret.startsWith('GIT_AUTH_TOKEN=')) {
 | 
			
		||||
      return true;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export async function isAvailable(): Promise<Boolean> {
 | 
			
		||||
  return await exec.exec(`docker`, ['buildx'], true).then(res => {
 | 
			
		||||
    if (res.stderr != '' && !res.success) {
 | 
			
		||||
 | 
			
		||||
@ -93,15 +93,15 @@ async function getBuildArgs(inputs: Inputs, defaultContext: string, buildxVersio
 | 
			
		||||
  if (inputs.platforms.length > 0) {
 | 
			
		||||
    args.push('--platform', inputs.platforms.join(','));
 | 
			
		||||
  }
 | 
			
		||||
  let isLocalOrTarExporter: boolean = false;
 | 
			
		||||
  await asyncForEach(inputs.outputs, async output => {
 | 
			
		||||
    if (output.startsWith('type=local') || output.startsWith('type=tar')) {
 | 
			
		||||
      isLocalOrTarExporter = true;
 | 
			
		||||
    }
 | 
			
		||||
    args.push('--output', output);
 | 
			
		||||
  });
 | 
			
		||||
  // TODO: Remove platforms length cond when buildx >0.4.2 available on runner (docker/buildx#351)
 | 
			
		||||
  if (inputs.platforms.length == 0 && !isLocalOrTarExporter && semver.satisfies(buildxVersion, '>=0.4.2')) {
 | 
			
		||||
  if (
 | 
			
		||||
    inputs.platforms.length == 0 &&
 | 
			
		||||
    !buildx.isLocalOrTarExporter(inputs.outputs) &&
 | 
			
		||||
    semver.satisfies(buildxVersion, '>=0.4.2')
 | 
			
		||||
  ) {
 | 
			
		||||
    args.push('--iidfile', await buildx.getImageIDFile());
 | 
			
		||||
  }
 | 
			
		||||
  await asyncForEach(inputs.cacheFrom, async cacheFrom => {
 | 
			
		||||
@ -110,14 +110,10 @@ async function getBuildArgs(inputs: Inputs, defaultContext: string, buildxVersio
 | 
			
		||||
  await asyncForEach(inputs.cacheTo, async cacheTo => {
 | 
			
		||||
    args.push('--cache-to', cacheTo);
 | 
			
		||||
  });
 | 
			
		||||
  let hasGitAuthToken: boolean = false;
 | 
			
		||||
  await asyncForEach(inputs.secrets, async secret => {
 | 
			
		||||
    if (secret.startsWith('GIT_AUTH_TOKEN=')) {
 | 
			
		||||
      hasGitAuthToken = true;
 | 
			
		||||
    }
 | 
			
		||||
    args.push('--secret', await buildx.getSecret(secret));
 | 
			
		||||
  });
 | 
			
		||||
  if (inputs.githubToken && !hasGitAuthToken && inputs.context == defaultContext) {
 | 
			
		||||
  if (inputs.githubToken && !buildx.hasGitAuthToken(inputs.secrets) && inputs.context == defaultContext) {
 | 
			
		||||
    args.push('--secret', await buildx.getSecret(`GIT_AUTH_TOKEN=${inputs.githubToken}`));
 | 
			
		||||
  }
 | 
			
		||||
  if (inputs.file) {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user