]> Cypherpunks.ru repositories - gotai64n.git/blob - cmd/leapsecsdb/main.go
Unify copyright comment format
[gotai64n.git] / cmd / leapsecsdb / main.go
1 // go.cypherpunks.ru/tai64n -- Pure Go TAI64/TAI64N implementation
2 // Copyright (C) 2020-2024 Sergey Matveev <stargrave@stargrave.org>
3 //
4 // This program is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, version 3 of the License.
7 //
8 // This program is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 // GNU General Public License for more details.
12 //
13 // You should have received a copy of the GNU General Public License
14 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
15
16 package main
17
18 import (
19         "bufio"
20         "flag"
21         "fmt"
22         "log"
23         "os"
24         "time"
25
26         "go.cypherpunks.ru/tai64n/v2"
27 )
28
29 func main() {
30         log.SetFlags(0)
31         flag.Usage = func() {
32                 fmt.Fprintf(
33                         flag.CommandLine.Output(),
34                         `Convert YYYY-MM-DD dates to TAI64 timestamps.
35 $ leapsecsdb > leapsecs.dat <<EOF
36 1972-07-01
37 1973-01-01
38 EOF
39 `,
40                 )
41                 flag.PrintDefaults()
42         }
43         flag.Parse()
44
45         scanner := bufio.NewScanner(os.Stdin)
46         var err error
47         var t time.Time
48         tai := new(tai64n.TAI64)
49         for {
50                 if !scanner.Scan() {
51                         if err = scanner.Err(); err != nil {
52                                 log.Fatalln(err)
53                         }
54                         break
55                 }
56                 t, err = time.Parse("2006-01-02", scanner.Text())
57                 if err != nil {
58                         log.Fatalln(err)
59                 }
60                 tai.FromTime(t)
61                 if _, err = os.Stdout.Write(tai[:]); err != nil {
62                         log.Fatalln(err)
63                 }
64         }
65 }