Module: ScmsWatcher

Defined in:
lib/scms/scms-watcher.rb

Class Method Summary collapse

Class Method Details

.watch(settings, options, configdir) ⇒ Object



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
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/scms/scms-watcher.rb', line 7

def ScmsWatcher.watch(settings, options, configdir)
 watcher = Thread.new {
 	configfile = File.join(configdir, "_config.yml")
			FileWatcher.new([configfile]).watch do |filename|
puts ""
puts "***********************************"
puts " Config Modification (_config.yml) "
puts "***********************************"
puts ""

settings = Scms.getSettings(configdir)
Scms.bundle(settings, Folders[:website])
Scms.build(Folders[:website], settings, options)
			end
 }

 #  [todo] Create this by getting all directories that start with _
 psst = []
 psst.push("_pages") if File.directory? "_pages" # .html .htm .md .xml .erb, etc
 psst.push("_views") if File.directory? "_views" # .html .htm .md .xml .erb, etc
 psst.push("_layouts") if File.directory? "_layouts" # .html .htm .erb
 psst.push("_templates") if File.directory? "_templates" # .html .htm .erb
 psst.push("_resources") if File.directory? "_resources" # .yml
 psst.push("_source") if File.directory? "_source" # .scss .css .js
 
 puts "Listening to #{psst}"
 listener = Listen.to(psst, force_polling: true) do |modified, added, removed|

			sassfile = false
			bundlefile = false
			buildfile = false

			if removed.length > 0
removed.each{|filename|
	removedfile = Pathname.new(filename).relative_path_from(Pathname.new(Folders[:website])).to_s
	#ext = File.extname(removedfile)  

	puts ""
	puts "***********************************************"
	puts "  Deleted: #{removedfile}"
	puts "***********************************************"
	puts ""

	if removedfile.start_with?('_pages/')
		buildfile = true
	end
}
			end

			if added.length > 0
added.each{|filename|
	addedfile = Pathname.new(filename).relative_path_from(Pathname.new(Folders[:website])).to_s
	#ext = File.extname(addedfile)  

	puts ""
	puts "***********************************************"
	puts "  Added: #{addedfile}"
	puts "***********************************************"
	puts ""

	if addedfile.start_with?('_pages/')
		buildfile = true
	end
}
			end

			if modified.length > 0
modified.each{|filename|
	modifiedfile = Pathname.new(filename).relative_path_from(Pathname.new(Folders[:website])).to_s
	ext = File.extname(modifiedfile)  

	puts ""
	puts "***********************************************"
	puts "  Modified: #{modifiedfile}"
	puts "***********************************************"
	puts ""

	buildfile = true

	if modifiedfile.start_with?('_source/')
		bundlefile = true
		buildfile = false
	end

	if ext == ".scss"
		sassfile = true
		bundlefile = false
		buildfile = false
		break
	end
}
			end

			Scms.sassall(Folders[:website]) if sassfile
			Scms.bundle(settings, Folders[:website]) if bundlefile
			Scms.build(Folders[:website], settings, options) if buildfile
 end

 listener.start # not blocking
 listener.ignore! /\.png/
 listener.ignore! /\.gif/
 listener.ignore! /\.jpg/
end