Skip to content

Commit 8274533

Browse files
committed
Fixed issues with watching temp files. Added uploading indicator to asset uploads.
1 parent ad18609 commit 8274533

File tree

2 files changed

+65
-21
lines changed

2 files changed

+65
-21
lines changed

console.go

+12-11
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,15 @@ import (
44
"github.com/mgutz/ansi"
55
)
66

7-
var StrWatching = ansi.Color("--- WATCHING", "cyan")
8-
var StrError = ansi.Color("------ ERROR", "red")
9-
var StrWarning = ansi.Color("---- WARNING", "214")
10-
var StrRemoved = ansi.Color("---- REMOVED", "magenta")
11-
var StrAdded = ansi.Color("------ ADDED", "green")
12-
var StrDownloaded = ansi.Color("- DOWNLOADED", "green")
13-
var StrUploaded = ansi.Color("--- UPLOADED", "green")
14-
var StrUpdated = ansi.Color("---- UPDATED", "cyan")
15-
var ErrorSpacer = ansi.Color("------------", "red")
16-
var WarningSpacer = ansi.Color("------------", "214")
17-
var StrSpacer = "------------"
7+
var StrWatching = ansi.Color(" WATCHING ", "cyan")
8+
var StrError = ansi.Color(" ERROR ", "red")
9+
var StrWarning = ansi.Color(" WARNING ", "214")
10+
var StrRemoved = ansi.Color(" REMOVED ", "magenta")
11+
var StrAdded = ansi.Color(" ADDED ", "green")
12+
var StrDownloaded = ansi.Color(" DOWNLOADED ", "green")
13+
var StrUploaded = ansi.Color(" UPLOADED ", "green")
14+
var StrUploading = ansi.Color(" UPLOADING... ", "green")
15+
var StrUpdated = ansi.Color(" UPDATED ", "cyan")
16+
var ErrorSpacer = ansi.Color(" ----- ", "red")
17+
var WarningSpacer = ansi.Color(" ------- ", "214")
18+
var StrSpacer = " "

store.go

+53-10
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"github.com/zachzurn/go_shopify"
1212
"github.com/fsnotify/fsnotify"
1313
"github.com/mgutz/ansi"
14+
"errors"
1415
)
1516

1617

@@ -121,6 +122,7 @@ func (s *Store) watch(){
121122
os.Exit(1)
122123
}
123124

