From bb32302838ca14b3a43b771d4757d10636fcd1fc Mon Sep 17 00:00:00 2001 From: Sigalas Alexandros Date: Fri, 1 Feb 2019 17:40:02 +0200 Subject: [PATCH] Windows support --- .goreleaser.yml | 5 +++++ internal/exit.go | 17 +++++++++++++++++ internal/exit_windows.go | 17 +++++++++++++++++ yjq.go | 13 ++----------- 4 files changed, 41 insertions(+), 11 deletions(-) create mode 100644 internal/exit.go create mode 100644 internal/exit_windows.go diff --git a/.goreleaser.yml b/.goreleaser.yml index af3639e..39d4d45 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -9,6 +9,11 @@ before: builds: - env: - CGO_ENABLED=0 + goos: + - linux + - darwin + - windows + - freebsd archive: replacements: darwin: Darwin diff --git a/internal/exit.go b/internal/exit.go new file mode 100644 index 0000000..f81e324 --- /dev/null +++ b/internal/exit.go @@ -0,0 +1,17 @@ +//+build !windows + +package internal + +import ( + "os/exec" + "syscall" +) + +func ExitCode(err error) int { + if err, ok := err.(*exec.ExitError); ok { + if code, ok := err.ProcessState.Sys().(syscall.WaitStatus); ok { + return int(code) + } + } + return 2 +} diff --git a/internal/exit_windows.go b/internal/exit_windows.go new file mode 100644 index 0000000..56e5d12 --- /dev/null +++ b/internal/exit_windows.go @@ -0,0 +1,17 @@ +//+build windows + +package internal + +import ( + "os/exec" + "syscall" +) + +func ExitCode(err error) int { + if err, ok := err.(*exec.ExitError); ok { + if status, ok := err.ProcessState.Sys().(syscall.WaitStatus); ok { + return int(status.ExitCode) + } + } + return 2 +} diff --git a/yjq.go b/yjq.go index f0e8f14..f1dda7d 100644 --- a/yjq.go +++ b/yjq.go @@ -7,8 +7,8 @@ import ( "os" "os/exec" "sync" - "syscall" + "github.com/alxarch/yjq/internal" "github.com/alxarch/yjq/internal/yjq" "github.com/spf13/pflag" ) @@ -144,17 +144,8 @@ func main() { } } -func exitCode(err error) int { - if err, ok := err.(*exec.ExitError); ok { - if code, ok := err.ProcessState.Sys().(syscall.WaitStatus); ok { - return int(code) - } - } - return 2 -} - func onExit(err error) { - switch code := exitCode(err); code { + switch code := internal.ExitCode(err); code { case 2, 3: logger.Println(err) fallthrough