From 50941e2083174c74d5e51783e211932d8053a2a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Che=C5=82miniak?= Date: Mon, 18 Nov 2024 12:53:32 +0100 Subject: [PATCH] fix: no candidate github repo passed to repo creation --- packages/core/installMachine/index.ts | 8 ++++++-- .../core/installMachine/installSteps/github/install.ts | 8 +++++--- .../installSteps/github/repositoryManager.ts | 6 +++++- packages/core/types.ts | 1 + 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/packages/core/installMachine/index.ts b/packages/core/installMachine/index.ts index 06eb048..d86a8cd 100644 --- a/packages/core/installMachine/index.ts +++ b/packages/core/installMachine/index.ts @@ -325,7 +325,11 @@ const createInstallMachine = (initialContext: InstallMachineContext) => { initializeRepositoryActor: createStepMachine( fromPromise(async ({ input }) => { try { - await initializeRepository({ projectName: input.stateData.options.name, visibility: 'private' }); + await initializeRepository({ + projectName: input.stateData.options.name, + visibility: 'private', + stateData: input.stateData, + }); input.stateData.stepsCompleted.initializeRepository = true; saveStateToRcFile(input.stateData, input.projectDir); } catch (error) { @@ -337,7 +341,7 @@ const createInstallMachine = (initialContext: InstallMachineContext) => { pushToGitHubActor: createStepMachine( fromPromise(async ({ input }) => { try { - await pushToGitHub(input.stateData.options.name); + await pushToGitHub(input.stateData.githubCandidateName); input.stateData.stepsCompleted.pushToGitHub = true; saveStateToRcFile(input.stateData, input.projectDir); } catch (error) { diff --git a/packages/core/installMachine/installSteps/github/install.ts b/packages/core/installMachine/installSteps/github/install.ts index 036f359..d4bf214 100644 --- a/packages/core/installMachine/installSteps/github/install.ts +++ b/packages/core/installMachine/installSteps/github/install.ts @@ -8,10 +8,12 @@ import { isGitHubAuthenticated, setupGitRepository, } from './repositoryManager'; +import { InstallMachineContext } from '../../../types'; interface ProjectRepositoryOptions { projectName: string; visibility: 'public' | 'private'; + stateData: InstallMachineContext['stateData']; } // Helper function to check if GitHub CLI is installed @@ -61,7 +63,7 @@ const ensureGitHubAuthentication = async () => { }; export const initializeRepository = async (options: ProjectRepositoryOptions) => { - const { projectName, visibility } = options; + const { projectName, visibility, stateData } = options; await checkGitHubCLI(); await ensureGitHubAuthentication(); @@ -74,7 +76,7 @@ export const initializeRepository = async (options: ProjectRepositoryOptions) => } // Check if the repository exists and create it - const repoName = await createGitHubRepository(projectName, visibility, username); + await createGitHubRepository(projectName, visibility, username, stateData); - await setupGitRepository(repoName, username); + await setupGitRepository(); }; diff --git a/packages/core/installMachine/installSteps/github/repositoryManager.ts b/packages/core/installMachine/installSteps/github/repositoryManager.ts index f97f5c8..241a0ab 100644 --- a/packages/core/installMachine/installSteps/github/repositoryManager.ts +++ b/packages/core/installMachine/installSteps/github/repositoryManager.ts @@ -3,6 +3,7 @@ import inquirer from 'inquirer'; import chalk from 'chalk'; import { logger } from '../../../utils/logger'; import { execAsync } from '../../../utils/execAsync'; +import { InstallMachineContext } from '../../../types'; const generateUniqueRepoName = async (baseName: string): Promise => { const cleanBaseName = baseName.replace(/-\d+$/, ''); // Clean base name @@ -69,6 +70,7 @@ export const createGitHubRepository = async ( projectName: string, repositoryVisibility: 'public' | 'private', username: string, + stateData: InstallMachineContext['stateData'], ) => { let repoName = projectName; @@ -90,6 +92,8 @@ export const createGitHubRepository = async ( }, ]); repoName = confirmedName; + // Update the state with the confirmed repository name in Xstate + stateData.githubCandidateName = confirmedName; } spinner.stop(); } catch (error) { @@ -126,7 +130,7 @@ const executeCommands = async (commands: string[]) => { } }; -export const setupGitRepository = async (projectName: string, username: string) => { +export const setupGitRepository = async () => { await logger.withSpinner('github', `Setting up Git for the repository...`, async (spinner) => { const commands = [`git init`, `git add .`]; await executeCommands(commands); diff --git a/packages/core/types.ts b/packages/core/types.ts index 48d5380..0afe23f 100644 --- a/packages/core/types.ts +++ b/packages/core/types.ts @@ -24,6 +24,7 @@ export interface StaplerState { projectName: string; stepsCompleted: StepsCompleted; options: ProjectOptions; + githubCandidateName: string; } export interface InstallMachineContext {