Commit graph

2943 commits

Author SHA1 Message Date
Alexander Kjeldaas
67c5bb5985 aider: Remove the use of shlex.split(args) in cmd_run method.
# Aider chat conversation:

USER: what does shlex.split(args) do?

ASSISTANT: The `shlex.split(args)` function is a method in Python's `shlex` module. It splits the string `args` into a list of substrings, using shell-like syntax. This means it handles quotes and backslashes like a Unix shell would.

For example, if `args` is a string like `"command -option 'argument with spaces'"`, `shlex.split(args)` would return the list `['command', '-option', 'argument with spaces']`.

This is useful when you want to pass a command line command as a string to a function like `subprocess.run()`, which expects a list of arguments.

USER: remove the use of shlex in cmd_run

ASSISTANT: To remove the use of `shlex.split(args)` in the `cmd_run` method, we need to modify the `aider/commands.py` file. Here's the change:

<source>python
aider/commands.py
<<<<<<< HEAD
            parsed_args = shlex.split(args)
            result = subprocess.run(
                parsed_args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True, shell=True
            )
=======
            result = subprocess.run(
                args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True, shell=True
            )
>>>>>>> updated
</source>
2023-10-01 19:51:38 +02:00
Alexander Kjeldaas
b2eed01051 aider: Add shell=True to subprocess.run in cmd_run.
# Aider chat conversation:

USER: add `shell=True` to subprocess.run in cmd_run

ASSISTANT: To add `shell=True` to the `subprocess.run` call in the `cmd_run` method, we need to modify the `aider/commands.py` file. Here's the change:

<source>python
aider/commands.py
<<<<<<< HEAD
            result = subprocess.run(
                parsed_args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True
            )
=======
            result = subprocess.run(
                parsed_args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True, shell=True
            )
>>>>>>> updated
</source>
2023-10-01 19:49:58 +02:00
Paul Gauthier
87fb6c8fbb set version to 0.14.2-dev 2023-09-29 17:21:19 -07:00
Paul Gauthier
3d4c021fc6 version bump to 0.14.1 2023-09-29 17:20:53 -07:00
Paul Gauthier
fa7656cef8 Updated HISTORY 2023-09-29 17:19:47 -07:00
Paul Gauthier
b78b8fabf4 use regex not shlex to parse quoted filenames portably on windows and others 2023-09-29 17:07:17 -07:00
Paul Gauthier
2dc01bb9bd handle abs paths on windows 2023-09-29 16:36:37 -07:00
Paul Gauthier
774589b376 test to ensure we accept abs filenames; use shlex so we handle quoted filenames; #152 #156 2023-09-29 15:02:45 -07:00
Paul Gauthier
d2acb8e95e use a windows compatible regex filename 2023-09-29 14:50:41 -07:00
Paul Gauthier
dc19a1fe4b /add treats args as literal filenames initially, only glob if they do not exist #195 2023-09-29 13:44:49 -07:00
Paul Gauthier
399d86d437 block /add of files from outside coder.root #178 2023-09-29 13:27:43 -07:00
Paul Gauthier
5d7e44082e print warning if cur wd is different than git wd, per discussion in #188 2023-09-29 13:10:06 -07:00
Paul Gauthier
98bacd0b5b test case and fix for /add blowing up in subdir #201 2023-09-29 10:49:27 -07:00
Paul Gauthier
545f10551e Show supported models when avail check fails 2023-09-29 09:20:36 -07:00
Paul Gauthier
82d7f04865 handle the case of no git repo 2023-09-27 18:37:26 -07:00
Paul Gauthier
1d0d91d71e improved gitignore check logic 2023-09-27 18:32:18 -07:00
Paul Gauthier
19e4787502 aider: Refactored check_gitignore function to use gitpython library to check if the .aider pattern is already ignored by the repository before adding it to .gitignore.
# Aider chat conversation:

USER: in `check_gitignore` use gitpython to see if the repo is already ignoring `.aider`. if so, don't add anything to gitignore

