aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2020-08-23Revert "Suggestion.diff_command: Diff an index instead of a file"Teddy Wing
This reverts commit 588cd526fd78b3a0e0ec1dfb9fc194ca385de902. Since each suggestion has its own associated commit, we can't compare a tree and a single commit. We'll probably have to invoke `git diff` once for each suggestion.
2020-08-23Suggestion.diff_command: Diff an index instead of a fileTeddy Wing
This will enable us to use the `git diff` command with more than one suggestion at the same time. We compare the commit of the suggestion with the new index's tree. And as I write this, I'm realising that we can't diff multiple suggestions using the same commit because each suggestion has its own commit. Need to work out a different way to do this.
2020-08-22Suggestion.diff_command: Return the right side version blobTeddy Wing
Don't run the `git diff` command in this function, instead return the new blob created for the right hand side of the comparison. This will facilitate showing the diffs of multiple suggestions at once. Maybe. I haven't tried the command yet. Actually, looking at the man page, it doesn't say we can include more than one blob pair, so I might need to put all of the suggestion changes into a single blob and compare the original commit with that.
2020-08-22Execute `git diff` to output diffsTeddy Wing
I want to enable colour diff output. At first, I thought about doing this by getting the diff colours from the Git config, then outputting the ANSI escape codes manually with the text. However, I then thought it would be nice to enable other diff features like `--word-diff`, and it would be too much trouble to re-implement that manually, and then I'd have to take word diff colouring into account. Decided that the optimal way to get both colours and extra diff features like word diffing would be to use `git diff` directly under the hood. We shell out to `git diff`, and give it the original file as a base, and a new blob object that we create in the repository on the right side. This allows us to compare the file using a command in the following format: $ git diff <BASE>:src/server.rs <TEMPORARY_HASH> Ostensibly, the temporary blob object I create for the right side version should be freed automatically by `git2`. Add a new `sugdiff` command to output diffs. This will replace `sugpatch`. Since we're working with diffs, I think a name with "diff" sounds more logical. The previous version, "patch" sounds too much like what "apply" does, because of the Unix `patch` command.
2020-08-22Update TODOTeddy Wing
2020-08-06Increase version v0.0.1 -> v0.1.0v0.1.0Teddy Wing
2020-08-06Remove `github-suggestion/Cargo.lock`Teddy Wing
This is subsumed into `Cargo.lock` and doesn't do anything any more.
2020-08-06TODO: Explain `git-sugcommit`Teddy Wing
Probably not going to do this one as it's not always possible to get the commenter's name and email address, and even then it might not be the same as what they use in the repo.
2020-08-06Makefile: Package `dist/` into a bundled archive for releaseTeddy Wing
2020-08-06Makefile: Remove unused list of productsTeddy Wing
This was replaced by `RELEASE_PRODUCTS` so that I could make `DIST_PRODUCTS` based on `PRODUCTS`.
2020-08-06Makefile: Put distribution binaries in `dist/bin/`Teddy Wing
2020-08-06Makefile: Put distribution man pages in `dist/share/man/man1/`Teddy Wing
2020-08-06Makefile: Copy release products to `dist/`Teddy Wing
Add recipes to build release targets and copy the binaries and man pages into the `dist/` folder. We'll use this to package a release archive.
2020-08-06README: Update install/uninstall commandsTeddy Wing
Got an error: error: failed to open: /usr/local/.crates.toml when I tried the command with the `--root /usr/local` argument, so decided to remove it. Need to use the root crate name in the `cargo uninstall` command.
2020-08-06Rename the project `git-suggestion`Teddy Wing
Since this is a Git command, this makes more sense to me.
2020-08-05Add READMETeddy Wing
Found a suggestion on the `gh` GitHub CLI project page from 'mislav' (https://github.com/mislav) and 'probablycorey' (https://github.com/probablycorey) to use as an example. Haven't tested the install/uninstall instructions yet (copied these from another one of my projects).
2020-08-05OwnerRepo: Remove ".git" suffix from HTTPS URLsTeddy Wing
I hadn't tested with HTTPS remote URLs, so assumed the code I copied from `github_suggestion::url` would work. It worked for suggestion comment URLs, but it doesn't work for remote URLs because the latter end in ".git". Remove this suffix to fix the bug.
2020-08-05client::Error::Deserialize: Include source error messageTeddy Wing
Forgot to include this so we didn't get extra information about the cause of the error.
2020-08-04Add license (GNU GPLv3+)Teddy Wing
2020-08-04Update TODOTeddy Wing
2020-08-04Add man page for `git-sugapply`Teddy Wing
Copied from `git-sugpatch.1`, since the general elements are basically the same. Modified to describe the specifics of the `git-sugapply` command.
2020-08-04doc/git-sugpatch.1: Add values to command line optionsTeddy Wing
Make it clear that these options require argument values.
2020-08-04doc/git-sugpatch.1: Use the same ID in the URL and ID examplesTeddy Wing
To make it clear which ID needs to be used when using the short form.
2020-08-04doc/git-sugpatch.1: Clarify precedence of configuration optionsTeddy Wing
2020-08-04Add man page for `git-sugpatch`Teddy Wing
2020-08-03Update TODOTeddy Wing
2020-08-03Config: Add a version argumentTeddy Wing
Allow getting the program version from the command line.
2020-08-02Update TODOTeddy Wing
2020-08-02Remove `main.rs`Teddy Wing
We have multiple binaries in `src/bin/`, so this file is no longer needed.
2020-08-02Add documentation commentsTeddy Wing
Light documentation for our various functions and types.
2020-08-02Update TODOTeddy Wing
2020-08-02Update TODOTeddy Wing
2020-08-02Move suggestion arguments check to `Config::get`Teddy Wing
Since this check for suggestion arguments is in both binaries, we can move it to the common preflight function. Clean up other areas now that we moved the function.
2020-08-02git-sugapply: Copy over new logic from `git-sugpatch`Teddy Wing
Use the new logic from `git-sugpatch` to build a `Config` and run `apply()` on all suggestion input arguments.
2020-08-02Config: Add description to `--github-token` argumentTeddy Wing
2020-08-02Config: Add description to `--remote` argumentTeddy Wing
2020-08-02Add `-h` argumentTeddy Wing
Print usage on `-h` and `--help`. Store the usage brief on `Config` in order to be able to print it from multiple places.
2020-08-02git-sugpatch: Print usage with no suggestion argumenetTeddy Wing
Add `Options` to `Config` to allow us to get a usage string from a `Config` instance, which is where we create `Options`. Needed to remove the `Debug` derive on `Config` in order to add the field as `Options` doesn't implement `Debug`.
2020-08-02Config: Remove old lineTeddy Wing
This was a test, before I worked out the API for this function.
2020-08-02Update TODOTeddy Wing
2020-08-02git-sugpatch: Exit with `EX_USAGE` if no suggestion argumentsTeddy Wing
Replace my test exit code with a real one.
2020-08-02Update TODOTeddy Wing
2020-08-02git-sugpatch: Replace `unwrap` with printed error message and exitTeddy Wing
2020-08-02for_suggestion: Replace `unwrap`s with exitsTeddy Wing
Print the error and exit.
2020-08-02lib.rs: Make `owner_repo` module privateTeddy Wing
Turns out this didn't need to be public at all.
2020-08-02git-sugpatch: Move the suggestion arguments loop to a new functionTeddy Wing
Split this out into a separate function because I want to reuse it in `git-sugapply`.
2020-08-02git-sugpatch: Fix `SuggestionUrl` parsingTeddy Wing
Forgot to change this line when I set up the loop over suggestion arguments. We want to parse the current argument instead of hard-coding the first one.
2020-08-02Update TODOTeddy Wing
2020-08-02lib.rs: Make `owner_repo` `pub(crate)` againTeddy Wing
Made this `pub` for one of the test tries in 38a871f28bad90e238021d8cc46b9fa926f9df75, but in the end it wasn't necessary. Restore this to the prior visibility.
2020-08-02config::Error::EnvVar: Include the variable name in the error messageTeddy Wing
The source error's message doesn't include the name. Ensure we print the name of the variable we're trying to get so that users know which one is missing.