55 lines
1.8 KiB
JavaScript
Executable File
55 lines
1.8 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
|
|
import createStagingAppName from '../../script/deployment/create-staging-app-name.js'
|
|
import * as github from '@actions/github'
|
|
import { setOutput } from '@actions/core'
|
|
|
|
const context = github.context
|
|
|
|
const githubToken = process.env.GITHUB_TOKEN
|
|
if (!githubToken) {
|
|
throw new Error(`GITHUB_TOKEN environment variable not set`)
|
|
}
|
|
|
|
const stagingPrefix = createStagingAppName({
|
|
repo: context.payload.repository.name,
|
|
pullNumber: context.payload.number,
|
|
branch: context.payload.pull_request.head.ref,
|
|
})
|
|
|
|
const octokit = github.getOctokit(githubToken)
|
|
|
|
const response = await octokit.rest.repos.compareCommits({
|
|
owner: context.repo.owner,
|
|
repo: context.payload.repository.name,
|
|
base: context.payload.pull_request.base.sha,
|
|
head: context.payload.pull_request.head.sha,
|
|
})
|
|
|
|
const { files } = response.data
|
|
|
|
let markdownTable =
|
|
'| **Source** | **Staging** | **Production** | **What Changed** |\n|:----------- |:----------- |:----------- |:----------- |\n'
|
|
|
|
const pathPrefix = 'content/'
|
|
const articleFiles = files.filter(
|
|
({ filename }) => filename.startsWith(pathPrefix) && !filename.endsWith('/index.md')
|
|
)
|
|
for (const file of articleFiles) {
|
|
const sourceUrl = file.blob_url
|
|
const fileName = file.filename.slice(pathPrefix.length)
|
|
const fileUrl = fileName.slice(0, fileName.lastIndexOf('.'))
|
|
const stagingLink = `https://${stagingPrefix}.herokuapp.com/${fileUrl}`
|
|
const productionLink = `https://docs.github.com/${fileUrl}`
|
|
let markdownLine = ''
|
|
|
|
if (file.status === 'modified') {
|
|
markdownLine = `| [content/${fileName}](${sourceUrl}) | [Modified](${stagingLink}) | [Original](${productionLink}) | |\n`
|
|
} else if (file.status === 'added') {
|
|
markdownLine = `| New file: [content/${fileName}](${sourceUrl}) | [Modified](${stagingLink}) | | |\n`
|
|
}
|
|
markdownTable += markdownLine
|
|
}
|
|
|
|
setOutput('changesTable', markdownTable)
|