diff --git a/textfile/widget.go b/textfile/widget.go new file mode 100644 index 00000000..4d2da305 --- /dev/null +++ b/textfile/widget.go @@ -0,0 +1,64 @@ +package textfile + +import ( + "fmt" + "io/ioutil" + "time" + + "github.com/olebedev/config" + "github.com/senorprogrammer/wtf/homedir" + "github.com/senorprogrammer/wtf/wtf" +) + +var Config *config.Config + +type Widget struct { + wtf.TextWidget + + FilePath string +} + +func NewWidget() *Widget { + widget := Widget{ + TextWidget: wtf.NewTextWidget("TextFile", "textfile"), + FilePath: Config.UString("wtf.mods.textfile.filepath"), + } + + widget.View.SetWrap(true) + + return &widget +} + +/* -------------------- Exported Functions -------------------- */ + +func (widget *Widget) Refresh() { + if widget.Disabled() { + return + } + + widget.View.SetTitle(fmt.Sprintf(" %s ", widget.FilePath)) + widget.RefreshedAt = time.Now() + + widget.View.Clear() + + fileData, err := widget.readFile() + + if err != nil { + fmt.Fprintf(widget.View, "%s", err) + } else { + fmt.Fprintf(widget.View, "%s", fileData) + } +} + +/* -------------------- Uneported Functions -------------------- */ + +func (widget *Widget) readFile() (string, error) { + absPath, _ := homedir.Expand(widget.FilePath) + + bytes, err := ioutil.ReadFile(absPath) + if err != nil { + return "", err + } + + return string(bytes), nil +} diff --git a/wtf.go b/wtf.go index e106ce24..ae0eb645 100644 --- a/wtf.go +++ b/wtf.go @@ -15,6 +15,7 @@ import ( "github.com/senorprogrammer/wtf/opsgenie" "github.com/senorprogrammer/wtf/security" "github.com/senorprogrammer/wtf/status" + "github.com/senorprogrammer/wtf/textfile" "github.com/senorprogrammer/wtf/weather" "github.com/senorprogrammer/wtf/wtf" ) @@ -98,6 +99,7 @@ func main() { opsgenie.Config = Config security.Config = Config status.Config = Config + textfile.Config = Config weather.Config = Config Modules = []wtf.TextViewer{ @@ -110,6 +112,7 @@ func main() { opsgenie.NewWidget(), security.NewWidget(), status.NewWidget(), + textfile.NewWidget(), weather.NewWidget(), } diff --git a/wtf/config_files.go b/wtf/config_files.go index 040e0773..a71ebeb7 100644 --- a/wtf/config_files.go +++ b/wtf/config_files.go @@ -23,9 +23,9 @@ func CreateConfigDir() bool { // LoadConfigFile loads the config.yml file to configure the app func LoadConfigFile() *config.Config { - configPath, _ := homedir.Expand("~/.wtf/config.yml") + absPath, _ := homedir.Expand("~/.wtf/config.yml") - cfg, err := config.ParseYamlFile(configPath) + cfg, err := config.ParseYamlFile(absPath) if err != nil { fmt.Println("\n\n\033[1m ERROR:\033[0m Could not load '\033[0;33mconfig.yml\033[0m'.\n Please add a \033[0;33mconfig.yml\033[0m file to your \033[0;33m~/.wtf\033[0m directory.\n See \033[1;34mhttps://github.com/senorprogrammer/wtf\033[0m for details.\n\n") os.Exit(1)