BMAD-METHOD/website/src/lib/site-url.mjs

26 lines
1012 B
JavaScript

/**
* Resolve the site's base URL using cascading environment defaults.
*
* Preference order: use SITE_URL if set; otherwise derive a GitHub Pages URL from GITHUB_REPOSITORY; otherwise use the local development URL.
* @returns {string} The resolved site URL (SITE_URL override, or `https://{owner}.github.io/{repo}`, or `http://localhost:3000`).
*/
export function getSiteUrl() {
// Explicit override (works in both local and GitHub Actions)
if (process.env.SITE_URL) {
return process.env.SITE_URL;
}
// GitHub Actions: compute from repository context
if (process.env.GITHUB_REPOSITORY) {
const parts = process.env.GITHUB_REPOSITORY.split('/');
if (parts.length !== 2 || !parts[0] || !parts[1]) {
throw new Error(`Invalid GITHUB_REPOSITORY format: "${process.env.GITHUB_REPOSITORY}". Expected "owner/repo".`);
}
const [owner, repo] = parts;
return `https://${owner}.github.io/${repo}`;
}
// Local development: use dev server
return 'http://localhost:3000';
}