forked from kryptco/kr
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathanalytics_ua_linux.go
More file actions
34 lines (28 loc) · 903 Bytes
/
analytics_ua_linux.go
File metadata and controls
34 lines (28 loc) · 903 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package kr
import (
"fmt"
"os/exec"
"strings"
"sync"
)
var analytics_user_agent = fmt.Sprintf("Mozilla/5.0 (X11; Linux) (KHTML, like Gecko) Version/%s kr/%s", CURRENT_VERSION, CURRENT_VERSION)
const analytics_os = "Linux"
var cachedAnalyticsOSVersion *string
var osVersionMutex sync.Mutex
func getAnalyticsOSVersion() *string {
osVersionMutex.Lock()
defer osVersionMutex.Unlock()
if cachedAnalyticsOSVersion != nil {
return cachedAnalyticsOSVersion
}
analytics_os_version_bytes, err := exec.Command("grep", "PRETTY_NAME", "/etc/os-release").Output()
if err != nil {
log.Error("error retrieving OS version:", err.Error())
return nil
}
stripped := strings.TrimSpace(string(analytics_os_version_bytes))
stripped = strings.TrimPrefix(stripped, "PRETTY_NAME=\"")
stripped = strings.TrimSuffix(stripped, "\"")
cachedAnalyticsOSVersion = &stripped
return cachedAnalyticsOSVersion
}