-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathschedule.go
More file actions
96 lines (85 loc) · 3.02 KB
/
schedule.go
File metadata and controls
96 lines (85 loc) · 3.02 KB
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
package schedule
import (
"fmt"
"time"
)
const (
defaultStartHour = 7
defaultEndHour = 16
earlyEndHour = 14
)
var (
scheduleLocation *time.Location
holidays []time.Time
)
func date(year int, month time.Month, day int) time.Time {
return time.Date(year, month, day, 0, 0, 0, 0, scheduleLocation)
}
func init() {
// TODO(lyra): make configurable
loc, err := time.LoadLocation("America/Los_Angeles")
if err != nil {
panic(fmt.Sprintf("failed to load schedule time zone: %v", err))
}
scheduleLocation = loc
// TODO(bob): Make configurable
holidays = []time.Time{
date(2020, time.June, 19), // Juneteenth
date(2020, time.July, 3), // Day before Independence day
date(2020, time.July, 4), // Saturday, Independence day
date(2020, time.July, 5), // Sunday, Day after Independence day
date(2020, time.September, 7), // Labor day
date(2020, time.November, 26), // Thanksgiving
date(2020, time.November, 27), // Day after thanksgiving
date(2020, time.December, 17), // Holiday Freeze
date(2020, time.December, 18), // Holiday Freeze
date(2020, time.December, 21), // Holiday break
date(2020, time.December, 22), // Holiday break
date(2020, time.December, 23), // Holiday break
date(2020, time.December, 24), // Holiday break
date(2020, time.December, 25), // Holiday break
date(2020, time.December, 26), // Sat, Holiday break
date(2020, time.December, 27), // Sunday, Holiday break
date(2020, time.December, 28), // Holiday break
date(2020, time.December, 29), // Holiday break
date(2020, time.December, 30), // Holiday break
date(2020, time.December, 31), // Holiday break
date(2021, time.January, 1), // New year's day
date(2021, time.January, 18), // MLK day
date(2021, time.May, 31), // Memorial day
date(2021, time.June, 19), // Juneteenth
date(2021, time.July, 4), // Sunday, Independence day
date(2021, time.July, 5), // Day after Independence day
date(2021, time.September, 6), // Labor day
date(2021, time.November, 25), // Thanksgiving
date(2021, time.November, 26), // Day after Thanksgiving
date(2021, time.December, 24), // Holiday break
date(2021, time.December, 25), // Sat, Holiday break
date(2021, time.December, 26), // Sun, Holiday break
date(2021, time.December, 31), // Holiday break
date(2023, time.January, 1),
date(2023, time.December, 20), // 2023 Holiday break "code freeze"
date(2023, time.December, 21),
date(2023, time.December, 22),
date(2023, time.December, 23),
date(2023, time.December, 24),
date(2023, time.December, 25),
date(2023, time.December, 26),
date(2023, time.December, 27),
date(2023, time.December, 28),
date(2023, time.December, 29),
date(2023, time.December, 30),
date(2023, time.December, 31),
date(2024, time.January, 1),
}
}
func PermitsRelease(t time.Time, schedule string) bool {
switch schedule {
case "humane", "Humane":
return humanePermitsRelease(t)
case "inhumane", "Inhumane":
return inhumanePermitsRelease(t)
default:
return alwaysPermitsRelease(t)
}
}