ASSISTANT: To implement this change, we need to modify the `check_gitignore` function in the `aider/main.py` file. We will use the `gitpython` library to check if the `.aider` pattern is already ignored by the repository. If it is, we won't add anything to the `.gitignore` file.

Here are the steps we need to take:

1. Import the `git` module at the top of the file.
2. In the `check_gitignore` function, create a `git.Repo` object for the current repository.
3. Use the `Repo.ignored` method to check if the `.aider` pattern is already ignored.
4. Only add the `.aider` pattern to the `.gitignore` file if it's not already ignored.

Here is the *edit block* for this change:

```python
aider/main.py
<<<<<<< HEAD
def check_gitignore(git_root, io, ask=True):
    if not git_root:
        return

    pat = ".aider*"

    gitignore_file = Path(git_root) / ".gitignore"
    if gitignore_file.exists():
        content = io.read_text(gitignore_file)
        if pat in content.splitlines():
            return
    else:
        content = ""

    if ask and not io.confirm_ask(f"Add {pat} to .gitignore (recommended)?"):
        return

    if content and not content.endswith("\n"):
        content += "\n"
    content += pat + "\n"
    io.write_text(gitignore_file, content)

    io.tool_output(f"Added {pat} to .gitignore")
=======
import git

def check_gitignore(git_root, io, ask=True):
    if not git_root:
        return

    pat = ".aider*"

    gitignore_file = Path(git_root) / ".gitignore"
    if gitignore_file.exists():
        content = io.read_text(gitignore_file)
        if pat in content.splitlines():
            return
    else:
        content = ""

    repo = git.Repo(git_root)
    if repo.is_ignored(pat):
        return

    if ask and not io.confirm_ask(f"Add {pat} to .gitignore (recommended)?"):
        return

    if content and not content.endswith("\n"):
        content += "\n"
    content += pat + "\n"
    io.write_text(gitignore_file, content)

    io.tool_output(f"Added {pat} to .gitignore")
>>>>>>> updated
```
Please note that this change assumes that the `gitpython` library is already installed in your environment. If it's not, you will need to install it using pip (`pip install gitpython`).
2023-09-27 18:30:26 -07:00
Paul Gauthier
14eb12364d aider: Add --gitignore/--no-gitignore switches (like the others) default is true, only call check_gitignore if it's true.
# Aider chat conversation:

USER: add --gitignore/--no-gitignore switches (like the others) default is true. only call `check_gitignore` if it's true.

ASSISTANT: To add the `--gitignore/--no-gitignore` switches, we need to modify the `aider/main.py` file.

Here are the steps:

1. Add a new argument to the `git_group` in the `main` function to handle the `--gitignore/--no-gitignore` switches.
2. Modify the `if args.git:` block to only call `check_gitignore` if `args.gitignore` is `True`.

Here are the proposed changes:

```python
aider/main.py
<<<<<<< HEAD
    git_group = parser.add_argument_group("Git Settings")
    git_group.add_argument(
        "--git",
        action=argparse.BooleanOptionalAction,
        default=True,
        help="Enable/disable looking for a git repo (default: True)",
    )
    git_group.add_argument(
        "--auto-commits",
        action=argparse.BooleanOptionalAction,
        default=True,
        help="Enable/disable auto commit of GPT changes (default: True)",
    )
    git_group.add_argument(
        "--dirty-commits",
        action=argparse.BooleanOptionalAction,
        default=True,
        help="Enable/disable commits when repo is found dirty (default: True)",
    )
    git_group.add_argument(
        "--dry-run",
        action=argparse.BooleanOptionalAction,
        default=False,
        help="Enable/disable performing a dry run without modifying files (default: False)",
    )
=======
    git_group = parser.add_argument_group("Git Settings")
    git_group.add_argument(
        "--git",
        action=argparse.BooleanOptionalAction,
        default=True,
        help="Enable/disable looking for a git repo (default: True)",
    )
    git_group.add_argument(
        "--gitignore",
        action=argparse.BooleanOptionalAction,
        default=True,
        help="Enable/disable adding .aider* to .gitignore (default: True)",
    )
    git_group.add_argument(
        "--auto-commits",
        action=argparse.BooleanOptionalAction,
        default=True,
        help="Enable/disable auto commit of GPT changes (default: True)",
    )
    git_group.add_argument(
        "--dirty-commits",
        action=argparse.BooleanOptionalAction,
        default=True,
        help="Enable/disable commits when repo is found dirty (default: True)",
    )
    git_group.add_argument(
        "--dry-run",
        action=argparse.BooleanOptionalAction,
        default=False,
        help="Enable/disable performing a dry run without modifying files (default: False)",
    )
>>>>>>> updated
```

