2022-09-07 15:09:50 +02:00
package main
import (
2022-09-09 10:45:27 +02:00
"io/ioutil"
2022-09-07 17:28:27 +02:00
"os"
2022-12-14 23:48:42 +01:00
"os/exec"
2022-09-09 21:41:50 +02:00
"path/filepath"
2022-09-07 17:28:27 +02:00
"strconv"
"strings"
2022-09-09 22:24:04 +02:00
2022-09-22 14:44:27 +02:00
"github.com/exhq/neowofetch/data"
2022-09-22 14:05:20 +02:00
"github.com/exhq/neowofetch/utils"
2022-09-07 15:09:50 +02:00
)
2022-09-08 17:57:10 +02:00
var isuwuified bool = true
2022-09-18 16:20:27 +02:00
2022-10-16 14:02:02 +02:00
func checkforconfigfolder ( ) {
_ , folder := os . Stat ( data . GetHome ( ) + "/.config" )
2022-10-14 21:09:40 +02:00
if os . IsNotExist ( folder ) {
os . Mkdir ( data . GetHome ( ) + "/.config" , os . ModePerm )
}
}
2022-12-14 23:48:42 +01:00
2022-12-15 00:01:45 +01:00
func getShellVersion ( shellCommand string ) string {
2022-12-14 23:48:42 +01:00
// https://www.youtube.com/watch?v=YPN0qhSyWy8
2022-12-15 00:01:45 +01:00
cmd := shellCommand + " --version | grep -o -E \"([0-9]\\.?)*\" | head -n1"
2022-12-14 23:48:42 +01:00
out , _ := exec . Command ( "bash" , "-c" , cmd ) . Output ( )
2022-12-25 07:07:48 +01:00
return filepath . Base ( shellCommand ) + " " + strings . ReplaceAll ( string ( out ) , "\n" , "" )
2022-12-14 23:48:42 +01:00
}
2022-10-14 21:09:40 +02:00
2022-09-09 10:45:27 +02:00
func handleConfig ( ) {
2022-09-26 10:23:44 +02:00
_ , folder := os . Stat ( filepath . Dir ( data . GetConfigFile ( ) ) )
_ , file := os . Stat ( data . GetConfigFile ( ) )
2022-09-09 10:45:27 +02:00
if os . IsNotExist ( folder ) {
2022-09-26 10:23:44 +02:00
os . Mkdir ( filepath . Dir ( data . GetConfigFile ( ) ) , os . ModePerm )
2022-09-09 10:45:27 +02:00
}
2022-11-16 07:41:35 +01:00
defaultconfig := "println green neOwOfetchh 🔥\ninfo white username\nprint blue @\ninfoln blue hostname\nprint white|space=12 uptime:\ninfoln red uptime\nprint white|space=12 shell:\ninfoln blue shell\nprint white|space=12 distro:\ninfoln blue distro\nprint white|space=12 terminal:\ninfoln blue terminal\nprint white|space=12 WM:\ninfoln blue wm\nprint white|space=12 memory:\ninfo blue memoryUsed\nprint white /\ninfoln blue memoryAll"
2022-09-09 10:45:27 +02:00
if os . IsNotExist ( file ) {
2022-09-26 10:23:44 +02:00
f , _ := os . Create ( data . GetConfigFile ( ) )
2022-10-14 10:43:33 +02:00
_ , _ = f . WriteString ( defaultconfig )
2022-10-16 14:02:02 +02:00
}
body , _ := ioutil . ReadFile ( data . GetConfigFile ( ) )
sbody := ( string ( body ) )
if utils . Defaultconf {
sbody = defaultconfig
}
fbody := strings . Split ( sbody , "\n" )
for _ , line := range fbody {
word := strings . Split ( line , " " )
if len ( word ) < 3 {
continue
2022-09-18 16:20:27 +02:00
}
2022-10-16 14:02:02 +02:00
action := word [ 0 ]
color := word [ 1 ]
rest := strings . Join ( word [ 2 : ] , " " )
handlePrint ( action , color , rest )
2022-09-18 16:20:27 +02:00
}
}
2022-09-22 14:05:20 +02:00
func handlePrint ( action , format string , rest string ) {
2022-09-18 16:20:27 +02:00
if action == "print" {
2022-09-22 14:05:20 +02:00
utils . CutePrint ( rest , format )
2022-09-18 16:20:27 +02:00
} else if action == "println" {
2022-09-22 14:05:20 +02:00
utils . CutePrint ( rest , format )
utils . CuteNewLine ( )
2022-09-18 16:20:27 +02:00
} else if action == "info" || action == "infoln" {
2023-02-18 11:32:44 +01:00
infoGetters := map [ string ] func ( ) string {
"distro" : func ( ) string {
if utils . Asciiforced {
return utils . Forceddistro
}
return data . GetDistro ( )
} ,
"username" : data . GetUsername ,
"uptime" : func ( ) string {
no , _ := strconv . Atoi ( data . GetUptime ( ) )
return data . FormatTime ( no )
} ,
"hostname" : func ( ) string { return data . Unamebs ( "-n" ) } ,
"kernelname" : func ( ) string { return data . Unamebs ( "-s" ) } ,
2024-03-07 08:33:34 +01:00
"CPU" : data . GetGPU ,
2023-02-18 11:32:44 +01:00
"GPU" : data . GetGPU ,
"shell" : func ( ) string { return getShellVersion ( data . GetShell ( ) ) } ,
"terminal" : data . GetTerminal ,
"memoryAll" : func ( ) string { return data . GetMemory ( false ) } ,
"memoryUsed" : func ( ) string { return data . GetMemory ( true ) } ,
"wm" : data . GetWM ,
"ip" : data . GetLocalIP ,
2022-09-09 10:45:27 +02:00
}
2023-02-18 11:32:44 +01:00
getter , ok := infoGetters [ rest ]
if ok {
utils . CutePrint ( getter ( ) , format )
} else {
utils . CutePrint ( "{UNKNOWN KEYWORD: " + rest + "}" , format )
}
2022-09-22 14:05:20 +02:00
if action == "infoln" {
utils . CuteNewLine ( )
2022-09-18 16:20:27 +02:00
}
}
2022-09-09 22:24:04 +02:00
}
2023-02-18 11:32:44 +01:00
2022-12-25 07:07:48 +01:00
func runpage ( ) {
if utils . Ishelp {
println ( ` neowofetch version x ( idk how to implement this )
-- nouwu turns off uwuifying
-- usepng uses a png ( only supports arch and ubuntu rn )
-- noascii turns off the ascii
-- nocolor no color .
-- noconf uses builtin config instead of looking for one in the filesystem
-- nocolorconf same thing but for color config : P
-- 16 color uses escape codes instead of RGB
-- help YOU LITERALLY FUCKING RAN IT RIGHT NOW ` )
os . Exit ( 0 )
}
}
2022-09-09 10:45:27 +02:00
2022-09-07 15:09:50 +02:00
func main ( ) {
2022-09-22 12:48:20 +02:00
utils . Initargs ( )
2022-12-25 07:07:48 +01:00
runpage ( )
checkforconfigfolder ( )
2022-09-23 11:03:50 +02:00
utils . Initcolor ( )
2022-09-22 14:44:27 +02:00
utils . CutePrintInit ( )
2022-09-09 10:45:27 +02:00
handleConfig ( )
2022-09-22 14:05:20 +02:00
utils . CutePrintEnd ( )
2022-09-07 15:09:50 +02:00
}