From 2a844fda543a147fec124ec6de84df464050ebf6 Mon Sep 17 00:00:00 2001 From: Nate Meyer <672246+notnmeyer@users.noreply.github.com> Date: Tue, 10 Jun 2025 19:37:07 -0700 Subject: [PATCH 1/9] add copy cmd --- cmd/copy.go | 34 ++++++++++++++++++++++++++++++++++ go.mod | 9 +++++++-- go.sum | 10 ++++++++-- 3 files changed, 49 insertions(+), 4 deletions(-) create mode 100644 cmd/copy.go diff --git a/cmd/copy.go b/cmd/copy.go new file mode 100644 index 0000000..761c4da --- /dev/null +++ b/cmd/copy.go @@ -0,0 +1,34 @@ +package cmd + +import ( + "fmt" + "log" + + "github.com/notnmeyer/daylog-cli/internal/daylog" + "github.com/spf13/cobra" + "golang.design/x/clipboard" +) + +var copyCmd = &cobra.Command{ + Use: "copy", + Short: "Copy the specified log to the clipboard", + Long: "Copy the specified log to the clipboard", + Run: func(cmd *cobra.Command, args []string) { + dl, err := daylog.New(args, config.Project) + if err != nil { + log.Fatal(err) + } + + logContents, err := dl.Show("text") + if err != nil { + log.Fatalf("%s", err.Error()) + } + + fmt.Println("Copied to clipboard.") + clipboard.Write(clipboard.FmtText, []byte(logContents)) + }, +} + +func init() { + rootCmd.AddCommand(copyCmd) +} diff --git a/go.mod b/go.mod index 3b3725e..a29c649 100644 --- a/go.mod +++ b/go.mod @@ -1,13 +1,15 @@ module github.com/notnmeyer/daylog-cli -go 1.21 +go 1.23.0 + +toolchain go1.24.3 require ( github.com/adrg/xdg v0.4.0 - github.com/arl/dirtree v0.1.3 github.com/charmbracelet/glamour v0.6.0 github.com/markusmobius/go-dateparser v1.2.3 github.com/spf13/cobra v1.8.0 + golang.design/x/clipboard v0.7.0 ) require ( @@ -36,6 +38,9 @@ require ( github.com/yuin/goldmark v1.5.2 // indirect github.com/yuin/goldmark-emoji v1.0.1 // indirect golang.org/x/exp v0.0.0-20220321173239-a90fa8a75705 // indirect + golang.org/x/exp/shiny v0.0.0-20250606033433-dcc06ee1d476 // indirect + golang.org/x/image v0.14.0 // indirect + golang.org/x/mobile v0.0.0-20231127183840-76ac6878050a // indirect golang.org/x/net v0.22.0 // indirect golang.org/x/sys v0.18.0 // indirect golang.org/x/text v0.14.0 // indirect diff --git a/go.sum b/go.sum index 4cffa1c..34244e8 100644 --- a/go.sum +++ b/go.sum @@ -2,8 +2,6 @@ github.com/adrg/xdg v0.4.0 h1:RzRqFcjH4nE5C6oTAxhBtoE2IRyjBSa62SCbyPidvls= github.com/adrg/xdg v0.4.0/go.mod h1:N6ag73EX4wyxeaoeHctc1mas01KZgsj5tYiAIwqJE/E= github.com/alecthomas/chroma v0.10.0 h1:7XDcGkCQopCNKjZHfYrNLraA+M7e0fMiJ/Mfikbfjek= github.com/alecthomas/chroma v0.10.0/go.mod h1:jtJATyUxlIORhUOFNA9NZDWGAQ8wpxQQqNSB4rjA/1s= -github.com/arl/dirtree v0.1.3 h1:Q1ldIP0t4CQH3vUujlSgHEKwa6TqloXuxLNQRJHpl5w= -github.com/arl/dirtree v0.1.3/go.mod h1:uVPZKJm2M2hHWWUw+47yimVo48wNHtXEs19wwQOmy/U= github.com/aymanbagabas/go-osc52 v1.0.3 h1:DTwqENW7X9arYimJrPeGZcV0ln14sGMt3pHZspWD+Mg= github.com/aymanbagabas/go-osc52 v1.0.3/go.mod h1:zT8H+Rk4VSabYN90pWyugflM3ZhpTZNC7cASDfUCdT4= github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= @@ -74,8 +72,16 @@ github.com/yuin/goldmark v1.5.2 h1:ALmeCk/px5FSm1MAcFBAsVKZjDuMVj8Tm7FFIlMJnqU= github.com/yuin/goldmark v1.5.2/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yuin/goldmark-emoji v1.0.1 h1:ctuWEyzGBwiucEqxzwe0SOYDXPAucOrE9NQC18Wa1os= github.com/yuin/goldmark-emoji v1.0.1/go.mod h1:2w1E6FEWLcDQkoTE+7HU6QF1F6SLlNGjRIBbIZQFqkQ= +golang.design/x/clipboard v0.7.0 h1:4Je8M/ys9AJumVnl8m+rZnIvstSnYj1fvzqYrU3TXvo= +golang.design/x/clipboard v0.7.0/go.mod h1:PQIvqYO9GP29yINEfsEn5zSQKAz3UgXmZKzDA6dnq2E= golang.org/x/exp v0.0.0-20220321173239-a90fa8a75705 h1:ba9YlqfDGTTQ5aZ2fwOoQ1hf32QySyQkR6ODGDzHlnE= golang.org/x/exp v0.0.0-20220321173239-a90fa8a75705/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE= +golang.org/x/exp/shiny v0.0.0-20250606033433-dcc06ee1d476 h1:Wdx0vgH5Wgsw+lF//LJKmWOJBLWX6nprsMqnf99rYDE= +golang.org/x/exp/shiny v0.0.0-20250606033433-dcc06ee1d476/go.mod h1:ygj7T6vSGhhm/9yTpOQQNvuAUFziTH7RUiH74EoE2C8= +golang.org/x/image v0.14.0 h1:tNgSxAFe3jC4uYqvZdTr84SZoM1KfwdC9SKIFrLjFn4= +golang.org/x/image v0.14.0/go.mod h1:HUYqC05R2ZcZ3ejNQsIHQDQiwWM4JBqmm6MKANTp4LE= +golang.org/x/mobile v0.0.0-20231127183840-76ac6878050a h1:sYbmY3FwUWCBTodZL1S3JUuOvaW6kM2o+clDzzDNBWg= +golang.org/x/mobile v0.0.0-20231127183840-76ac6878050a/go.mod h1:Ede7gF0KGoHlj822RtphAHK1jLdrcuRBZg0sF1Q+SPc= golang.org/x/net v0.0.0-20221002022538-bcab6841153b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= From 9e17445d1d1346784703d1aaddcf3a31f9aedfa5 Mon Sep 17 00:00:00 2001 From: Nate Meyer <672246+notnmeyer@users.noreply.github.com> Date: Tue, 10 Jun 2025 19:37:32 -0700 Subject: [PATCH 2/9] format tasks.toml and add "new:command" for stubbing new commands --- tasks.toml | 28 +++++++++------------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/tasks.toml b/tasks.toml index 835698a..c017637 100644 --- a/tasks.toml +++ b/tasks.toml @@ -1,30 +1,20 @@ [tasks.deps] -cmds = [ - "go mod tidy" -] +cmds = ["go mod tidy"] [tasks.build] -cmds = [ - "go build -o dist/daylog ./main.go {{.CLI_ARGS}}" -] +cmds = ["go build -o dist/daylog ./main.go {{.CLI_ARGS}}"] [tasks."build:demo"] -cmds = [ - "nix-shell -p ffmpeg ttyd vhs --run \"vhs demo/demo.tape\"", -] +cmds = ["nix-shell -p ffmpeg ttyd vhs --run \"vhs demo/demo.tape\""] [tasks.run] -cmds = [ - "go run main.go {{.CLI_ARGS}}" -] +cmds = ["go run main.go {{.CLI_ARGS}}"] [tasks.test] -cmds = [ - "go test ./... -race" -] +cmds = ["go test ./... -race"] [tasks.release] -cmds = [ - "git tag {{.CLI_ARGS}}", - "git push origin --tags", -] +cmds = ["git tag {{.CLI_ARGS}}", "git push origin --tags"] + +[tasks."new:command"] +cmds = ["cobra-cli add {{.CLI_ARGS}}"] From 65c2c1e9fe1845377249f18e16c7f280d451080a Mon Sep 17 00:00:00 2001 From: Nate Meyer <672246+notnmeyer@users.noreply.github.com> Date: Tue, 10 Jun 2025 19:38:30 -0700 Subject: [PATCH 3/9] go 1.24 --- .github/workflows/release.yml | 2 +- .github/workflows/test.yml | 2 +- shell.nix | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b612430..ab6068a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -19,7 +19,7 @@ jobs: - run: git fetch --force --tags - uses: actions/setup-go@v5 with: - go-version: 1.23 + go-version: 1.24 - uses: goreleaser/goreleaser-action@v5 with: distribution: goreleaser diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 088719c..d7a5784 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,7 +11,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: - go-version: 1.23 + go-version: 1.24 - uses: Homebrew/actions/setup-homebrew@master - run: brew install notnmeyer/tsk/tsk - run: tsk test diff --git a/shell.nix b/shell.nix index d20f0ff..bdcc745 100644 --- a/shell.nix +++ b/shell.nix @@ -3,7 +3,7 @@ pkgs.mkShell { packages = with pkgs; [ delve - go_1_23 + go_1_24 gopls goreleaser ]; From 32190186e3096d8a9d2a65e263bb43873242f576 Mon Sep 17 00:00:00 2001 From: Nate Meyer <672246+notnmeyer@users.noreply.github.com> Date: Tue, 10 Jun 2025 19:48:37 -0700 Subject: [PATCH 4/9] see if this fixes the builds --- .github/workflows/test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d7a5784..ed8c2cb 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,6 +12,7 @@ jobs: - uses: actions/setup-go@v5 with: go-version: 1.24 + - run: sudo apt-get install libx11-dev - uses: Homebrew/actions/setup-homebrew@master - run: brew install notnmeyer/tsk/tsk - run: tsk test From a2863979d0833b62db57e707ba2cc857efc4f20d Mon Sep 17 00:00:00 2001 From: Nate Meyer <672246+notnmeyer@users.noreply.github.com> Date: Tue, 10 Jun 2025 19:53:20 -0700 Subject: [PATCH 5/9] add libx11-dev to the release workflow and update the readme --- .github/workflows/release.yml | 1 + README.md | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ab6068a..6ed28de 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,6 +20,7 @@ jobs: - uses: actions/setup-go@v5 with: go-version: 1.24 + - run: sudo apt-get install libx11-dev - uses: goreleaser/goreleaser-action@v5 with: distribution: goreleaser diff --git a/README.md b/README.md index b442fbd..385423c 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ brew install daylog Or grab a release directly from the [releases page]() -### Install from source +### From source 1. Build the project with, `go build -o ~/bin/daylog main.go`, substituting `~/bin/daylog` for a different path if you prefer. @@ -40,3 +40,5 @@ Or grab a release directly from the [releases page]() DayyyyyyyyyyLLooooooooog! ![image](https://github.com/notnmeyer/daylog-cli/assets/672246/949b7eee-aa63-484a-a366-231462ac9563) + +If you're building on Linux, you may need to install X11 headers. Depending on your distro that could be `libx11-dev` (Debian/Ubuntu), `libx11-devel` (Fedora/RHEL/CentOS), or `libx11` (arch). From 233cdc5bcc3048877fa35e59c95e16c03d9e5332 Mon Sep 17 00:00:00 2001 From: Nate Meyer <672246+notnmeyer@users.noreply.github.com> Date: Thu, 12 Jun 2025 20:58:28 -0700 Subject: [PATCH 6/9] nix deps to build on linux --- shell.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/shell.nix b/shell.nix index bdcc745..2e037e7 100644 --- a/shell.nix +++ b/shell.nix @@ -11,4 +11,7 @@ pkgs.mkShell { shellHook = '' go install github.com/spf13/cobra-cli@latest ''; + + nativeBuildInputs = [ pkgs.gcc pkgs.pkg-config ]; + buildInputs = pkgs.lib.optionals pkgs.stdenv.isLinux [ pkgs.xorg.libX11 ]; } From efac992cf53f74c8921b8210eb1a28100573f833 Mon Sep 17 00:00:00 2001 From: Nate Meyer <672246+notnmeyer@users.noreply.github.com> Date: Thu, 12 Jun 2025 21:02:02 -0700 Subject: [PATCH 7/9] confirm clipboard copy after it happens --- cmd/copy.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/copy.go b/cmd/copy.go index 761c4da..6d6fdc9 100644 --- a/cmd/copy.go +++ b/cmd/copy.go @@ -24,8 +24,8 @@ var copyCmd = &cobra.Command{ log.Fatalf("%s", err.Error()) } - fmt.Println("Copied to clipboard.") clipboard.Write(clipboard.FmtText, []byte(logContents)) + fmt.Println("Copied to clipboard.") }, } From a66930581768b0dfb4506fedab48341935302640 Mon Sep 17 00:00:00 2001 From: Nate Meyer <672246+notnmeyer@users.noreply.github.com> Date: Thu, 12 Jun 2025 21:11:08 -0700 Subject: [PATCH 8/9] check clipboard is available --- cmd/copy.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/cmd/copy.go b/cmd/copy.go index 6d6fdc9..55af6b2 100644 --- a/cmd/copy.go +++ b/cmd/copy.go @@ -24,11 +24,24 @@ var copyCmd = &cobra.Command{ log.Fatalf("%s", err.Error()) } - clipboard.Write(clipboard.FmtText, []byte(logContents)) + err = copy([]byte(logContents)) + if err != nil { + panic(err) + } + fmt.Println("Copied to clipboard.") }, } +func copy(content []byte) error { + err := clipboard.Init() + if err != nil { + return err + } + clipboard.Write(clipboard.FmtText, content) + return nil +} + func init() { rootCmd.AddCommand(copyCmd) } From 71e4b010502bf0649868024fc1d6b46a85fa302b Mon Sep 17 00:00:00 2001 From: Nate Meyer <672246+notnmeyer@users.noreply.github.com> Date: Thu, 12 Jun 2025 21:16:04 -0700 Subject: [PATCH 9/9] Update cmd/copy.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- cmd/copy.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/copy.go b/cmd/copy.go index 55af6b2..92e07e9 100644 --- a/cmd/copy.go +++ b/cmd/copy.go @@ -26,7 +26,7 @@ var copyCmd = &cobra.Command{ err = copy([]byte(logContents)) if err != nil { - panic(err) + log.Fatalf("Failed to copy to clipboard: %v", err) } fmt.Println("Copied to clipboard.")