Files
languageservices/actions-workflow-parser/src/model/converter/concurrency.ts
T

43 lines
1.2 KiB
TypeScript

import { TemplateContext } from "../../templates/template-context"
import { TemplateToken } from "../../templates/tokens/template-token"
import { isString } from "../../templates/tokens/type-guards"
import { ConcurrencySetting } from "../workflow-template"
export function convertConcurrency(
context: TemplateContext,
token: TemplateToken
): ConcurrencySetting {
const result: ConcurrencySetting = {}
if (token.isExpression) {
return result
}
if (isString(token)) {
result.group = token
return result
}
const concurrencyProperty = token.assertMapping("concurrency group")
for (const property of concurrencyProperty) {
const propertyName = property.key.assertString("concurrency group key")
if (property.key.isExpression || property.value.isExpression) {
continue
}
switch (propertyName.value) {
case "group":
result.group = property.value.assertString("concurrency group")
break
case "cancel-in-progress":
result.cancelInProgress =
property.value.assertBoolean("cancel-in-progress").value
break
default:
context.error(
propertyName,
`Invalid property name: ${propertyName.value}`
)
}
}
return result
}