import * as plugins from './mod.plugins.js'; import * as paths from '../paths.js'; import { Project } from '../classes.project.js'; import { logger } from '../gitzone.logging.js'; const gitignorePath = plugins.path.join(paths.cwd, './.gitignore'); export const run = async (projectArg: Project) => { const gitignoreExists = await plugins.smartfile.fs.fileExists(gitignorePath); let customContent = ''; if (gitignoreExists) { // lets get the existing gitignore file const existingGitIgnoreString = plugins.smartfile.fs.toStringSync(gitignorePath); // Check for different custom section markers const customMarkers = ['#------# custom', '# custom']; for (const marker of customMarkers) { const splitResult = existingGitIgnoreString.split(marker); if (splitResult.length > 1) { // Get everything after the marker (excluding the marker itself) customContent = splitResult[1].trim(); break; } } } // Write the template const templateModule = await import('../mod_template/index.js'); const ciTemplate = await templateModule.getTemplate('gitignore'); await ciTemplate.writeToDisk(paths.cwd); // Append the custom content if it exists if (customContent) { const newGitignoreContent = plugins.smartfile.fs.toStringSync(gitignorePath); // The template already ends with "#------# custom", so just append the content const finalContent = newGitignoreContent.trimEnd() + '\n' + customContent + '\n'; await plugins.smartfile.fs.toFs(finalContent, gitignorePath); logger.log('info', 'Updated .gitignore while preserving custom section!'); } else { logger.log('info', 'Added a .gitignore!'); } };