95 lines
2.2 KiB
JavaScript
95 lines
2.2 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
import { Octokit } from "@octokit/core"
|
|
import fs from "fs"
|
|
import path from "path"
|
|
import { fileURLToPath } from "url"
|
|
|
|
const shouldExpire = process.argv.indexOf("--expire") !== -1
|
|
const octokit = new Octokit({
|
|
auth: process.env.GH_TOKEN,
|
|
})
|
|
|
|
async function main() {
|
|
let announcement = {}
|
|
|
|
if (shouldExpire) {
|
|
//check if the file was last updated 6 days ago
|
|
try {
|
|
const commitResponse = await octokit.request(
|
|
"GET /repos/{owner}/{repo}/commits",
|
|
{
|
|
owner: "medusajs",
|
|
repo: "medusa",
|
|
path: path.join("www", "apps", "docs", "announcement.json"),
|
|
per_page: 1,
|
|
}
|
|
)
|
|
|
|
if (
|
|
commitResponse.data.length &&
|
|
commitResponse.data[0].commit.committer?.date &&
|
|
dateDiffInDays(
|
|
new Date(commitResponse.data[0].commit.committer.date),
|
|
new Date()
|
|
) < 6
|
|
) {
|
|
console.log("File was edited less than 6 days ago. Expiry canceled.")
|
|
return
|
|
}
|
|
} catch (e) {
|
|
//continue as if file doesn't exist
|
|
}
|
|
} else {
|
|
//retrieve the latest release
|
|
const response = await octokit.request(
|
|
"GET /repos/{owner}/{repo}/releases/latest",
|
|
{
|
|
owner: "medusajs",
|
|
repo: "medusa",
|
|
}
|
|
)
|
|
|
|
const version = response.data.tag_name
|
|
|
|
//add new announcement
|
|
announcement = {
|
|
id: response.data.html_url,
|
|
content: `${version} is out`,
|
|
isCloseable: true,
|
|
}
|
|
}
|
|
|
|
const __filename = fileURLToPath(import.meta.url)
|
|
const __dirname = path.dirname(__filename)
|
|
|
|
//write new config file
|
|
fs.writeFileSync(
|
|
path.join(
|
|
__dirname,
|
|
"..",
|
|
"..",
|
|
"..",
|
|
"www",
|
|
"apps",
|
|
"docs",
|
|
"announcement.json"
|
|
),
|
|
JSON.stringify(announcement)
|
|
)
|
|
console.log(`Announcement Bar has been ${shouldExpire ? "removed" : "added"}`)
|
|
}
|
|
|
|
const _MS_PER_DAY = 1000 * 60 * 60 * 24
|
|
|
|
// a and b are javascript Date objects
|
|
function dateDiffInDays(a: Date, b: Date) {
|
|
// Discard the time and time-zone information.
|
|
const utc1 = Date.UTC(a.getFullYear(), a.getMonth(), a.getDate())
|
|
const utc2 = Date.UTC(b.getFullYear(), b.getMonth(), b.getDate())
|
|
|
|
return Math.floor((utc2 - utc1) / _MS_PER_DAY)
|
|
}
|
|
|
|
void main()
|