You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.7 KiB
77 lines
2.7 KiB
const fs = require("fs"); |
|
const { exec, execSync } = require("child_process"); |
|
const core = require("@actions/core"); |
|
|
|
const excalidrawDir = `${__dirname}/../src/packages/excalidraw`; |
|
const excalidrawPackage = `${excalidrawDir}/package.json`; |
|
const pkg = require(excalidrawPackage); |
|
|
|
const getShortCommitHash = () => { |
|
return execSync("git rev-parse --short HEAD").toString().trim(); |
|
}; |
|
|
|
const publish = () => { |
|
try { |
|
execSync(`yarn --frozen-lockfile`); |
|
execSync(`yarn --frozen-lockfile`, { cwd: excalidrawDir }); |
|
execSync(`yarn run build:umd`, { cwd: excalidrawDir }); |
|
execSync(`yarn --cwd ${excalidrawDir} publish`); |
|
console.info("Published 🎉"); |
|
core.setOutput( |
|
"result", |
|
`**Preview version has been shipped** :rocket: |
|
You can use [@excalidraw/excalidraw-preview@${pkg.version}](https://www.npmjs.com/package/@excalidraw/excalidraw-preview/v/${pkg.version}) for testing!`, |
|
); |
|
} catch (error) { |
|
core.setOutput("result", "package couldn't be published :warning:!"); |
|
console.error(error); |
|
process.exit(1); |
|
} |
|
}; |
|
// get files changed between prev and head commit |
|
exec(`git diff --name-only HEAD^ HEAD`, async (error, stdout, stderr) => { |
|
if (error || stderr) { |
|
console.error(error); |
|
core.setOutput("result", ":warning: Package couldn't be published!"); |
|
process.exit(1); |
|
} |
|
const changedFiles = stdout.trim().split("\n"); |
|
const filesToIgnoreRegex = /src\/excalidraw-app|packages\/utils/; |
|
|
|
const excalidrawPackageFiles = changedFiles.filter((file) => { |
|
return ( |
|
(file.indexOf("src") >= 0 || file.indexOf("package.json")) >= 0 && |
|
!filesToIgnoreRegex.test(file) |
|
); |
|
}); |
|
if (!excalidrawPackageFiles.length) { |
|
console.info("Skipping release as no valid diff found"); |
|
core.setOutput("result", "Skipping release as no valid diff found"); |
|
process.exit(0); |
|
} |
|
|
|
// update package.json |
|
pkg.name = "@excalidraw/excalidraw-next"; |
|
let version = `${pkg.version}-${getShortCommitHash()}`; |
|
|
|
// update readme |
|
let data = fs.readFileSync(`${excalidrawDir}/README_NEXT.md`, "utf8"); |
|
|
|
const isPreview = process.argv.slice(2)[0] === "preview"; |
|
if (isPreview) { |
|
// use pullNumber-commithash as the version for preview |
|
const pullRequestNumber = process.argv.slice(3)[0]; |
|
version = `${pkg.version}-${pullRequestNumber}-${getShortCommitHash()}`; |
|
// replace "excalidraw-next" with "excalidraw-preview" |
|
pkg.name = "@excalidraw/excalidraw-preview"; |
|
data = data.replace(/excalidraw-next/g, "excalidraw-preview"); |
|
data = data.trim(); |
|
} |
|
pkg.version = version; |
|
|
|
fs.writeFileSync(excalidrawPackage, JSON.stringify(pkg, null, 2), "utf8"); |
|
|
|
fs.writeFileSync(`${excalidrawDir}/README.md`, data, "utf8"); |
|
console.info("Publish in progress..."); |
|
publish(); |
|
});
|
|
|