New paste Repaste Download
import os
import argparse
def is_code_file(filename, extensions):
    """Check if file has a code extension"""
    return any(filename.lower().endswith(ext) for ext in extensions)
def scan_and_combine_code_files(root_dir, output_file, extensions=None):
    """Scan directory and combine code files into one output file"""
    # Default code file extensions
    if extensions is None:
        extensions = [
            '.py', '.js', '.java', '.c', '.cpp', '.h', '.hpp',
            '.cs', '.php', '.rb', '.go', '.rs', '.ts',
            '.html', '.css', '.xml', '.json', '.yml', '.yaml',
            '.sql', '.sh', '.bat', '.ps1', '.md', '.txt'
        ]
    try:
        with open(output_file, 'w', encoding='utf-8') as outfile:
            for root, dirs, files in os.walk(root_dir):
                for file in files:
                    if is_code_file(file, extensions):
                        file_path = os.path.join(root, file)
                        relative_path = os.path.relpath(file_path, root_dir)
                        try:
                            with open(file_path, 'r', encoding='utf-8') as infile:
                                content = infile.read()
                            # Write file header
                            outfile.write(f"\n{'='*80}\n")
                            outfile.write(f"FILE: {relative_path}\n")
                            outfile.write(f"{'='*80}\n\n")
                            # Write file content
                            outfile.write(content)
                            # Add some spacing between files
                            outfile.write("\n\n")
                            print(f"Processed: {relative_path}")
                        except UnicodeDecodeError:
                            print(f"Skipping binary file: {relative_path}")
                        except Exception as e:
                            print(f"Error reading {relative_path}: {e}")
        print(f"\nAll code files have been combined into: {output_file}")
    except Exception as e:
        print(f"Error creating output file: {e}")
def main():
    parser = argparse.ArgumentParser(description='Combine code files from directory into single file')
    parser.add_argument('directory', help='Directory to scan for code files')
    parser.add_argument('-o', '--output', default='combined_code.txt',
                       help='Output file name (default: combined_code.txt)')
    parser.add_argument('-e', '--extensions', nargs='+',
                       help='Custom file extensions to include (space separated)')
    args = parser.parse_args()
    if not os.path.isdir(args.directory):
        print(f"Error: Directory '{args.directory}' does not exist.")
        return
    scan_and_combine_code_files(args.directory, args.output, args.extensions)
if __name__ == "__main__":
    main()
Filename: None. Size: 3kb. View raw, , hex, or download this file.

This paste expires on 2025-10-17 02:16:33.856261. Pasted through web.