Merge remote-tracking branch 'upstream/main' into unique-array-custom-api

This commit is contained in:
Svilen Markov
2025-04-13 15:54:52 +01:00
12 changed files with 2207 additions and 20 deletions

View File

@@ -5,15 +5,19 @@ import (
"fmt"
"os"
"strings"
"github.com/shirou/gopsutil/v4/sensors"
)
type cliIntent uint8
const (
cliIntentServe cliIntent = iota
cliIntentConfigValidate = iota
cliIntentConfigPrint = iota
cliIntentDiagnose = iota
cliIntentVersionPrint cliIntent = iota
cliIntentServe
cliIntentConfigValidate
cliIntentConfigPrint
cliIntentDiagnose
cliIntentSensorsPrint
)
type cliOptions struct {
@@ -22,6 +26,15 @@ type cliOptions struct {
}
func parseCliOptions() (*cliOptions, error) {
var args []string
args = os.Args[1:]
if len(args) == 1 && (args[0] == "--version" || args[0] == "-v" || args[0] == "version") {
return &cliOptions{
intent: cliIntentVersionPrint,
}, nil
}
flags := flag.NewFlagSet("", flag.ExitOnError)
flags.Usage = func() {
fmt.Println("Usage: glance [options] command")
@@ -32,6 +45,7 @@ func parseCliOptions() (*cliOptions, error) {
fmt.Println("\nCommands:")
fmt.Println(" config:validate Validate the config file")
fmt.Println(" config:print Print the parsed config file with embedded includes")
fmt.Println(" sensors:print List all sensors")
fmt.Println(" diagnose Run diagnostic checks")
}
configPath := flags.String("config", "glance.yml", "Set config path")
@@ -41,7 +55,7 @@ func parseCliOptions() (*cliOptions, error) {
}
var intent cliIntent
var args = flags.Args()
args = flags.Args()
unknownCommandErr := fmt.Errorf("unknown command: %s", strings.Join(args, " "))
if len(args) == 0 {
@@ -51,6 +65,8 @@ func parseCliOptions() (*cliOptions, error) {
intent = cliIntentConfigValidate
} else if args[0] == "config:print" {
intent = cliIntentConfigPrint
} else if args[0] == "sensors:print" {
intent = cliIntentSensorsPrint
} else if args[0] == "diagnose" {
intent = cliIntentDiagnose
} else {
@@ -65,3 +81,22 @@ func parseCliOptions() (*cliOptions, error) {
configPath: *configPath,
}, nil
}
func cliSensorsPrint() int {
tempSensors, err := sensors.SensorsTemperatures()
if err != nil {
fmt.Printf("Failed to retrieve list of sensors: %v\n", err)
return 1
}
if len(tempSensors) == 0 {
fmt.Println("No sensors found")
return 0
}
for _, sensor := range tempSensors {
fmt.Printf("%s: %.1f°C\n", sensor.SensorKey, sensor.Temperature)
}
return 0
}

View File

@@ -81,7 +81,9 @@ var diagnosticSteps = []diagnosticStep{
{
name: "fetch data from Yahoo finance API",
fn: func() (string, error) {
return testHttpRequest("GET", "https://query1.finance.yahoo.com/v8/finance/chart/NVDA", 200)
return testHttpRequestWithHeaders("GET", "https://query1.finance.yahoo.com/v8/finance/chart/NVDA", map[string]string{
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:137.0) Gecko/20100101 Firefox/137.0",
}, 200)
},
},
{

View File

@@ -18,6 +18,8 @@ func Main() int {
}
switch options.intent {
case cliIntentVersionPrint:
fmt.Println(buildVersion)
case cliIntentServe:
// remove in v0.10.0
if serveUpdateNoticeIfConfigLocationNotMigrated(options.configPath) {
@@ -47,6 +49,8 @@ func Main() int {
}
fmt.Println(string(contents))
case cliIntentSensorsPrint:
return cliSensorsPrint()
case cliIntentDiagnose:
runDiagnostic()
}

View File

File diff suppressed because it is too large Load Diff

View File

@@ -22,7 +22,7 @@
</div>
</div>
<div class="min-width-0">
<div class="min-width-0 grow">
{{- if .URL }}
<a href="{{ .URL | safeURL }}" class="color-highlight size-title-dynamic block text-truncate" {{ if not .SameTab }}target="_blank"{{ end }} rel="noreferrer">{{ .Title }}</a>
{{- else }}