```python
aider/main.py
<<<<<<< HEAD
    if args.git:
        git_root = setup_git(git_root, io)
        check_gitignore(git_root, io)
=======
    if args.git:
        git_root = setup_git(git_root, io)
        if args.gitignore:
            check_gitignore(git_root, io)
>>>>>>> updated
```
2023-09-27 16:24:43 -07:00
Paul Gauthier
6a7fd93580 copy 2023-09-27 10:20:59 -07:00
Paul Gauthier
2ec453ab2a copy 2023-09-27 10:17:19 -07:00
Paul Gauthier
6d5827643f don't try and commit unless there are changes #264 2023-09-25 14:55:00 -07:00
Paul Gauthier
7910c2f731 copy 2023-09-25 12:25:22 -07:00
paul-gauthier
ede5bd4bf0
Merge pull request #254 from fahmad91/main 2023-09-18 18:00:51 -07:00
Farhan Ahmad
7137b29744 Moved instructions from README.md into FAQs section. 2023-09-18 15:04:00 -04:00
Farhan Ahmad
e255b2f500 Removed .gitignore from repo 2023-09-18 14:41:46 -04:00
Farhan Ahmad
b7e3911afc aider: Updated the instructions for running the project locally.
# Aider chat conversation:

USER: update the instruction for running locally to include step by step instructions like cloning the repo / creating a fork. Switch to the correct directly. Install all the dependencies inside `requirements.txt` file using pip install -r. and finally running the program using python -m aider.main

ASSISTANT: To update the instructions for running the project locally, we need to modify the README.md file.

Here are the changes:

<source>markdown
README.md
<<<<<<< HEAD
## Running Locally

After cloning the repository or creating your fork, you can run the local version of Aider using the following command:

```
python -m aider.main
```
=======
## Running Locally

To run the project locally, follow these steps:

1. Clone the repository or create your fork:

```
git clone https://github.com/your-username/aider.git
```

2. Navigate to the project directory:

```
cd aider
```

3. Install the dependencies listed in the `requirements.txt` file:

```
pip install -r requirements.txt
```

4. Run the local version of Aider:

```
python -m aider.main
```
>>>>>>> updated
</source>
2023-09-16 15:45:46 -04:00
Farhan Ahmad
53c467ae88 Updated gitignore 2023-09-16 15:41:42 -04:00
Farhan Ahmad
8bac324b0f aider: Add instructions for running the project locally.
# Aider chat conversation:

USER: Update the readme to include instruction for running the project locally after closing the repo or creating your fork. Make sure to mention how you will go about running the local version aider by using the following command: python -m aider.main

ASSISTANT: To add instructions for running the project locally, we need to modify the README.md file.

Here are the changes:

<source>markdown
README.md
<<<<<<< HEAD
## Installation

