48 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
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!');
 | 
						|
  }
 | 
						|
};
 |