diff --git a/src/interfaces.ts b/src/interfaces.ts index 2eb90c6e..7b518cbb 100644 --- a/src/interfaces.ts +++ b/src/interfaces.ts @@ -29,6 +29,7 @@ export interface UpptimeConfig { introTitle?: string; introMessage?: string; navbar?: { title: string; url: string }[]; + publish?: boolean; }; skipDescriptionUpdate?: boolean; skipTopicsUpdate?: boolean; diff --git a/src/site.ts b/src/site.ts index 33be96f3..99de940e 100644 --- a/src/site.ts +++ b/src/site.ts @@ -1,11 +1,27 @@ import { cd, cp, exec, mkdir } from "shelljs"; +import { getConfig } from "./helpers/config"; +import { getOctokit } from "./helpers/github"; import { shouldContinue } from "./helpers/init-check"; export const generateSite = async () => { if (!(await shouldContinue())) return; + let [owner, repo] = (process.env.GITHUB_REPOSITORY || "").split("/"); + const config = await getConfig(); + const octokit = await getOctokit(); + const repoDetails = await octokit.repos.get({ owner, repo }); const siteDir = "site"; mkdir(siteDir); cd(siteDir); + /** + * If this is a private repository, we don't publish a status page + * by default, but can be overwritten with `publish: true` + */ + if (repoDetails.data.private && !(config["status-website"] || {}).publish) { + mkdir("-p", "status-page/__sapper__/export"); + exec("echo 404 > status-page/__sapper__/export/index.html"); + cd("../.."); + return; + } exec("npm init -y"); exec("npm i @upptime/status-page"); cp("-r", "node_modules/@upptime/status-page/*", ".");