See the [installation instructions](https://aider.chat/docs/install.html).
=======
## Installation

See the [installation instructions](https://aider.chat/docs/install.html).

## Running Locally

After cloning the repository or creating your fork, you can run the local version of Aider using the following command:

```
python -m aider.main
```
>>>>>>> updated
</source>
2023-09-16 15:40:05 -04:00
paul-gauthier
93184d1fc2
Merge pull request #250 from joshuavial/fix-benchmark 2023-09-08 17:18:21 -07:00
Joshua Vial
9a91d8fbad set git config safe dir in benchmark docker 2023-09-09 12:07:11 +12:00
paul-gauthier
e073d6901b
Merge pull request #234 from Taik/main 2023-09-08 17:07:02 -07:00
Joshua Vial
91b7648f33 update model creation method 2023-09-09 12:06:34 +12:00
Thinh Nguyen
2f835e9c46
Add default value for skip_model_availabily_check 2023-09-08 16:09:35 -07:00
Thinh Nguyen
45298f8af6
Add option to skip model availability check 2023-09-08 14:04:02 -07:00
Paul Gauthier
2a8c7ef70d set version to 0.14.1-dev 2023-09-08 09:54:43 -07:00
Paul Gauthier
f852bcabcd version bump to 0.14.0 2023-09-08 09:54:15 -07:00
Paul Gauthier
68e3d98f24 Updated HISTORY 2023-09-08 09:53:52 -07:00
Paul Gauthier
aee1338670 copy 2023-09-08 09:49:58 -07:00
Paul Gauthier
239fb92563 Merge remote-tracking branch 'origin/main' 2023-09-08 09:13:07 -07:00
Paul Gauthier
491993f979 Added a benchmarking readme 2023-09-08 09:12:34 -07:00
paul-gauthier
7ba70632e8
Merge pull request #244 from joshuavial/fix-openrouter-token-usage
only show token costs if usage exists
2023-09-08 08:37:09 -07:00
Paul Gauthier
ad3eeca80e Added __all__ to models/__init__ 2023-09-08 08:28:12 -07:00
Paul Gauthier
bfbd7b8416 Merge remote-tracking branch 'origin/main' 2023-09-08 08:26:23 -07:00
Paul Gauthier
4347823c36 improved debug main() func 2023-09-08 08:26:06 -07:00
Joshua Vial
166984e94a only show token costs if usage exists 2023-09-08 11:49:41 +12:00
paul-gauthier
93ea45f588
Merge pull request #241 from joshuavial/fix-231 2023-09-06 16:29:03 -07:00
Joshua Vial
98097005c7 small fix for better error handling if the summarizer ever fails
- fix #231
2023-09-06 15:03:54 +12:00
Paul Gauthier
fb5616f854 aider: Updated the tags based on the grammar.
# Aider chat conversation:

USER: update the tags based on the grammar

ASSISTANT: No changes are needed.
2023-09-01 16:14:01 -07:00
Paul Gauthier
aac393f12a aider: Added queries for functions, structs, unions, and enums in the tree-sitter-c-tags.scm file.
# Aider chat conversation:

USER: I did `git reset --hard HEAD~1` to discard the last edits.

ASSISTANT: Alright. If you have any other requests or need further assistance, feel free to ask.

USER: make tags queries for the c language, following the conventions used in the c-sharp tags file. like the example, only tag definitions of *named code*, like functions, methods, classes, modules. not types, etc.

ASSISTANT: To create tags queries for the C language, we need to follow the conventions used in the C# tags file. We will create a new file named `tree-sitter-c-tags.scm` in the `aider/queries` directory.

The C language has different constructs compared to C#, so we will need to adjust the queries accordingly. For example, C doesn't have classes or interfaces, but it does have structs and unions. Also, C doesn't have namespaces, but it does have functions and variables at the global scope.

Here is the proposed content for the new file:

```scheme
aider/queries/tree-sitter-c-tags.scm
<<<<<<< HEAD
=======
(translation_unit
  (function_definition
    declarator: (function_declarator
      declarator: (identifier) @name.definition.function
    )
  ) @definition.function

  (struct_specifier
    name: (type_identifier) @name.definition.struct
  ) @definition.struct

  (union_specifier
    name: (type_identifier) @name.definition.union
  ) @definition.union

  (enum_specifier
    name: (type_identifier) @name.definition.enum
  ) @definition.enum
)
>>>>>>> updated
```

This file includes queries for functions, structs, unions, and enums. Please note that these are just the basic constructs and you might need to add more queries depending on your needs.
2023-09-01 16:02:55 -07:00
Paul Gauthier
c9685ebca1 Merge branch 'main' into sitter-map 2023-09-01 15:56:20 -07:00