From ab9af8ba995605450c371035c46c9bac3fdc4c91 Mon Sep 17 00:00:00 2001 From: Pascal Fischer Date: Thu, 8 Feb 2024 15:09:25 +0100 Subject: [PATCH] run on darwin as e.g. AWS allows macOS on EC2 --- detect.go | 78 +++++++++++++++++++++++++++---------------------------- 1 file changed, 38 insertions(+), 40 deletions(-) diff --git a/detect.go b/detect.go index bf62f4f..a9f9844 100644 --- a/detect.go +++ b/detect.go @@ -3,7 +3,6 @@ package libdetectcloud import ( "context" "net/http" - "runtime" "sync" "time" ) @@ -11,52 +10,51 @@ import ( var hc = &http.Client{Timeout: 300 * time.Millisecond} func Detect() string { - if runtime.GOOS != "darwin" { - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() - detectFuncs := []func() string{ - detectAlibabaCloud, - detectAWS, - detectAzure, - detectDigitalOcean, - detectGCE, - detectOpenStack, - detectSoftlayer, - detectVultr, - detectContainer, - } + detectFuncs := []func() string{ + detectAlibabaCloud, + detectAWS, + detectAzure, + detectDigitalOcean, + detectGCE, + detectOpenStack, + detectSoftlayer, + detectVultr, + detectContainer, + } - results := make(chan string, len(detectFuncs)) + results := make(chan string, len(detectFuncs)) - var wg sync.WaitGroup - wg.Add(len(detectFuncs)) + var wg sync.WaitGroup + wg.Add(len(detectFuncs)) - for _, fn := range detectFuncs { - go func(f func() string) { - defer wg.Done() - select { - case <-ctx.Done(): - return - default: - if result := f(); result != "" { - results <- result - cancel() - } + for _, fn := range detectFuncs { + go func(f func() string) { + defer wg.Done() + select { + case <-ctx.Done(): + return + default: + if result := f(); result != "" { + results <- result + cancel() } - }(fn) - } - - go func() { - wg.Wait() - close(results) - }() - - for result := range results { - if result != "" { - return result } + }(fn) + } + + go func() { + wg.Wait() + close(results) + }() + + for result := range results { + if result != "" { + return result } } + return "" }