nimbu 0.1.2 → 0.2
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/lib/nimbu/command/server.rb +124 -2
- data/lib/nimbu/version.rb +1 -1
- metadata +45 -12
data/lib/nimbu/command/server.rb
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
require "nimbu/command/base"
|
|
2
2
|
require "nimbu/server/base"
|
|
3
3
|
require 'term/ansicolor'
|
|
4
|
+
require 'compass'
|
|
5
|
+
require 'compass/exec'
|
|
4
6
|
|
|
5
7
|
# running a local server to speed up designing Nimbu themes
|
|
6
8
|
#
|
|
@@ -15,8 +17,128 @@ class Nimbu::Command::Server < Nimbu::Command::Base
|
|
|
15
17
|
if !Nimbu::Auth.read_configuration && !Nimbu::Auth.read_credentials
|
|
16
18
|
print red(bold("ERROR")), ": this directory does not seem to contain any Nimbu theme or your credentials are not set. \n ==> Run \"", bold { "nimbu init"}, "\" to initialize this directory."
|
|
17
19
|
else
|
|
18
|
-
|
|
19
|
-
|
|
20
|
+
server_pid = fork do
|
|
21
|
+
puts "Starting the server..."
|
|
22
|
+
Nimbu::Server::Base.run!
|
|
23
|
+
end
|
|
24
|
+
haml_pid = fork do
|
|
25
|
+
puts "Watching haml files..."
|
|
26
|
+
HamlWatcher.watch
|
|
27
|
+
end
|
|
28
|
+
compass_pid = fork do
|
|
29
|
+
puts "Watching compass files..."
|
|
30
|
+
Compass::Exec::SubCommandUI.new(["watch","."]).run!
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
Process.wait(server_pid)
|
|
34
|
+
Process.wait(haml_pid)
|
|
35
|
+
Process.wait(compass_pid)
|
|
36
|
+
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
require 'rubygems'
|
|
42
|
+
require 'fssm'
|
|
43
|
+
require 'haml'
|
|
44
|
+
|
|
45
|
+
class HamlWatcher
|
|
46
|
+
class << self
|
|
47
|
+
include Term::ANSIColor
|
|
48
|
+
|
|
49
|
+
def watch
|
|
50
|
+
refresh
|
|
51
|
+
puts ">>> HamlWatcher is watching for changes. Press Ctrl-C to Stop."
|
|
52
|
+
FSSM.monitor('haml', '**/*.haml') do
|
|
53
|
+
update do |base, relative|
|
|
54
|
+
puts ">>> Change detected to: #{relative}"
|
|
55
|
+
HamlWatcher.compile(relative)
|
|
56
|
+
end
|
|
57
|
+
create do |base, relative|
|
|
58
|
+
puts ">>> File created: #{relative}"
|
|
59
|
+
HamlWatcher.compile(relative)
|
|
60
|
+
end
|
|
61
|
+
delete do |base, relative|
|
|
62
|
+
puts ">>> File deleted: #{relative}"
|
|
63
|
+
HamlWatcher.remove(relative)
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def output_file(filename)
|
|
69
|
+
# './haml' retains the base directory structure
|
|
70
|
+
filename.gsub(/\.html\.haml$/,'.html').gsub(/\.liquid\.haml$/,'.liquid')
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def remove(file)
|
|
74
|
+
output = output_file(file)
|
|
75
|
+
File.delete output
|
|
76
|
+
puts "\033[0;31m remove\033[0m #{output}"
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def compile(file)
|
|
80
|
+
begin
|
|
81
|
+
output_file_name = output_file(file)
|
|
82
|
+
origin = File.open(File.join('haml', file)).read
|
|
83
|
+
result = Haml::Engine.new(origin).render
|
|
84
|
+
raise "Nothing rendered!" if result.empty?
|
|
85
|
+
# Write rendered HTML to file
|
|
86
|
+
color, action = File.exist?(output_file_name) ? [33, 'overwrite'] : [32, ' create']
|
|
87
|
+
puts "\033[0;#{color}m#{action}\033[0m #{output_file_name}"
|
|
88
|
+
FileUtils.mkdir_p(File.dirname(output_file_name))
|
|
89
|
+
File.open(output_file_name,'w') {|f| f.write(result)}
|
|
90
|
+
rescue Exception => e
|
|
91
|
+
print red("#{plainError e, file}\n")
|
|
92
|
+
output_file_name = output_file(file)
|
|
93
|
+
result = goHere(e, file)
|
|
94
|
+
File.open(output_file_name,'w') {|f| f.write(result)} if File::exists?(output_file_name)
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
# Check that all haml templates have been rendered.
|
|
99
|
+
def refresh
|
|
100
|
+
Dir.glob('haml/**/*.haml').each do |file|
|
|
101
|
+
file.gsub!(/^haml\//, '')
|
|
102
|
+
compile(file) unless File.exist?(output_file(file))
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def goHere(message, nameoffile)
|
|
107
|
+
@messag = ""
|
|
108
|
+
#@messag += "<html><head><title>ERROR IN CODE</title>"
|
|
109
|
+
#CSS for error styling.
|
|
110
|
+
@messag += "<style type = \"text/css\">"
|
|
111
|
+
@messag +="body { background-color: #fff; margin: 40px; font-family: Lucida Grande, Verdana, Sans-serif; font-size: 12px; color: #000;}"
|
|
112
|
+
@messag +="#content { border: #999 1px solid; background-color: #fff; padding: 20px 20px 12px 20px;}"
|
|
113
|
+
@messag +="h1 { font-weight: normal; font-size: 14px; color: #990000; margin: 0 0 4px 0; }"
|
|
114
|
+
@messag += "</style>"
|
|
115
|
+
@messag += "<div id=\"content\">"
|
|
116
|
+
@messag += "<h1>You have an Error in your HAML code </h1>"
|
|
117
|
+
@messag += "<p>#{message} </p>"
|
|
118
|
+
@messag += "<p>On Line : #{get_line message}.</p>"
|
|
119
|
+
@messag += "<p>In file location: <strong>#{nameoffile}</strong></p>"
|
|
120
|
+
@messag += "</div>"
|
|
121
|
+
return @messag
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def get_line(exception)
|
|
125
|
+
# SyntaxErrors have weird line reporting
|
|
126
|
+
# when there's trailing whitespace,
|
|
127
|
+
# which there is for Haml documents.
|
|
128
|
+
return (exception.message.scan(/:(\d+)/).first || ["??"]).first if exception.is_a?(::SyntaxError)
|
|
129
|
+
(exception.backtrace[0].scan(/:(\d+)/).first || ["??"]).first
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
def plainError(message, nameoffile)
|
|
133
|
+
@plainMessage = ""
|
|
134
|
+
@plainMessage += "Error: #{message} \n"
|
|
135
|
+
@plainMessage += "Line number #{get_line message} "
|
|
136
|
+
@plainMessage += "File error detected: #{nameoffile}"
|
|
137
|
+
return @plainMessage
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
def sassErrorLine message
|
|
141
|
+
return message
|
|
20
142
|
end
|
|
21
143
|
end
|
|
22
144
|
end
|
data/lib/nimbu/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: nimbu
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: '0.2'
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,11 +9,11 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2012-02-
|
|
12
|
+
date: 2012-02-29 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: term-ansicolor
|
|
16
|
-
requirement: &
|
|
16
|
+
requirement: &70143971766620 !ruby/object:Gem::Requirement
|
|
17
17
|
none: false
|
|
18
18
|
requirements:
|
|
19
19
|
- - ~>
|
|
@@ -21,10 +21,10 @@ dependencies:
|
|
|
21
21
|
version: 1.0.5
|
|
22
22
|
type: :runtime
|
|
23
23
|
prerelease: false
|
|
24
|
-
version_requirements: *
|
|
24
|
+
version_requirements: *70143971766620
|
|
25
25
|
- !ruby/object:Gem::Dependency
|
|
26
26
|
name: rest-client
|
|
27
|
-
requirement: &
|
|
27
|
+
requirement: &70143971766080 !ruby/object:Gem::Requirement
|
|
28
28
|
none: false
|
|
29
29
|
requirements:
|
|
30
30
|
- - ~>
|
|
@@ -32,10 +32,10 @@ dependencies:
|
|
|
32
32
|
version: 1.6.1
|
|
33
33
|
type: :runtime
|
|
34
34
|
prerelease: false
|
|
35
|
-
version_requirements: *
|
|
35
|
+
version_requirements: *70143971766080
|
|
36
36
|
- !ruby/object:Gem::Dependency
|
|
37
37
|
name: launchy
|
|
38
|
-
requirement: &
|
|
38
|
+
requirement: &70143971765600 !ruby/object:Gem::Requirement
|
|
39
39
|
none: false
|
|
40
40
|
requirements:
|
|
41
41
|
- - ! '>='
|
|
@@ -43,10 +43,10 @@ dependencies:
|
|
|
43
43
|
version: 0.3.2
|
|
44
44
|
type: :runtime
|
|
45
45
|
prerelease: false
|
|
46
|
-
version_requirements: *
|
|
46
|
+
version_requirements: *70143971765600
|
|
47
47
|
- !ruby/object:Gem::Dependency
|
|
48
48
|
name: rubyzip
|
|
49
|
-
requirement: &
|
|
49
|
+
requirement: &70143971765140 !ruby/object:Gem::Requirement
|
|
50
50
|
none: false
|
|
51
51
|
requirements:
|
|
52
52
|
- - ! '>='
|
|
@@ -54,10 +54,10 @@ dependencies:
|
|
|
54
54
|
version: '0'
|
|
55
55
|
type: :runtime
|
|
56
56
|
prerelease: false
|
|
57
|
-
version_requirements: *
|
|
57
|
+
version_requirements: *70143971765140
|
|
58
58
|
- !ruby/object:Gem::Dependency
|
|
59
59
|
name: sinatra
|
|
60
|
-
requirement: &
|
|
60
|
+
requirement: &70143971764540 !ruby/object:Gem::Requirement
|
|
61
61
|
none: false
|
|
62
62
|
requirements:
|
|
63
63
|
- - ! '>='
|
|
@@ -65,7 +65,40 @@ dependencies:
|
|
|
65
65
|
version: '0'
|
|
66
66
|
type: :runtime
|
|
67
67
|
prerelease: false
|
|
68
|
-
version_requirements: *
|
|
68
|
+
version_requirements: *70143971764540
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: compass
|
|
71
|
+
requirement: &70143971763980 !ruby/object:Gem::Requirement
|
|
72
|
+
none: false
|
|
73
|
+
requirements:
|
|
74
|
+
- - ! '>='
|
|
75
|
+
- !ruby/object:Gem::Version
|
|
76
|
+
version: '0'
|
|
77
|
+
type: :runtime
|
|
78
|
+
prerelease: false
|
|
79
|
+
version_requirements: *70143971763980
|
|
80
|
+
- !ruby/object:Gem::Dependency
|
|
81
|
+
name: haml
|
|
82
|
+
requirement: &70143971762860 !ruby/object:Gem::Requirement
|
|
83
|
+
none: false
|
|
84
|
+
requirements:
|
|
85
|
+
- - ! '>='
|
|
86
|
+
- !ruby/object:Gem::Version
|
|
87
|
+
version: '0'
|
|
88
|
+
type: :runtime
|
|
89
|
+
prerelease: false
|
|
90
|
+
version_requirements: *70143971762860
|
|
91
|
+
- !ruby/object:Gem::Dependency
|
|
92
|
+
name: fssm
|
|
93
|
+
requirement: &70143971762380 !ruby/object:Gem::Requirement
|
|
94
|
+
none: false
|
|
95
|
+
requirements:
|
|
96
|
+
- - ! '>='
|
|
97
|
+
- !ruby/object:Gem::Version
|
|
98
|
+
version: '0'
|
|
99
|
+
type: :runtime
|
|
100
|
+
prerelease: false
|
|
101
|
+
version_requirements: *70143971762380
|
|
69
102
|
description: Client library and command-line tool to design and manage websites on
|
|
70
103
|
the Nimbu platform.
|
|
71
104
|
email:
|