diff --git a/cmd/doc.go b/cmd/doc.go index c1213da0..717cee62 100644 --- a/cmd/doc.go +++ b/cmd/doc.go @@ -2,11 +2,26 @@ // connects to all the other packages to make a runnable binary for multiple // operating system. // -// To build Statup from source, run the follow command in the root directory: -// // go build -o statup ./cmd +// Compile Assets // -// Remember that you'll need to compile the static assets using Rice: -// // cd source && rice embed-go +// Before building, you must compile the Statup Assets with Rice, to install rice run the command below: +// go get github.com/GeertJohan/go.rice +// go get github.com/GeertJohan/go.rice/rice +// +// Once you have rice install, you can run the following command to build all assets inside the source directory. +// cd source && rice embed-go +// +// Build Statup Binary +// +// To build the statup binary for your local environment, run the command below: +// go build -o statup ./cmd +// +// Build All Binary Arch's +// +// To build Statup for Mac, Windows, Linux, and ARM devices, you can run xgo to build for all. xgo is an awesome +// golang package that requires Docker. https://github.com/karalabe/xgo +// docker pull karalabe/xgo-latest +// build-all // // More info on: https://github.com/hunterlong/statup package main diff --git a/core/core.go b/core/core.go index e03b6b51..b14da95e 100644 --- a/core/core.go +++ b/core/core.go @@ -84,7 +84,7 @@ func UpdateCore(c *Core) (*Core, error) { return c, db.Error } -// UsingAssets will return true if /assets folder is present +// CurrentTime will return the current local time func (c Core) CurrentTime() string { t := time.Now().UTC() current := utils.Timezoner(t, c.Timezone) @@ -150,13 +150,13 @@ func SelectCore() (*Core, error) { if os.Getenv("USE_CDN") == "true" { CoreApp.UseCdn = true } - //store = sessions.NewCookieStore([]byte(core.ApiSecret)) return CoreApp, db.Error } // ServiceOrder will reorder the services based on 'order_id' (Order) type ServiceOrder []types.ServiceInterface +// Sort interface for resroting the Services in order func (c ServiceOrder) Len() int { return len(c) } func (c ServiceOrder) Swap(i, j int) { c[i], c[j] = c[j], c[i] } func (c ServiceOrder) Less(i, j int) bool { return c[i].(*Service).Order < c[j].(*Service).Order } diff --git a/core/services.go b/core/services.go index 5fd9a3cc..3743063c 100644 --- a/core/services.go +++ b/core/services.go @@ -167,6 +167,8 @@ func (s *Service) lastFailure() *failure { } // SmallText returns a short description about a services status +// service.SmallText() +// // Online since Monday 3:04:05PM, Jan _2 2006 func (s *Service) SmallText() string { last := s.LimitedFailures() hits, _ := s.LimitedHits() @@ -188,6 +190,8 @@ func (s *Service) SmallText() string { } // DowntimeText will return the amount of downtime for a service based on the duration +// service.DowntimeText() +// // Service has been offline for 15 minutes func (s *Service) DowntimeText() string { return fmt.Sprintf("%v has been offline for %v", s.Name, utils.DurationReadable(s.Downtime())) } diff --git a/core/services_checkin_test.go b/core/services_checkin_test.go index c892ffe5..10dacd16 100644 --- a/core/services_checkin_test.go +++ b/core/services_checkin_test.go @@ -30,7 +30,7 @@ var ( func TestCreateCheckin(t *testing.T) { service := SelectService(1) testCheckin = ReturnCheckin(&types.Checkin{ - Service: service.Id, + ServiceId: service.Id, Interval: 10, GracePeriod: 5, ApiKey: utils.RandomString(7), diff --git a/utils/utils.go b/utils/utils.go index 6c607ef9..c963544a 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -68,6 +68,7 @@ func ToString(s interface{}) string { } } +// Timezoner returns the time.Time with the user set timezone func Timezoner(t time.Time, zone float32) time.Time { zoneInt := float32(3600) * (zone + 1) loc := time.FixedZone("", int(zoneInt)) @@ -96,6 +97,8 @@ func (t Timestamp) Ago() string { } // UnderScoreString will return a string that replaces spaces and other characters to underscores +// UnderScoreString("Example String") +// // example_string func UnderScoreString(str string) string { // convert every letter to lower case @@ -120,6 +123,7 @@ func UnderScoreString(str string) string { } // FileExists returns true if a file exists +// exists := FileExists("assets/css/base.css") func FileExists(name string) bool { if _, err := os.Stat(name); err != nil { if os.IsNotExist(err) { @@ -130,6 +134,7 @@ func FileExists(name string) bool { } // DeleteFile will attempt to delete a file +// DeleteFile("newfile.json") func DeleteFile(file string) error { Log(1, "deleting file: "+file) err := os.Remove(file) @@ -140,11 +145,13 @@ func DeleteFile(file string) error { } // DeleteDirectory will attempt to delete a directory and all contents inside +// DeleteDirectory("assets") func DeleteDirectory(directory string) error { return os.RemoveAll(directory) } // Command will run a terminal command with 'sh -c COMMAND' and return stdout and errOut as strings +// in, out, err := Command("sass assets/scss assets/css/base.css") func Command(cmd string) (string, string, error) { Log(1, "running command: "+cmd) testCmd := exec.Command("sh", "-c", cmd) @@ -199,6 +206,10 @@ func copyAndCapture(w io.Writer, r io.Reader) ([]byte, error) { } } +// DurationReadable will return a time.Duration into a human readable string +// t := time.Duration(5 * time.Minute) +// DurationReadable(t) +// // 5 minutes func DurationReadable(d time.Duration) string { if d.Hours() >= 1 { return fmt.Sprintf("%0.0f hours", d.Hours()) @@ -210,7 +221,8 @@ func DurationReadable(d time.Duration) string { return d.String() } -// SaveFile +// SaveFile will create a new file with data inside it +// SaveFile("newfile.json", []byte('{"data": "success"}') func SaveFile(filename string, data []byte) error { err := ioutil.WriteFile(filename, data, 0644) return err