-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
76 lines (72 loc) · 1.69 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
// This is Free Software under GNU Affero General Public License v >= 3.0
// without warranty, see README.md and license for details.
//
// SPDX-License-Identifier: AGPL-3.0-or-later
// License-Filename: LICENSES/AGPL-3.0.txt
//
// SPDX-FileCopyrightText: 2021 Intevation GmbH <https://intevation.de>
// Software-Engineering: 2021 Intevation GmbH <https://intevation.de>
// Author(s):
// Fadi Abbud <[email protected]>
package main
import (
"bufio"
"fmt"
"log"
"os"
"regexp"
"strconv"
"strings"
"time"
"github.com/anders/ics"
)
func check(e error) {
if e != nil {
panic(e)
}
}
func getEnterdValues() (x, y string) {
var date, recordsNumber string
scanner := bufio.NewReader(os.Stdin)
for {
fmt.Println("Enter starting date in form yyyy-mm-dd")
date, _ = scanner.ReadString('\n')
date = strings.TrimSuffix(date, "\n")
match, _ := regexp.MatchString(`^\d{4}-([0-1]{1})?[0-9]{1}-\d{1,2}`, date)
if match {
break
}
}
for {
fmt.Println("Enter Number of records")
fmt.Scanln(&recordsNumber)
match, _ := regexp.MatchString(`\d`, recordsNumber)
if match {
break
}
}
return date, recordsNumber
}
func main() {
date, recordsNumber := getEnterdValues()
number, _ := strconv.Atoi(recordsNumber)
startingDate, err := time.Parse("2006-1-2", date)
check(err)
cal := ics.NewCalendar()
for i := 0; i <= number; i++ {
startingDate = startingDate.Add(time.Hour * 1)
cal.Add(ics.Event{
"DTSTART": startingDate,
/* "DTEND": endingDate, */
"SUMMARY": "Event",
})
}
fp, err := os.Create("calendar.ics")
if err != nil {
log.Fatalln("error by creating .ics file")
return
}
defer fp.Close()
cal.Encode(fp)
fmt.Println("calendar.ics file generated successfully")
}