Skip to content

Commit 72d150e

Browse files
author
Adam Duncan
committed
Ensure works with yaml files with multiple yaml docs
1 parent 40fd675 commit 72d150e

File tree

2 files changed

+23
-17
lines changed

2 files changed

+23
-17
lines changed

lib/parsed-yaml-retriever.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,11 @@ const getParsedYaml = gh => async data => {
1212
const file = await promisify(gh.repos.getContent)(options)
1313
contents = Buffer.from(file.content, 'base64').toString()
1414
}
15-
const parsed = yaml.parse(contents)
16-
return parsed
15+
const docs = contents.split('---')
16+
const parsedDocs = docs.map(d => {
17+
return yaml.parse(d)
18+
})
19+
return parsedDocs
1720
}
1821

1922
module.exports = getParsedYaml

plugin.js

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -45,24 +45,27 @@ app.post('/', bodyParser.json(), async (req, res) => {
4545
return res.sendStatus(500)
4646
}
4747

48-
if (parsedYaml.trigger && parsedYaml.trigger.changeset && parsedYaml.trigger.changeset.includes) {
49-
const requiredFiles = parsedYaml.trigger.changeset.includes
50-
const matchedFiles = glob.match(requiredFiles, filesChanged, { dot: true })
51-
console.log('Matched files for pipeline:', matchedFiles.length, 'Allowed matches:', requiredFiles)
52-
if (!matchedFiles.length) return res.json({ Data: nullYaml })
53-
}
48+
const finalYamlDocs = parsedYaml.map(py => {
49+
if (py.kind !== 'pipeline') return yaml.stringify(py)
50+
if (py.trigger && py.trigger.changeset && py.trigger.changeset.includes) {
51+
const requiredFiles = py.trigger.changeset.includes
52+
const matchedFiles = glob.match(requiredFiles, filesChanged, { dot: true })
53+
console.log('Matched files for pipeline:', matchedFiles.length, 'Allowed matches:', requiredFiles)
54+
if (!matchedFiles.length) return res.json({ Data: nullYaml })
55+
}
5456

55-
const trimmedSteps = parsedYaml.steps.filter(s => {
56-
if (!s.when || !s.when.changeset || !s.when.changeset.includes) return true
57-
const requiredFiles = s.when.changeset.includes
58-
const matchedFiles = glob.match(requiredFiles, filesChanged, { dot: true })
59-
console.log('Matched files for step:', matchedFiles.length, 'Allowed matches:', requiredFiles)
60-
return matchedFiles.length
61-
})
57+
const trimmedSteps = py.steps.filter(s => {
58+
if (!s.when || !s.when.changeset || !s.when.changeset.includes) return true
59+
const requiredFiles = s.when.changeset.includes
60+
const matchedFiles = glob.match(requiredFiles, filesChanged, { dot: true })
61+
console.log('Matched files for step:', matchedFiles.length, 'Allowed matches:', requiredFiles)
62+
return matchedFiles.length
63+
})
6264

63-
const returnYaml = trimmedSteps.length ? yaml.stringify({ ...parsedYaml, steps: trimmedSteps }) : nullYaml
65+
return trimmedSteps.length ? yaml.stringify({ ...py, steps: trimmedSteps }) : nullYaml
66+
})
6467

65-
res.json({ Data: returnYaml })
68+
res.json({ Data: finalYamlDocs.join('\n---\n') })
6669
})
6770

6871
app.listen(3000)

0 commit comments

Comments
 (0)