-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: add os.copyToClipboardCmd to allow for a custom command #1055 #2784
Conversation
27ef2e0
to
0a7fb14
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good!
There's an existing integration test, pkg/integration/tests/patch_building/copy_patch_to_clipboard.go
which we've disabled due to a lack of clipboard on CI. Would you be able to unskip that test and tweak it so that we define in SetupConfig
for copyToClipboardCmd
to be echo "{{text}}" > clipboard"
and then we assert that a file shows up called clipboard
in the files panel with the expected contents? Lemme know if that makes sense
pkg/commands/oscommands/os.go
Outdated
@@ -267,6 +267,13 @@ func (c *OSCommand) CopyToClipboard(str string) error { | |||
escaped := strings.Replace(str, "\n", "\\n", -1) | |||
truncated := utils.TruncateWithEllipsis(escaped, 40) | |||
c.LogCommand(fmt.Sprintf("Copying '%s' to clipboard", truncated), false) | |||
if c.UserConfig.OS.CopyToClipboardCmd != "" { | |||
cmdStr := utils.ResolvePlaceholderString(c.UserConfig.OS.CopyToClipboardCmd, map[string]string{ | |||
"text": c.Cmd.Quote(str), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I see that text is quoted here but that we're also quoting it in the example command above. Does that still work?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good catch. The example worked fine because there are another pair of outer enclosing quotes, but was confusing. Simplified.
0a7fb14
to
abea9c5
Compare
Makes sense. I did what you said, and ran
in the Command log. However, I can't figure out where the Second issue: quoting in the command above doesn't look right. That wouldn't work if |
@redstreet hmm, I'm surprised that the file isn't showing up in the repo. Could you commit your test so I can take a closer look? As for the quoting, the command log may be adding quotes for the sake of reading, but the resulting command may work fine. |
Sure, committed the test. I've been testing it manually using |
3df1287
to
e2af9dc
Compare
Ah, so the reason for the file not showing up is that we don't refresh the files view upon copying to clipboard (nor do we have any file watching functionality in place). So you'll need to focus the files panel and press 'r' to refresh it. Then you'll see the clipboard file :) |
Ah, that was silly of me to miss that! Will submit the full test soon. Thank you. |
6eca785
to
1d57f60
Compare
Ready for review. Caveats:
|
f004cb3
to
e2ac6cd
Compare
Quick ping 🙂 |
e2ac6cd
to
52eef6c
Compare
That toast erroring out is interesting: we recently made it so that we don't progress the test until lazygit is idle again, which would mean waiting until after the toast is no longer shown before asserting on it. So that would explain why it's failing. I'm happy to just leave that out of the test. I've pushed some fixes. We're good to go! |
Issue jesseduffield#1055 test: CopyPatchToClipboard (temporary commit for review)
52eef6c
to
d7f84ae
Compare
Great, and thanks for the excellent guidance on this PR! |
No worries @redstreet, thanks for making it |
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [GoogleContainerTools/skaffold](https://github.com/GoogleContainerTools/skaffold) | patch | `v2.6.2` -> `v2.6.3` | | [ajeetdsouza/zoxide](https://github.com/ajeetdsouza/zoxide) | patch | `v0.9.1` -> `v0.9.2` | | [aquaproj/aqua-registry](https://github.com/aquaproj/aqua-registry) | patch | `v4.32.0` -> `v4.32.2` | | [jesseduffield/lazygit](https://github.com/jesseduffield/lazygit) | minor | `v0.39.4` -> `v0.40.0` | | [weaveworks/eksctl](https://github.com/weaveworks/eksctl) | minor | `v0.150.0` -> `v0.151.0` | --- ### Release Notes <details> <summary>GoogleContainerTools/skaffold (GoogleContainerTools/skaffold)</summary> ### [`v2.6.3`](https://github.com/GoogleContainerTools/skaffold/releases/tag/v2.6.3): Release [Compare Source](https://github.com/GoogleContainerTools/skaffold/compare/v2.6.2...v2.6.3) ##### v2.6.3 Release - 2023-08-04 **Linux amd64** `curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/v2.6.3/skaffold-linux-amd64 && chmod +x skaffold && sudo mv skaffold /usr/local/bin` **Linux arm64** `curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/v2.6.3/skaffold-linux-arm64 && chmod +x skaffold && sudo mv skaffold /usr/local/bin` **macOS amd64** `curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/v2.6.3/skaffold-darwin-amd64 && chmod +x skaffold && sudo mv skaffold /usr/local/bin` **macOS arm64** `curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/v2.6.3/skaffold-darwin-arm64 && chmod +x skaffold && sudo mv skaffold /usr/local/bin` **Windows** https://storage.googleapis.com/skaffold/releases/v2.6.3/skaffold-windows-amd64.exe **Docker image** `gcr.io/k8s-skaffold/skaffold:v2.6.3` **Full Changelog**: GoogleContainerTools/skaffold@v2.6.2...v2.6.3 </details> <details> <summary>ajeetdsouza/zoxide (ajeetdsouza/zoxide)</summary> ### [`v0.9.2`](https://github.com/ajeetdsouza/zoxide/releases/tag/v0.9.2): 0.9.2 [Compare Source](https://github.com/ajeetdsouza/zoxide/compare/v0.9.1...v0.9.2) ##### Added - Short option `-a` for `zoxide query --all`. ##### Fixed - PowerShell: use `global` scope for variables / functions. </details> <details> <summary>aquaproj/aqua-registry (aquaproj/aqua-registry)</summary> ### [`v4.32.2`](https://github.com/aquaproj/aqua-registry/releases/tag/v4.32.2) [Compare Source](https://github.com/aquaproj/aqua-registry/compare/v4.32.1...v4.32.2) [Issues](https://github.com/aquaproj/aqua-registry/issues?q=is%3Aissue+milestone%3Av4.32.2) | [Pull Requests](https://github.com/aquaproj/aqua-registry/pulls?q=is%3Apr+milestone%3Av4.32.2) | aquaproj/aqua-registry@v4.32.1...v4.32.2 ##### Fixes [#​14327](https://github.com/aquaproj/aqua-registry/issues/14327) Rename kyleconroy/sqlc to sqlc-dev/sqlc as of repository migration [@​ichizero](https://github.com/ichizero) [#​14339](https://github.com/aquaproj/aqua-registry/issues/14339) sqlc-dev/sqlc: Support old versions ### [`v4.32.1`](https://github.com/aquaproj/aqua-registry/releases/tag/v4.32.1) [Compare Source](https://github.com/aquaproj/aqua-registry/compare/v4.32.0...v4.32.1) [Issues](https://github.com/aquaproj/aqua-registry/issues?q=is%3Aissue+milestone%3Av4.32.1) | [Pull Requests](https://github.com/aquaproj/aqua-registry/pulls?q=is%3Apr+milestone%3Av4.32.1) | aquaproj/aqua-registry@v4.32.0...v4.32.1 #### Fixes [#​14275](https://github.com/aquaproj/aqua-registry/issues/14275) [#​14276](https://github.com/aquaproj/aqua-registry/issues/14276) [#​14277](https://github.com/aquaproj/aqua-registry/issues/14277) [#​14278](https://github.com/aquaproj/aqua-registry/issues/14278) [domoritz/arrow-tools/{csv2arrow,csv2parquet,json2arrow,json2parquet}](https://github.com/domoritz/arrow-tools): Follow up changes of asset names </details> <details> <summary>jesseduffield/lazygit (jesseduffield/lazygit)</summary> ### [`v0.40.0`](https://github.com/jesseduffield/lazygit/releases/tag/v0.40.0) [Compare Source](https://github.com/jesseduffield/lazygit/compare/v0.39.4...v0.40.0) <!-- Release notes generated using configuration in .github/release.yml at v0.40.0 --> ### 🎉 LAZYGIT FIVE YEAR ANNIVERSARY EDITION 🎉 Holy moly, has it really been 5 years since Lazygit's birth? Time flies when you're having fun. I've written a post celebrating the anniversary [here](https://jesseduffield.com/Lazygit-5-Years-On). As for this release, we've got some great features here. ##### Worktrees We now have a worktrees view so you can easily create worktrees and switch to them and so on. I'm not a big worktrees user myself so please raise an issue if you can think of places to improve the UX. ![worktree_create_from_branches-compressed](https://github.com/jesseduffield/lazygit/assets/8456633/3ef0b085-e9d0-42de-af58-16cbae581d34) ##### Rebase --onto Rebasing onto a marked base commit is a very useful feature that we've been sorely lacking for a while (demo coming soon) ##### Auto-refresh on window focus Auto-refresh on window activation is a complete game-changer. No more having to manually press shift+R when you come back from your editor. ##### Nuking the worktree We also have a fun enhancement in this release: showing an explosion animation when you nuke the working tree. ![nuke-gif](https://github.com/jesseduffield/lazygit/assets/8456633/32b3f91c-fea3-474d-8997-1de2f5e4f5d4) You'll also notice in the readme we've got some updated demo gifs to showoff Lazygit's features. More of those to come. #### What's Changed ##### Features ✨ - Add worktrees view by [@​jesseduffield](https://github.com/jesseduffield) (with help from [@​kadaan](https://github.com/kadaan)) in [https://github.com/jesseduffield/lazygit/pull/2147](https://github.com/jesseduffield/lazygit/pull/2147) - Rebase onto branch from a marked base commit by [@​stefanhaller](https://github.com/stefanhaller) in [https://github.com/jesseduffield/lazygit/pull/2835](https://github.com/jesseduffield/lazygit/pull/2835) - Auto-refresh on window activation by [@​stefanhaller](https://github.com/stefanhaller) in [https://github.com/jesseduffield/lazygit/pull/2854](https://github.com/jesseduffield/lazygit/pull/2854) ##### Enhancements 🔥 - Faster refresh by [@​jesseduffield](https://github.com/jesseduffield) in [https://github.com/jesseduffield/lazygit/pull/2841](https://github.com/jesseduffield/lazygit/pull/2841) - feat: add os.copyToClipboardCmd to allow for a custom command [#​1055](https://github.com/jesseduffield/lazygit/issues/1055) by [@​redstreet](https://github.com/redstreet) in [https://github.com/jesseduffield/lazygit/pull/2784](https://github.com/jesseduffield/lazygit/pull/2784) - Add bisect menu entry that lets you choose bisect terms by [@​stefanhaller](https://github.com/stefanhaller) in [https://github.com/jesseduffield/lazygit/pull/2838](https://github.com/jesseduffield/lazygit/pull/2838) - When bisecting, always mark the current commit as good/bad, not the selected by [@​stefanhaller](https://github.com/stefanhaller) in [https://github.com/jesseduffield/lazygit/pull/2837](https://github.com/jesseduffield/lazygit/pull/2837) - Visualize local branch heads in commits panel, 2nd approach by [@​stefanhaller](https://github.com/stefanhaller) in [https://github.com/jesseduffield/lazygit/pull/2775](https://github.com/jesseduffield/lazygit/pull/2775) - Allow force-tagging if tag exists by [@​stefanhaller](https://github.com/stefanhaller) in [https://github.com/jesseduffield/lazygit/pull/2827](https://github.com/jesseduffield/lazygit/pull/2827) - Save IgnoreWhitespaceInDiffView in state.yml by [@​stefanhaller](https://github.com/stefanhaller) in [https://github.com/jesseduffield/lazygit/pull/2830](https://github.com/jesseduffield/lazygit/pull/2830) - Show loader when rebasing by [@​KarlHeitmann](https://github.com/KarlHeitmann) in [https://github.com/jesseduffield/lazygit/pull/2851](https://github.com/jesseduffield/lazygit/pull/2851) - Internationalise logging of commands by [@​KarlHeitmann](https://github.com/KarlHeitmann) in [https://github.com/jesseduffield/lazygit/pull/2852](https://github.com/jesseduffield/lazygit/pull/2852) - Show visual explosion effect when nuking worktree by [@​jesseduffield](https://github.com/jesseduffield) in [https://github.com/jesseduffield/lazygit/pull/2861](https://github.com/jesseduffield/lazygit/pull/2861) ##### Fixes 🔧 - Fix issue where using `null` to un-map a keybinding was ignored by [@​hatredholder](https://github.com/hatredholder) in [https://github.com/jesseduffield/lazygit/pull/2832](https://github.com/jesseduffield/lazygit/pull/2832) - Show error when trying to open patch menu with an empty patch by [@​stefanhaller](https://github.com/stefanhaller) in [https://github.com/jesseduffield/lazygit/pull/2829](https://github.com/jesseduffield/lazygit/pull/2829) - Fix merge status for update-ref command by [@​stefanhaller](https://github.com/stefanhaller) in [https://github.com/jesseduffield/lazygit/pull/2845](https://github.com/jesseduffield/lazygit/pull/2845) - Stop worktrees view from stealing the window by [@​jesseduffield](https://github.com/jesseduffield) in [https://github.com/jesseduffield/lazygit/pull/2863](https://github.com/jesseduffield/lazygit/pull/2863) - Fix confirmation view sizing by [@​jesseduffield](https://github.com/jesseduffield) in [https://github.com/jesseduffield/lazygit/pull/2879](https://github.com/jesseduffield/lazygit/pull/2879) ##### Maintenance ⚙️ - Standardise on using lo for slice functions by [@​jesseduffield](https://github.com/jesseduffield) in [https://github.com/jesseduffield/lazygit/pull/2846](https://github.com/jesseduffield/lazygit/pull/2846) - Remove redundant secureexec package by [@​jesseduffield](https://github.com/jesseduffield) in [https://github.com/jesseduffield/lazygit/pull/2847](https://github.com/jesseduffield/lazygit/pull/2847) - Add automated demo recordings by [@​jesseduffield](https://github.com/jesseduffield) in [https://github.com/jesseduffield/lazygit/pull/2853](https://github.com/jesseduffield/lazygit/pull/2853) - Remove file watcher code by [@​jesseduffield](https://github.com/jesseduffield) in [https://github.com/jesseduffield/lazygit/pull/2865](https://github.com/jesseduffield/lazygit/pull/2865) - Add more demos to the README by [@​jesseduffield](https://github.com/jesseduffield) in [https://github.com/jesseduffield/lazygit/pull/2866](https://github.com/jesseduffield/lazygit/pull/2866) - Move features to top of readme by [@​jesseduffield](https://github.com/jesseduffield) in [https://github.com/jesseduffield/lazygit/pull/2867](https://github.com/jesseduffield/lazygit/pull/2867) - Add more demos by [@​jesseduffield](https://github.com/jesseduffield) in [https://github.com/jesseduffield/lazygit/pull/2874](https://github.com/jesseduffield/lazygit/pull/2874) ##### Other Changes - Create demo output dir if it doesn't already exist by [@​jesseduffield](https://github.com/jesseduffield) in [https://github.com/jesseduffield/lazygit/pull/2857](https://github.com/jesseduffield/lazygit/pull/2857) #### New Contributors - [@​hatredholder](https://github.com/hatredholder) made their first contribution in [https://github.com/jesseduffield/lazygit/pull/2832](https://github.com/jesseduffield/lazygit/pull/2832) - [@​redstreet](https://github.com/redstreet) made their first contribution in [https://github.com/jesseduffield/lazygit/pull/2784](https://github.com/jesseduffield/lazygit/pull/2784) - [@​kadaan](https://github.com/kadaan) made their first contribution in [https://github.com/jesseduffield/lazygit/pull/2147](https://github.com/jesseduffield/lazygit/pull/2147) - [@​KarlHeitmann](https://github.com/KarlHeitmann) made their first contribution in [https://github.com/jesseduffield/lazygit/pull/2851](https://github.com/jesseduffield/lazygit/pull/2851) **Full Changelog**: jesseduffield/lazygit@v0.39.4...v0.40.0 </details> <details> <summary>weaveworks/eksctl (weaveworks/eksctl)</summary> ### [`v0.151.0`](https://github.com/eksctl-io/eksctl/releases/tag/v0.151.0): eksctl 0.151.0 (permalink) [Compare Source](https://github.com/weaveworks/eksctl/compare/0.150.0...0.151.0) ### Release v0.151.0 #### 🚀 Features - Support custom AMIs for self-managed Windows nodegroups ([#​6804](https://github.com/weaveworks/eksctl/issues/6804)) - Support custom Ubuntu AMIs for EKS-managed nodegroups ([#​6850](https://github.com/weaveworks/eksctl/issues/6850)) #### 🎯 Improvements - Remove support for EKS 1.22 ([#​6704](https://github.com/weaveworks/eksctl/issues/6704)) #### 🐛 Bug Fixes - Fix error with tar in `Post Cache go-build and mod` step ([#​6840](https://github.com/weaveworks/eksctl/issues/6840)) - Fix setting link-time variables for release version ([#​6841](https://github.com/weaveworks/eksctl/issues/6841)) - Select one subnet for AZs where multiple are present and no VPC config provided ([#​6814](https://github.com/weaveworks/eksctl/issues/6814)) - Paginate instance type offerings response ([#​6832](https://github.com/weaveworks/eksctl/issues/6832)) #### 🧰 Maintenance - Bump dependencies ([#​6852](https://github.com/weaveworks/eksctl/issues/6852), [#​6859](https://github.com/weaveworks/eksctl/issues/6859)) - Cleanup Flux Integration ([#​6836](https://github.com/weaveworks/eksctl/issues/6836)) #### Acknowledgments Weaveworks would like to sincerely thank: [@​watany-dev](https://github.com/watany-dev) </details> --- ### Configuration 📅 **Schedule**: Branch creation - "after 4pm on thursday" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/scottames/dots). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi4yNy4xIiwidXBkYXRlZEluVmVyIjoiMzYuMjcuMSIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
feat: add os.copyToClipboardCmd to allow for a custom command
Please check if the PR fulfills these requirements
go run scripts/cheatsheet/main.go generate
)docs/Config.md
) have been updated if necessary