sitefuel 0.0.0a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README +86 -0
- data/RELEASE_NOTES +7 -0
- data/bin/sitefuel +162 -0
- data/lib/sitefuel/Configuration.rb +35 -0
- data/lib/sitefuel/SiteFuelLogger.rb +128 -0
- data/lib/sitefuel/SiteFuelRuntime.rb +293 -0
- data/lib/sitefuel/extensions/ArrayComparisons.rb +34 -0
- data/lib/sitefuel/extensions/DynamicClassMethods.rb +19 -0
- data/lib/sitefuel/extensions/FileComparison.rb +24 -0
- data/lib/sitefuel/extensions/Silently.rb +27 -0
- data/lib/sitefuel/extensions/StringFormatting.rb +75 -0
- data/lib/sitefuel/extensions/SymbolComparison.rb +13 -0
- data/lib/sitefuel/external/AbstractExternalProgram.rb +616 -0
- data/lib/sitefuel/external/ExternalProgramTestCase.rb +67 -0
- data/lib/sitefuel/external/GIT.rb +9 -0
- data/lib/sitefuel/external/JPEGTran.rb +68 -0
- data/lib/sitefuel/external/PNGCrush.rb +66 -0
- data/lib/sitefuel/processors/AbstractExternalProgramProcessor.rb +72 -0
- data/lib/sitefuel/processors/AbstractProcessor.rb +378 -0
- data/lib/sitefuel/processors/AbstractStringBasedProcessor.rb +88 -0
- data/lib/sitefuel/processors/CSSProcessor.rb +84 -0
- data/lib/sitefuel/processors/HAMLProcessor.rb +52 -0
- data/lib/sitefuel/processors/HTMLProcessor.rb +211 -0
- data/lib/sitefuel/processors/JavaScriptProcessor.rb +57 -0
- data/lib/sitefuel/processors/PHPProcessor.rb +32 -0
- data/lib/sitefuel/processors/PNGProcessor.rb +80 -0
- data/lib/sitefuel/processors/RHTMLProcessor.rb +25 -0
- data/lib/sitefuel/processors/SASSProcessor.rb +50 -0
- data/test/processor_listing.rb +28 -0
- data/test/test_AbstractExternalProgram.rb +186 -0
- data/test/test_AbstractProcessor.rb +237 -0
- data/test/test_AbstractStringBasedProcessor.rb +48 -0
- data/test/test_AllProcessors.rb +65 -0
- data/test/test_ArrayComparisons.rb +32 -0
- data/test/test_CSSProcessor.rb +120 -0
- data/test/test_FileComparisons.rb +42 -0
- data/test/test_HAMLProcessor.rb.rb +60 -0
- data/test/test_HTMLProcessor.rb +186 -0
- data/test/test_JPEGTran.rb +40 -0
- data/test/test_JavaScriptProcessor.rb +63 -0
- data/test/test_PHPProcessor.rb +51 -0
- data/test/test_PNGCrush.rb +58 -0
- data/test/test_PNGProcessor.rb +32 -0
- data/test/test_RHTMLProcessor.rb +62 -0
- data/test/test_SASSProcessor.rb +68 -0
- data/test/test_SiteFuelLogging.rb +79 -0
- data/test/test_SiteFuelRuntime.rb +96 -0
- data/test/test_StringFormatting.rb +51 -0
- data/test/test_SymbolComparison.rb +27 -0
- data/test/test_images/sample_jpg01.jpg +0 -0
- data/test/test_images/sample_png01.png +0 -0
- data/test/test_programs/versioning.rb +26 -0
- data/test/test_sites/simplehtml/deployment.yml +22 -0
- data/test/test_sites/simplehtml/index.html +66 -0
- data/test/test_sites/simplehtml/style.css +40 -0
- data/test/ts_all.rb +39 -0
- metadata +165 -0
@@ -0,0 +1,34 @@
|
|
1
|
+
#
|
2
|
+
# File:: ArrayComparisons.rb
|
3
|
+
# Author:: wkm
|
4
|
+
# Copyright:: 2009
|
5
|
+
# License:: GPL
|
6
|
+
#
|
7
|
+
# Adds methods to Array for comparing with other arrays
|
8
|
+
#
|
9
|
+
|
10
|
+
class Array
|
11
|
+
|
12
|
+
# gives true if self ends with the given array
|
13
|
+
#
|
14
|
+
# [1, 2, 3].ends_with? [2, 3] # ==> true
|
15
|
+
# [1, 2, 3].ends_with? [] # ==> true
|
16
|
+
# [1, 2, 3].ends_with? [1, 2, 3] # ==> true
|
17
|
+
# [1, 2, 3].ends_with? [1, 2] # ==> false
|
18
|
+
def ends_with?(other)
|
19
|
+
# if the supposed 'ending' is longer, it can't be an ending
|
20
|
+
if length < other.length
|
21
|
+
return false
|
22
|
+
end
|
23
|
+
|
24
|
+
index = -1
|
25
|
+
while -index <= other.length and -index <= length
|
26
|
+
if other[index] != self[index]
|
27
|
+
return false
|
28
|
+
end
|
29
|
+
index -= 1
|
30
|
+
end
|
31
|
+
|
32
|
+
return true
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#
|
2
|
+
# File:: DynamicClassMethods.rb
|
3
|
+
# Author:: wkm
|
4
|
+
# Copyright:: 2009
|
5
|
+
# License:: GPL
|
6
|
+
#
|
7
|
+
# Adds a #meta_def function to Object so we can programmatically define class
|
8
|
+
# methods.
|
9
|
+
#
|
10
|
+
|
11
|
+
class Object
|
12
|
+
|
13
|
+
# defines a class method
|
14
|
+
# based on: http://blog.jayfields.com/2007/10/ruby-defining-class-methods.html
|
15
|
+
# and: http://whytheluckystiff.net/articles/seeingMetaclassesClearly.html
|
16
|
+
def define_class_method name, &blk
|
17
|
+
(class << self; self; end).instance_eval { define_method name, &blk}
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
#
|
2
|
+
# File:: FileComparison.rb
|
3
|
+
# Author:: wkm
|
4
|
+
# Copyright:: 2009
|
5
|
+
# License:: GPL
|
6
|
+
#
|
7
|
+
# Adds File.equivalent? that tries to guess whether two files are equivalent
|
8
|
+
#
|
9
|
+
|
10
|
+
require 'sitefuel/extensions/ArrayComparisons'
|
11
|
+
|
12
|
+
class File
|
13
|
+
# gives true if one of the paths is the ending of another path
|
14
|
+
#
|
15
|
+
# File.equivalent?('b/a.rb', 'a.rb') # ==> true
|
16
|
+
# File.equivalent?('c/b/a.rb', 'c/a.rb') # ==> false
|
17
|
+
def self.equivalent?(a, b)
|
18
|
+
list = [
|
19
|
+
File.expand_path(a, '/').split(File::SEPARATOR)[1 .. -1],
|
20
|
+
File.expand_path(b, '/').split(File::SEPARATOR)[1 .. -1]
|
21
|
+
].sort {|l,r| l.length <=> r.length }.reverse
|
22
|
+
list.first.ends_with? list.last
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
#
|
2
|
+
# File:: Silently.rb
|
3
|
+
# Author:: wkm
|
4
|
+
# Copyright:: 2009
|
5
|
+
# License:: GPL
|
6
|
+
#
|
7
|
+
# Implements a silently method for executing code without warnings; intended for
|
8
|
+
# wrapping around require statements
|
9
|
+
#
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
# this is sourced directly from
|
14
|
+
# http://vidyapsi.wordpress.com/category/ruby/#warnings
|
15
|
+
|
16
|
+
def silently(&block)
|
17
|
+
warn_level = $VERBOSE
|
18
|
+
$VERBOSE = nil
|
19
|
+
|
20
|
+
result = block.call
|
21
|
+
|
22
|
+
$VERBOSE = warn_level
|
23
|
+
result
|
24
|
+
end
|
25
|
+
|
26
|
+
# /end sourcing
|
27
|
+
|
@@ -0,0 +1,75 @@
|
|
1
|
+
#
|
2
|
+
# File:: StringFormatting.rb
|
3
|
+
# Author:: wkm
|
4
|
+
# Copyright:: 2009
|
5
|
+
# License:: GPL
|
6
|
+
#
|
7
|
+
# Adds String#cabbrev for abbreviating strings
|
8
|
+
#
|
9
|
+
|
10
|
+
class String
|
11
|
+
|
12
|
+
# gives an abbreviated form of a string, showing some of the beginning
|
13
|
+
# and some of the end.
|
14
|
+
#
|
15
|
+
# "the quick brown dog".cabbrev 12 # => "the q... dog"
|
16
|
+
def cabbrev(len)
|
17
|
+
if length <= len
|
18
|
+
self
|
19
|
+
else
|
20
|
+
self[0..(len/2-2).floor] + "..." + self[(length - len/2+2) .. (length)]
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
# gives an abbreviated form of the string, showing as much of the beginning
|
25
|
+
# as possible
|
26
|
+
#
|
27
|
+
# "the quick brown dog".labbrev 12 # => "the quick ..."
|
28
|
+
def labbrev(len)
|
29
|
+
if length <= len
|
30
|
+
self
|
31
|
+
else
|
32
|
+
self[0..(len-4)] + '...'
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# gives an abbreviated form of the string, showing as much of the end as
|
37
|
+
# possible
|
38
|
+
#
|
39
|
+
# "the quick brown dog".rabbrev 12 # => "...brown dog"
|
40
|
+
def rabbrev(len)
|
41
|
+
if length <= len
|
42
|
+
self
|
43
|
+
else
|
44
|
+
'...' + self[(length - (len-3)) .. length]
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
# removes leading whitespace from a set of lines, preserving indentation
|
49
|
+
# relative to the first non-empty line
|
50
|
+
def align
|
51
|
+
return self if empty?
|
52
|
+
|
53
|
+
# split by lines
|
54
|
+
lines = split("\n")
|
55
|
+
|
56
|
+
# get rid of the first line if it is null
|
57
|
+
if lines.first == ''
|
58
|
+
lines = lines[1..-1]
|
59
|
+
end
|
60
|
+
|
61
|
+
# take the first line and extract the leading whitespace
|
62
|
+
leading = lines.first[/^[ \t]*/]
|
63
|
+
|
64
|
+
# iterate over each line dumping the leading whitespace
|
65
|
+
lines = lines.map do |l|
|
66
|
+
l.gsub!(Regexp.new('^'+leading), '')
|
67
|
+
end
|
68
|
+
|
69
|
+
lines.join("\n")
|
70
|
+
end
|
71
|
+
|
72
|
+
|
73
|
+
alias :format :%
|
74
|
+
|
75
|
+
end
|