diff src/unsleep.go @ 10:b0784443ed87

add netcat and unsleep.
author pyon@macmini
date Sat, 04 Nov 2017 11:07:50 +0900
parents
children c3a589f0521d
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/unsleep.go	Sat Nov 04 11:07:50 2017 +0900
@@ -0,0 +1,80 @@
+package main
+
+import(
+    "flag"
+    "fmt"
+    "time"
+    "os"
+)
+
+var sec = 0
+
+func main() {
+
+    // arguments
+    t := flag.Int( "t", 1, "interval" )
+    s := flag.Bool( "s", false, "normal sleep" )
+    q := flag.Bool( "q", false, "quiet ( not print count and time )" )
+    c := flag.Int( "c", 0, "loop count ( without [s] )" )
+    m := flag.Bool( "m", false, "print every minute ( without [q] )" )
+    b := flag.Bool( "b", false, "beep" )
+
+    flag.Parse()
+
+    if *t > 0 {
+
+        if !*q {
+            s := fmt.Sprintf( "[%04d] %s ...", *c, time.Now().Format( "15:04:05" ) )
+            fmt.Println( s )
+        }
+
+        if *s {
+            for i := 0; i < *t; i++ {
+                sleep1ms( *q, *m, *b, i + 1 )
+            }
+            os.Exit( 0 )
+        }
+
+        if *c < 0 {
+            fmt.Fprintln( os.Stderr, "bad loop count." )
+            os.Exit( 1 )
+        }
+        if *c > 0 {
+            for i := 0; i < *c; i++ {
+                sleep1ms( *q, *m, *b, *c - i - 1 )
+            }
+        } else {
+            n := 1
+            for {
+                sleep1ms( *q, *m, *b, n )
+                n++
+            }
+        }
+
+    } else {
+        fmt.Fprintln( os.Stderr, "bad time." )
+        os.Exit( 1 )
+    }
+}
+
+func sleep1ms( quiet, minute, beep bool, n int ) {
+
+    s := time.Duration( 1.00 * 1000 ) * time.Millisecond
+    time.Sleep( s )
+    sec++
+
+    if minute && sec % 60 == 0 {
+        str := fmt.Sprintf( "[%04d] %s", n / 60, time.Now().Format( "15:04:05" ) )
+        fmt.Println( str )
+    }
+    if !quiet && !minute {
+        str := fmt.Sprintf( "[%04d] %s", n, time.Now().Format( "15:04:05" ) )
+        fmt.Println( str )
+    }
+
+    if beep {
+        //os.Stdout.Write( []byte( "\u0007" ) )
+        fmt.Print( "\a" )
+    }
+}
+