@@ -21,11 +21,12 @@ var (
21
21
api * slack.Client
22
22
onlyOnce sync.Once
23
23
envList = []string {
24
- ".env" ,
25
- ".env.test" ,
26
- ".env.development" ,
27
- ".env.production" ,
24
+ ".env" ,
25
+ ".env.test" ,
26
+ ".env.development" ,
27
+ ".env.production" ,
28
28
".env.dev" ,
29
+ ".env.stage" ,
29
30
".env.prod" ,
30
31
}
31
32
)
@@ -69,7 +70,7 @@ func registerEnvs() {
69
70
for _ , v := range getEnvList () {
70
71
wd , _ := os .Getwd ()
71
72
filePath := strings .Join ([]string {wd , "/" , v }, "" )
72
-
73
+
73
74
// add only existing envs
74
75
ok := hasNamedEnvFiles (filePath )
75
76
@@ -87,41 +88,42 @@ func initSlack() {
87
88
wd , _ := os .Getwd ()
88
89
filePath := strings .Join ([]string {wd , "/" , v }, "" )
89
90
ok := hasNamedEnvFiles (filePath )
90
-
91
+
91
92
if ok {
92
93
lErr := godotenv .Load (v )
93
94
nilChecker (lErr )
94
95
}
95
96
}
96
-
97
- _api := slack .New (os . Getenv ( "SLACK_BOT_USER_OAUTH_TOKEN" ) )
97
+
98
+ _api := slack .New (config . Owlly . SlackBotOauthToken )
98
99
res , err := _api .AuthTest ()
99
100
nilChecker (err )
100
101
101
102
connectionMsg := fmt .Sprintf ("slack API connected to: %s" , res .Team )
102
103
color .Green (connectionMsg )
103
-
104
+
104
105
api = _api
105
106
}
106
107
107
108
func updateEnvs () {
108
109
for _ , v := range getEnvList () {
109
110
wd , _ := os .Getwd ()
110
111
filePath := strings .Join ([]string {wd , "/" , v }, "" )
111
-
112
+
112
113
ok := hasNamedEnvFiles (filePath )
113
-
114
+
114
115
if ok {
115
116
data , rErr := os .ReadFile (v )
116
117
nilChecker (rErr )
117
-
118
+
118
119
wrapDirName := "config"
119
120
wrapDirPath := strings .Join ([]string {wd , "/" , wrapDirName , "/" }, "" )
120
121
wrapEnvName := strings .Join ([]string {v , "." , wrapDirName }, "" )
121
122
wrapEnvFile := strings .Join ([]string {wrapDirPath , wrapEnvName }, "" )
122
-
123
+
123
124
// @dev owning user has a read and write permission: 0644
124
- os .WriteFile (wrapEnvFile , data , fs .FileMode (config .OWNER_PERM ))
125
+ ownerPerm := 0644
126
+ os .WriteFile (wrapEnvFile , data , fs .FileMode (ownerPerm ))
125
127
}
126
128
}
127
129
}
@@ -139,25 +141,26 @@ func cleanupEnvs() {
139
141
140
142
for _ , v := range userEnvList {
141
143
fullPathForWrapEnv := strings .Join ([]string {wd , "/" , "config" , "/" , v , ".config" }, "" )
142
-
144
+
143
145
rErr := os .Remove (fullPathForWrapEnv )
144
146
nilChecker (rErr )
145
-
147
+
146
148
_ , cErr := os .Create (fullPathForWrapEnv )
147
149
nilChecker (cErr )
148
-
150
+
149
151
_data , rErr := os .ReadFile (v )
150
152
nilChecker (rErr )
151
-
152
- wErr := os .WriteFile (fullPathForWrapEnv , _data , fs .FileMode (config .OWNER_PERM ))
153
+
154
+ ownerPerm := 0644
155
+ wErr := os .WriteFile (fullPathForWrapEnv , _data , fs .FileMode (ownerPerm ))
153
156
nilChecker (wErr )
154
157
}
155
158
color .Red ("envs config setup done" )
156
159
}
157
160
158
161
func sendSlackDM () {
159
162
wd , _ := os .Getwd ()
160
-
163
+
161
164
envStringMapForWrapEnv := make (map [string ]string )
162
165
envStringForWrapEnv := "DEFAULT_VALUE"
163
166
@@ -168,15 +171,18 @@ func sendSlackDM() {
168
171
169
172
if ok {
170
173
if isDone := isUpdateFinished (); isDone [v ] {
171
-
172
- fullPathForWrapEnv := strings .Join ([]string {wd , "/" , "config" , "/" , v , ".config" }, "" )
174
+
175
+ fullPathForWrapEnv := strings .Join (
176
+ []string {wd , "/" , "config" , "/" , v , ".config" },
177
+ "" ,
178
+ )
173
179
wrapEnvName := strings .Join ([]string {v , ".config" }, "" )
174
-
180
+
175
181
envStringForWrapEnv = convertEnvMapToString (fullPathForWrapEnv , wrapEnvName )
176
182
envStringMapForWrapEnv [wrapEnvName ] = envStringForWrapEnv
177
-
183
+
178
184
notifyEnvChange (envStringMapForWrapEnv [wrapEnvName ], v )
179
- }
185
+ }
180
186
}
181
187
}
182
188
}
@@ -195,8 +201,8 @@ func isUpdateFinished() map[string]bool {
195
201
_data , _rErr := os .ReadFile (fullPath )
196
202
nilChecker (_rErr )
197
203
data := string (_data )
198
-
199
- hasOwllyTrigger := strings .Contains (data , config .RESERVED )
204
+
205
+ hasOwllyTrigger := strings .Contains (data , config .Owlly . TriggerName )
200
206
isDone [v ] = hasOwllyTrigger
201
207
}
202
208
}
@@ -231,31 +237,32 @@ func getUpdateMetadata() (string, string) {
231
237
232
238
func notifyEnvChange (envString string , envFileName string ) {
233
239
date , dirPath := getUpdateMetadata ()
234
- dateMsg := fmt .Sprintf ("%v updated at: %v" , envFileName , date )
235
- pathMsg := fmt .Sprintf ("directory is: %v" , dirPath )
236
240
241
+ pathMsg := fmt .Sprintf ("directory is: %v" , dirPath )
242
+ footer := fmt .Sprintf ("%v at: %v" , envFileName , pathMsg )
243
+
237
244
// @dev assert a parsed env value is thread-safe
238
245
attachedEnv := slack.AttachmentField {
239
- Title : "Copy and paste below texts to update " ,
246
+ Title : "🔐🔐🔐🔐🔐🔐🔐🔐🔐🔐🔐🔐 " ,
240
247
Value : envString ,
241
248
Short : false ,
242
249
}
243
250
251
+ postBy := fmt .Sprintf ("%v updated %v" , config .Owlly .SlackUserName , envFileName )
252
+
244
253
attachment := slack.Attachment {
245
- Title : "ENV update" ,
254
+ Title : postBy ,
246
255
Fields : []slack.AttachmentField {attachedEnv },
247
- Pretext : dateMsg ,
248
- Footer : pathMsg ,
256
+ Footer : footer ,
257
+ AuthorID : config . Owlly . SlackUserID ,
249
258
}
250
-
251
- postTo := os . Getenv ( "SLACK_CHANNEL_ID" )
259
+
260
+ postTo := config . Owlly . SlackChannelID
252
261
postWhat := slack .MsgOptionAttachments (attachment )
253
- postAs := slack .MsgOptionAsUser (true )
254
-
262
+
255
263
channelID , _ , msgErr := api .PostMessage (
256
264
postTo ,
257
265
postWhat ,
258
- postAs ,
259
266
)
260
267
261
268
nilChecker (msgErr )
@@ -265,6 +272,8 @@ func notifyEnvChange(envString string, envFileName string) {
265
272
}
266
273
267
274
func main () {
275
+ config .New ()
276
+
268
277
cleanupEnvs ()
269
278
270
279
onlyOnce .Do (func () {
0 commit comments