From 55fb2ffe5290fee529120fd036e6af4e346e63bd Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Fri, 23 Jun 2023 13:55:04 -0700 Subject: [PATCH] aider: Added `create_temp_repo` function to create a temporary git repo with copied files and `.docs` subdir. # Context: USER: make a script which takes a dirname on the cmd line. make a tempdir, copy all the files from the dirname into the tempdir copy the .docs subdir into the tempdir, but as `docs` without the leading . make a new git repo in the tempdir using GitPython add all the copied files to the repo, commit with msg "initial" ASSISTANT: I will create a new script called `create_temp_repo.py` in the `scripts` directory. This script will take a directory name as a command-line argument, create a temporary ^C KeyboardInterrupt USER: code it in benchmark.py ASSISTANT: First, let's import the required libraries at the beginning of `scripts/benchmark.py`: ```python scripts/benchmark.py <<<<<<< ORIGINAL ======= import os import shutil import sys from tempfile import TemporaryDirectory from git import Repo >>>>>>> UPDATED ``` Now, let's add a new function called `create_temp_repo` in `scripts/benchmark.py`: ```python scripts/benchmark.py <<<<<<< ORIGINAL ======= def create_temp_repo(dirname): with TemporaryDirectory() as tempdir: # Copy all files from dirname to tempdir for item in os.listdir(dirname): s = os.path.join(dirname, item) d = os.path.join(tempdir, item) if os.path.isdir(s): shutil.copytree(s, d, False, None) else: shutil.copy2(s, d) # Copy .docs subdir to tempdir as 'docs' docs_src = os.path.join(dirname, ".docs") docs_dst = os.path.join(tempdir, "docs") shutil.copytree(docs_src, docs_dst, False, None) # Create a new git repo in tempdir repo = Repo.init(tempdir) # Add all copied files to the repo repo.git.add(A=True) # Commit with message "initial" repo.git.commit(m="initial") return tempdir >>>>>>> UPDATED ``` Finally, let's call the `create_temp_repo` function with the command-line argument in the `__main__` block: ```python scripts/benchmark.py <<<<<<< ORIGINAL ======= if __name__ == "__main__": if len(sys.argv) != 2: print("Usage: python benchmark.py ") sys.exit(1) dirname = sys.argv[1] temp_repo_path = create_temp_repo(dirname) print(f"Temporary repo created at: {temp_repo_path}") >>>>>>> UPDATED ``` Now, you can run the script with the command `python scripts/benchmark.py `, where `` is the directory you want to create a temporary repo for. --- scripts/benchmark.py | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/scripts/benchmark.py b/scripts/benchmark.py index e69de29bb..c91acc9a8 100644 --- a/scripts/benchmark.py +++ b/scripts/benchmark.py @@ -0,0 +1,39 @@ +import os +import shutil +import sys +from tempfile import TemporaryDirectory +from git import Repo +def create_temp_repo(dirname): + with TemporaryDirectory() as tempdir: + # Copy all files from dirname to tempdir + for item in os.listdir(dirname): + s = os.path.join(dirname, item) + d = os.path.join(tempdir, item) + if os.path.isdir(s): + shutil.copytree(s, d, False, None) + else: + shutil.copy2(s, d) + + # Copy .docs subdir to tempdir as 'docs' + docs_src = os.path.join(dirname, ".docs") + docs_dst = os.path.join(tempdir, "docs") + shutil.copytree(docs_src, docs_dst, False, None) + + # Create a new git repo in tempdir + repo = Repo.init(tempdir) + + # Add all copied files to the repo + repo.git.add(A=True) + + # Commit with message "initial" + repo.git.commit(m="initial") + + return tempdir +if __name__ == "__main__": + if len(sys.argv) != 2: + print("Usage: python benchmark.py ") + sys.exit(1) + + dirname = sys.argv[1] + temp_repo_path = create_temp_repo(dirname) + print(f"Temporary repo created at: {temp_repo_path}")