Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions app/components/deploy/DeployButton.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ export const DeployButton = ({ onVercelDeploy, onNetlifyDeploy, onGitHubDeploy }
await onGitHubDeploy();
} else {
const result = await handleGitHubDeploy();

if (result && result.success && result.files) {
setGithubDeploymentFiles(result.files);
setGithubProjectName(result.projectName);
Expand Down Expand Up @@ -129,7 +129,9 @@ export const DeployButton = ({ onVercelDeploy, onNetlifyDeploy, onGitHubDeploy }
crossOrigin="anonymous"
src="https://cdn.simpleicons.org/netlify"
/>
<span className="mx-auto">{!netlifyConn.user ? 'No Netlify Account Connected' : 'Deploy to Netlify'}</span>
<span className="mx-auto">
{!netlifyConn.user ? 'No Netlify Account Connected' : 'Deploy to Netlify'}
</span>
{netlifyConn.user && <NetlifyDeploymentLink />}
</DropdownMenu.Item>

Expand Down Expand Up @@ -196,7 +198,7 @@ export const DeployButton = ({ onVercelDeploy, onNetlifyDeploy, onGitHubDeploy }

{/* GitHub Deployment Dialog */}
{showGitHubDeploymentDialog && githubDeploymentFiles && (
<GitHubDeploymentDialog
<GitHubDeploymentDialog
isOpen={showGitHubDeploymentDialog}
onClose={() => setShowGitHubDeploymentDialog(false)}
projectName={githubProjectName}
Expand Down
58 changes: 32 additions & 26 deletions app/components/deploy/GitHubDeploy.client.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ export function useGitHubDeploy() {

const handleGitHubDeploy = async () => {
const connection = getLocalStorage('github_connection');

if (!connection?.token || !connection?.user) {
toast.error('Please connect your GitHub account in Settings > Connections first');
return false;
Expand Down Expand Up @@ -75,8 +75,8 @@ export function useGitHubDeploy() {
}

// Notify that build succeeded and deployment preparation is starting
deployArtifact.runner.handleDeployAction('deploying', 'running', {
source: 'github'
deployArtifact.runner.handleDeployAction('deploying', 'running', {
source: 'github',
});

// Get all project files instead of just the build directory since we're deploying to a repository
Expand All @@ -89,31 +89,32 @@ export function useGitHubDeploy() {

for (const entry of entries) {
const fullPath = path.join(dirPath, entry.name);

// Create a relative path without the leading slash for GitHub
const relativePath = basePath ? `${basePath}/${entry.name}` : entry.name;

// Skip node_modules, .git directories and other common excludes
if (entry.isDirectory() && (
entry.name === 'node_modules' ||
entry.name === '.git' ||
entry.name === 'dist' ||
entry.name === 'build' ||
entry.name === '.cache' ||
entry.name === '.next'
)) {
if (
entry.isDirectory() &&
(entry.name === 'node_modules' ||
entry.name === '.git' ||
entry.name === 'dist' ||
entry.name === 'build' ||
entry.name === '.cache' ||
entry.name === '.next')
) {
continue;
}

if (entry.isFile()) {
// Skip binary files, large files and other common excludes
if (entry.name.endsWith('.DS_Store') ||
entry.name.endsWith('.log') ||
entry.name.startsWith('.env')) {
if (entry.name.endsWith('.DS_Store') || entry.name.endsWith('.log') || entry.name.startsWith('.env')) {
continue;
}

try {
const content = await container.fs.readFile(fullPath, 'utf-8');

// Store the file with its relative path, not the full system path
files[relativePath] = content;
} catch (error) {
Expand All @@ -130,24 +131,29 @@ export function useGitHubDeploy() {
}

const fileContents = await getAllFiles('/');

// Show GitHub deployment dialog here - it will handle the actual deployment
// and will receive these files to deploy

// For now, we'll just complete the deployment with a success message
// Notify that deployment preparation is complete
deployArtifact.runner.handleDeployAction('deploying', 'complete', {
source: 'github'

/*
* Show GitHub deployment dialog here - it will handle the actual deployment
* and will receive these files to deploy
*/

/*
* For now, we'll just complete the deployment with a success message
* Notify that deployment preparation is complete
*/
deployArtifact.runner.handleDeployAction('deploying', 'complete', {
source: 'github',
});

return {
success: true,
files: fileContents,
projectName: artifact.title || 'bolt-project'
projectName: artifact.title || 'bolt-project',
};
} catch (err) {
console.error('GitHub deploy error:', err);
toast.error(err instanceof Error ? err.message : 'GitHub deployment preparation failed');

return false;
} finally {
setIsDeploying(false);
Expand All @@ -159,4 +165,4 @@ export function useGitHubDeploy() {
handleGitHubDeploy,
isConnected: !!getLocalStorage('github_connection')?.user,
};
}
}
Loading