forked from stackblitz-labs/bolt.diy
-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix: error building my application stackblitz-labs#1414
- Loading branch information
Showing
11 changed files
with
106 additions
and
742 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,138 +1,11 @@ | ||
import type { LoaderFunction } from '@remix-run/cloudflare'; | ||
import { json } from '@remix-run/cloudflare'; | ||
import { execSync } from 'child_process'; | ||
import { json, type LoaderFunction } from '@remix-run/cloudflare'; | ||
|
||
interface GitHubRepoInfo { | ||
name: string; | ||
full_name: string; | ||
default_branch: string; | ||
stargazers_count: number; | ||
forks_count: number; | ||
open_issues_count: number; | ||
parent?: { | ||
full_name: string; | ||
default_branch: string; | ||
stargazers_count: number; | ||
forks_count: number; | ||
}; | ||
} | ||
|
||
const getLocalGitInfo = () => { | ||
try { | ||
return { | ||
commitHash: execSync('git rev-parse HEAD').toString().trim(), | ||
branch: execSync('git rev-parse --abbrev-ref HEAD').toString().trim(), | ||
commitTime: execSync('git log -1 --format=%cd').toString().trim(), | ||
author: execSync('git log -1 --format=%an').toString().trim(), | ||
email: execSync('git log -1 --format=%ae').toString().trim(), | ||
remoteUrl: execSync('git config --get remote.origin.url').toString().trim(), | ||
repoName: execSync('git config --get remote.origin.url') | ||
.toString() | ||
.trim() | ||
.replace(/^.*github.com[:/]/, '') | ||
.replace(/\.git$/, ''), | ||
}; | ||
} catch (error) { | ||
console.error('Failed to get local git info:', error); | ||
return null; | ||
} | ||
}; | ||
|
||
const getGitHubInfo = async (repoFullName: string) => { | ||
try { | ||
// Add GitHub token if available | ||
const headers: Record<string, string> = { | ||
Accept: 'application/vnd.github.v3+json', | ||
}; | ||
|
||
const githubToken = process.env.GITHUB_TOKEN; | ||
|
||
if (githubToken) { | ||
headers.Authorization = `token ${githubToken}`; | ||
} | ||
|
||
console.log('Fetching GitHub info for:', repoFullName); // Debug log | ||
|
||
const response = await fetch(`https://api.github.com/repos/${repoFullName}`, { | ||
headers, | ||
}); | ||
|
||
if (!response.ok) { | ||
console.error('GitHub API error:', { | ||
status: response.status, | ||
statusText: response.statusText, | ||
repoFullName, | ||
}); | ||
|
||
// If we get a 404, try the main repo as fallback | ||
if (response.status === 404 && repoFullName !== 'stackblitz-labs/bolt.diy') { | ||
return getGitHubInfo('stackblitz-labs/bolt.diy'); | ||
} | ||
|
||
throw new Error(`GitHub API error: ${response.statusText}`); | ||
} | ||
|
||
const data = await response.json(); | ||
console.log('GitHub API response:', data); // Debug log | ||
|
||
return data as GitHubRepoInfo; | ||
} catch (error) { | ||
console.error('Failed to get GitHub info:', error); | ||
return null; | ||
} | ||
}; | ||
|
||
export const loader: LoaderFunction = async ({ request: _request }) => { | ||
const localInfo = getLocalGitInfo(); | ||
console.log('Local git info:', localInfo); // Debug log | ||
|
||
// If we have local info, try to get GitHub info for both our fork and upstream | ||
let githubInfo = null; | ||
|
||
if (localInfo?.repoName) { | ||
githubInfo = await getGitHubInfo(localInfo.repoName); | ||
} | ||
|
||
// If no local info or GitHub info, try the main repo | ||
if (!githubInfo) { | ||
githubInfo = await getGitHubInfo('stackblitz-labs/bolt.diy'); | ||
} | ||
|
||
const response = { | ||
local: localInfo || { | ||
commitHash: 'unknown', | ||
branch: 'unknown', | ||
commitTime: 'unknown', | ||
author: 'unknown', | ||
email: 'unknown', | ||
remoteUrl: 'unknown', | ||
repoName: 'unknown', | ||
export const loader: LoaderFunction = async () => { | ||
return json( | ||
{ | ||
error: 'Git information is not available in the Cloudflare environment', | ||
message: 'This feature requires system-level access and is only available in a server environment.', | ||
}, | ||
github: githubInfo | ||
? { | ||
currentRepo: { | ||
fullName: githubInfo.full_name, | ||
defaultBranch: githubInfo.default_branch, | ||
stars: githubInfo.stargazers_count, | ||
forks: githubInfo.forks_count, | ||
openIssues: githubInfo.open_issues_count, | ||
}, | ||
upstream: githubInfo.parent | ||
? { | ||
fullName: githubInfo.parent.full_name, | ||
defaultBranch: githubInfo.parent.default_branch, | ||
stars: githubInfo.parent.stargazers_count, | ||
forks: githubInfo.parent.forks_count, | ||
} | ||
: null, | ||
} | ||
: null, | ||
isForked: Boolean(githubInfo?.parent), | ||
timestamp: new Date().toISOString(), | ||
}; | ||
|
||
console.log('Final response:', response); | ||
|
||
// Debug log | ||
return json(response); | ||
{ status: 400 }, | ||
); | ||
}; |
Oops, something went wrong.