Lint the workflow parser package

This commit is contained in:
Josh Gross
2023-03-17 11:17:18 -04:00
parent ac5b14b4c0
commit 272dec83ce
15 changed files with 47 additions and 41 deletions
@@ -12,7 +12,7 @@ export function convertToJobContainer(context: TemplateContext, container: Templ
// Skip validation for expressions for now to match
// behavior of the other parsers
for (const [_, token, __] of TemplateToken.traverse(container)) {
for (const [, token] of TemplateToken.traverse(container)) {
if (token.isExpression) {
return;
}
@@ -47,7 +47,7 @@ export class IdBuilder {
if (attempt === 1) {
suffix = "";
} else {
suffix = "_" + attempt;
suffix = `_${attempt}`;
}
const candidate = original.substring(0, Math.min(original.length, MAX_LENGTH - suffix.length)) + suffix;
+1 -1
View File
@@ -1,6 +1,6 @@
import {TemplateContext} from "../../templates/template-context";
import {BasicExpressionToken, MappingToken, ScalarToken, StringToken, TemplateToken} from "../../templates/tokens";
import {isMapping, isSequence, isString} from "../../templates/tokens/type-guards";
import {isSequence, isString} from "../../templates/tokens/type-guards";
import {Step, WorkflowJob} from "../workflow-template";
import {convertConcurrency} from "./concurrency";
import {convertToJobContainer, convertToJobServices} from "./container";
@@ -13,10 +13,10 @@ export function convertWorkflowJobInputs(context: TemplateContext, job: Reusable
const inputValues = createTokenMap(job["input-values"]?.assertMapping("workflow job input values"), "with");
if (inputDefinitions !== undefined) {
for (const [_, [name, value]] of inputDefinitions) {
const inputSpec = createTokenMap(value.assertMapping(`input ${name}`), `input ${name} key`)!;
for (const [, [name, value]] of inputDefinitions) {
const inputSpec = createTokenMap(value.assertMapping(`input ${name}`), `input ${name} key`);
const inputTypeToken = inputSpec.get("type")?.[1];
const inputTypeToken = inputSpec?.get("type")?.[1];
if (!inputTypeToken) {
// This should be validated by the template reader per the schema
continue;
@@ -31,7 +31,7 @@ export function convertWorkflowJobInputs(context: TemplateContext, job: Reusable
}
if (inputValues !== undefined) {
for (const [_, [name, value]] of inputValues) {
for (const [, [name, value]] of inputValues) {
if (!inputDefinitions?.has(name.toLowerCase())) {
context.error(value, `Invalid input, ${name} is not defined in the referenced workflow.`);
}
@@ -5,7 +5,7 @@ import {createTokenMap} from "./inputs";
export function convertWorkflowJobSecrets(context: TemplateContext, job: ReusableWorkflowJob) {
// No validation if job passes all secrets
if (!!job["inherit-secrets"]) {
if (job["inherit-secrets"]) {
return;
}
@@ -17,14 +17,14 @@ export function convertWorkflowJobSecrets(context: TemplateContext, job: Reusabl
const secretValues = createTokenMap(job["secret-values"]?.assertMapping("workflow job secret values"), "secrets");
if (secretDefinitions !== undefined) {
for (const [_, [name, value]] of secretDefinitions) {
for (const [, [name, value]] of secretDefinitions) {
if (value instanceof NullToken) {
continue;
}
const secretSpec = createTokenMap(value.assertMapping(`secret ${name}`), `secret ${name} key`)!;
const secretSpec = createTokenMap(value.assertMapping(`secret ${name}`), `secret ${name} key`);
const required = secretSpec.get("required")?.[1].assertBoolean(`secret ${name} required`).value;
const required = secretSpec?.get("required")?.[1].assertBoolean(`secret ${name} required`).value;
if (required) {
if (secretValues == undefined || !secretValues.has(name.toLowerCase())) {
context.error(job.ref, `Secret ${name} is required, but not provided while calling.`);
@@ -34,7 +34,7 @@ export function convertWorkflowJobSecrets(context: TemplateContext, job: Reusabl
}
if (secretValues !== undefined) {
for (const [_, [name, value]] of secretValues) {
for (const [, [name, value]] of secretValues) {
if (!secretDefinitions?.has(name.toLowerCase())) {
context.error(value, `Invalid secret, ${name} is not defined in the referenced workflow.`);
}