From 118da435cc2087592edbab468ef868dc18147ef5 Mon Sep 17 00:00:00 2001 From: Kirill Markin Date: Sat, 8 Jun 2024 11:44:50 +0200 Subject: [PATCH] clipboard feature --- README.md | 5 ++++- repo_to_text/main.py | 13 ++++++++++++- requirements.txt | 1 + 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9f646ed..b29169f 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ - Generates a text representation of a directory's structure. - Includes the output of the `tree` command. - Saves the contents of each file, encapsulated in markdown code blocks. +- Copies the generated text representation to the clipboard for easy sharing. - Easy to install and use via `pip` and Homebrew. ## Installation @@ -32,12 +33,14 @@ brew install yourusername/repo-to-text To install `repo-to-text` locally for development, follow these steps: 1. Clone the repository: + ```bash git clone https://github.com/yourusername/repo-to-text.git cd repo-to-text ``` 2. Install the package locally: + ```bash pip install -e . ``` @@ -50,7 +53,7 @@ After installation, you can use the `repo-to-text` command in your terminal. Nav repo-to-text ``` -This will create a file named `repo_structure.txt` in the current directory with the text representation of the repository. +This will create a file named repo_snapshot.txt in the current directory with the text representation of the repository. The contents of this file will also be copied to your clipboard for easy sharing. ## Enabling Debug Logging diff --git a/repo_to_text/main.py b/repo_to_text/main.py index bbafec2..1b06aac 100644 --- a/repo_to_text/main.py +++ b/repo_to_text/main.py @@ -4,6 +4,7 @@ import pathspec import logging import argparse from datetime import datetime +import pyperclip def setup_logging(debug=False): logging_level = logging.DEBUG if debug else logging.INFO @@ -80,7 +81,7 @@ def remove_empty_dirs(tree_output: str, path='.') -> str: logging.debug('Empty directory removal complete') return '\n'.join(final_lines) -def save_repo_to_text(path='.') -> None: +def save_repo_to_text(path='.') -> str: logging.debug(f'Starting to save repo structure to text for path: {path}') gitignore_spec = load_gitignore(path) tree_structure = get_tree_structure(path, gitignore_spec) @@ -123,6 +124,16 @@ def save_repo_to_text(path='.') -> None: file.write('[Could not decode file contents]\n') file.write('\n```\n') logging.debug('Repository contents written to file') + + # Read the contents of the generated file + with open(output_file, 'r') as file: + repo_text = file.read() + + # Copy the contents to the clipboard + pyperclip.copy(repo_text) + logging.debug('Repository structure and contents copied to clipboard') + + return output_file def main(): parser = argparse.ArgumentParser(description='Convert repository structure and contents to text') diff --git a/requirements.txt b/requirements.txt index e60962f..fcd830c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,3 +2,4 @@ setuptools==70.0.0 pathspec==0.12.1 pytest==8.2.2 argparse==1.4.0 +pyperclip==1.8.2