125+
//Checks if a path is a directory or not using stat -- for this use we really could check for no extension but we have to think about it
124126
isDirectory := func(pth string) (bool, error) {
125127
fi, err := os.Stat(pth)
126128
if err != nil {
@@ -131,6 +133,7 @@ func (s *Store) watch(){
131133
}
132134

133135

136+
//Watches a folder
134137
watch := func(folder string){
135138
err = watcher.Add(folder)
136139
if err != nil {
@@ -139,7 +142,7 @@ func (s *Store) watch(){
139142
}
140143
}
141144

142-
145+
//Watches a folder and any folders inside of it
143146
watchWalk := func(folder string){
144147
filepath.Walk(folder,func(path string, info os.FileInfo, err error) error {
145148

@@ -156,6 +159,7 @@ func (s *Store) watch(){
156159
})
157160
}
158161

162+
//Unwatches a folder
159163
unwatch := func(folder string){
160164
err = watcher.Remove(folder)
161165
if err != nil {
@@ -164,19 +168,46 @@ func (s *Store) watch(){
164168
}
165169
}
166170

171+
//Filter out ingored files and returns last event
172+
getApplicableEvent := func(events []fsnotify.Event) (fsnotify.Event, error) {
173+
174+
applicableEvents := []fsnotify.Event{}
175+
176+
for _, e := range events{
177+
178+
if extensionAllowed(ext(e.Name)) {
179+
applicableEvents = append(applicableEvents,e)
180+
}
181+
182+
}
183+
184+
if len(applicableEvents) > 0 {
185+
return applicableEvents[len(applicableEvents)-1], nil
186+
}
187+
188+
return fsnotify.Event{}, errors.New("No applicable events found")
189+
190+
}
191+
167192
defer watcher.Close()
168193

169194
done := make(chan bool)
170195
go func() {
171196
for {
172197
select {
173198
case events := <-watcher.Events:
174-
175-
event := events[len(events)-1]
199+
200+
event, err := getApplicableEvent(events)
201+
202+
if err != nil {
203+
break
204+
}
205+
176206
path := event.Name
177207

208+
178209
if event.Op&fsnotify.Create == fsnotify.Create {
179-
if d, _ := isDirectory(event.Name); d{
210+
if d, _ := isDirectory(path); d{
180211
//Directory was created, let's watch it
181212
watch(path)
182213
} else {
@@ -222,7 +253,7 @@ func (s *Store) deleteRemoteAsset(pth string) {
222253
pth = strings.Replace(pth,`\`,`/`,-1)
223254
assetKey, err := filepath.Rel(s.Folder, pth)
224255
assetName := filepath.Base(assetKey)
225-
assetExt := filepath.Ext(assetName)
256+
assetExt := ext(assetName)
226257

227258
if err != nil{
228259

@@ -248,14 +279,16 @@ func (s *Store) uploadLocalAsset(pth string) {
248279
pth = strings.Replace(pth,`\`,`/`,-1)
249280
assetKey, err := filepath.Rel(s.Folder, pth)
250281
assetName := filepath.Base(assetKey)
251-
assetExt := filepath.Ext(assetName)
282+
assetExt := ext(assetName)
283+
284+
fmt.Printf("%v %v",StrUploading,assetName)
252285

253286
if err != nil{
254287

255288
}
256289

257290
if !extensionAllowed(assetExt) {
258-
fmt.Printf("%v Extension %v ignored. Add in shopify.json as 'allowed_extensions'.\n%v Allowed -> %v\n",StrWarning,ansi.Color(assetExt, "134"),WarningSpacer,allowedExtensions)
291+
fmt.Printf("\r%v Extension %v ignored. Add in shopify.json as 'allowed_extensions'.\n%v Allowed -> %v\n",StrWarning,ansi.Color(assetExt, "134"),WarningSpacer,allowedExtensions)
259292
return;
260293
}
261294

@@ -266,7 +299,7 @@ func (s *Store) uploadLocalAsset(pth string) {
266299
file, e := ioutil.ReadFile(pth)
267300

268301
if e != nil {
269-
fmt.Printf("%v Couldn't read file. %v\n",StrWarning,pth)
302+
fmt.Printf("\r%v Couldn't read file. %v\n",StrWarning,pth)
270303
return
271304
}
272305

@@ -284,11 +317,11 @@ func (s *Store) uploadLocalAsset(pth string) {
284317
err = asset.Upload(s.ThemeId)
285318

286319
if err != nil {
287-
fmt.Printf("%v Couldn't upload file. %v\n%v %v\n",StrWarning,assetKey,WarningSpacer,err)
320+
fmt.Printf("\r%v Couldn't upload file. %v\n%v %v\n",StrWarning,assetKey,WarningSpacer,err)
288321
return
289322
}
290323

291-
fmt.Printf("%v %v\n",StrUploaded,assetName)
324+
fmt.Printf("\r%v %v\n",StrUploaded,assetName)
292325
}
293326

294327

@@ -345,6 +378,16 @@ func (s *Store) validate(storeKey string){
345378

346379

347380
/* UTILITY */
381+
func ext(path string) string {
382+
s := strings.Split(path, ".")
383+
384+
if len(s) > 0 {
385+
return "."+s[len(s)-1]
386+
}
387+
388+
return ""
389+
}
390+
348391
func extensionAllowed(ext string) bool {
349392
for _, a := range allowedExtensions {
350393
if a == ext {

0 commit comments

Comments
 (0)