nimbu 0.2 → 0.2.4
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/client.rb +19 -3
- data/lib/nimbu/command/themes.rb +101 -0
- data/lib/nimbu/server/base.rb +35 -6
- data/lib/nimbu/version.rb +1 -1
- metadata +29 -18
data/lib/nimbu/client.rb
CHANGED
@@ -69,10 +69,14 @@ class Nimbu::Client
|
|
69
69
|
post("/engine/template",params)
|
70
70
|
end
|
71
71
|
|
72
|
-
def
|
72
|
+
def get_request(params)
|
73
73
|
post("/engine/render",params)
|
74
74
|
end
|
75
75
|
|
76
|
+
def post_request(params)
|
77
|
+
post("/engine/process",params)
|
78
|
+
end
|
79
|
+
|
76
80
|
def list_themes
|
77
81
|
get("/themes")
|
78
82
|
end
|
@@ -93,6 +97,17 @@ class Nimbu::Client
|
|
93
97
|
get("/themes/#{theme}/assets/#{id}")
|
94
98
|
end
|
95
99
|
|
100
|
+
def upload_layout(theme,name,content)
|
101
|
+
post("/themes/#{theme}/layouts", {:name => name, :content => content})
|
102
|
+
end
|
103
|
+
|
104
|
+
def upload_template(theme,name,content)
|
105
|
+
post("/themes/#{theme}/templates", {:name => name, :content => content})
|
106
|
+
end
|
107
|
+
|
108
|
+
def upload_asset(theme,name,file)
|
109
|
+
post("/themes/#{theme}/assets", {:name => name, :file => file})
|
110
|
+
end
|
96
111
|
|
97
112
|
##################
|
98
113
|
|
@@ -100,7 +115,7 @@ class Nimbu::Client
|
|
100
115
|
if http_proxy
|
101
116
|
RestClient.proxy = http_proxy
|
102
117
|
end
|
103
|
-
resource = RestClient::Resource.new(realize_full_uri(uri), options
|
118
|
+
resource = RestClient::Resource.new(realize_full_uri(uri), options)
|
104
119
|
resource
|
105
120
|
end
|
106
121
|
|
@@ -154,7 +169,8 @@ class Nimbu::Client
|
|
154
169
|
|
155
170
|
def nimbu_headers # :nodoc:
|
156
171
|
{
|
157
|
-
'X-Nimbu-API-Version'
|
172
|
+
'X-Nimbu-API-Version' => '1',
|
173
|
+
'X-Nimbu-Token' => password,
|
158
174
|
'User-Agent' => self.class.gem_version_string,
|
159
175
|
'X-Ruby-Version' => RUBY_VERSION,
|
160
176
|
'X-Ruby-Platform' => RUBY_PLATFORM
|
data/lib/nimbu/command/themes.rb
CHANGED
@@ -83,4 +83,105 @@ class Nimbu::Command::Themes < Nimbu::Command::Base
|
|
83
83
|
print " (ok)\n"
|
84
84
|
end
|
85
85
|
end
|
86
|
+
|
87
|
+
# download
|
88
|
+
#
|
89
|
+
# download all layouts, templates and assets
|
90
|
+
#
|
91
|
+
def push
|
92
|
+
simulate = args.include?("--dry-run") || args.include?("-d")
|
93
|
+
liquid_only = args.include?("--liquid-only") || args.include?("--liquid")
|
94
|
+
css_only = args.include?("--css-only") || args.include?("--css")
|
95
|
+
js_only = args.include?("--js-only") || args.include?("-js")
|
96
|
+
|
97
|
+
# if !input.to_s.strip.empty?
|
98
|
+
# theme = input.to_s.strip
|
99
|
+
# else
|
100
|
+
# end
|
101
|
+
theme = Nimbu::Auth.theme
|
102
|
+
display "Pushing layouts, templates and assets for '#{theme}' to the server:"
|
103
|
+
|
104
|
+
layouts_glob = Dir.glob("#{Dir.pwd}/layouts/**/*.liquid")
|
105
|
+
layouts_files = layouts_glob.map {|dir| dir.gsub("#{Dir.pwd}/layouts/","")}
|
106
|
+
templates_glob = Dir.glob("#{Dir.pwd}/templates/**/*.liquid")
|
107
|
+
templates_files = templates_glob.map {|dir| dir.gsub("#{Dir.pwd}/templates/","")}
|
108
|
+
|
109
|
+
if !(css_only || js_only)
|
110
|
+
print "\nLayouts:\n"
|
111
|
+
layouts_files.each do |layout|
|
112
|
+
file = "#{Dir.pwd}/layouts/#{layout}"
|
113
|
+
next if File.directory?(file)
|
114
|
+
print " - layouts/#{layout}"
|
115
|
+
nimbu.upload_layout(theme, layout, IO.read(file))
|
116
|
+
print " (ok)\n"
|
117
|
+
end
|
118
|
+
|
119
|
+
print "\nTemplates:\n"
|
120
|
+
templates_files.each do |template|
|
121
|
+
file = "#{Dir.pwd}/templates/#{template}"
|
122
|
+
next if File.directory?(file)
|
123
|
+
print " - templates/#{template}"
|
124
|
+
nimbu.upload_template(theme, template, IO.read(file))
|
125
|
+
print " (ok)\n"
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
if !liquid_only
|
130
|
+
css_glob = Dir.glob("#{Dir.pwd}/stylesheets/**/*.css")
|
131
|
+
css_files = css_glob.map {|dir| dir.gsub("#{Dir.pwd}/stylesheets/","")}
|
132
|
+
if !js_only
|
133
|
+
print "\nStylesheet:\n"
|
134
|
+
css_files.each do |css|
|
135
|
+
file = "#{Dir.pwd}/stylesheets/#{css}"
|
136
|
+
next if File.directory?(file) || (!anyFileWithWord?(layouts_glob,css) && !anyFileWithWord?(templates_glob,css))
|
137
|
+
nimbu.upload_asset(theme, "stylesheets/#{css}", File.open(file))
|
138
|
+
print " - stylesheets/#{css}"
|
139
|
+
print " (ok)\n"
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
js_glob = Dir.glob("#{Dir.pwd}/javascripts/**/*.js")
|
144
|
+
js_files = js_glob.map {|dir| dir.gsub("#{Dir.pwd}/javascripts/","")}
|
145
|
+
if !css_only
|
146
|
+
print "\nJavascripts:\n"
|
147
|
+
js_files.each do |js|
|
148
|
+
file = "#{Dir.pwd}/javascripts/#{js}"
|
149
|
+
next if File.directory?(file) || (!anyFileWithWord?(layouts_glob,js) && !anyFileWithWord?(templates_glob,js))
|
150
|
+
nimbu.upload_asset(theme, "javascripts/#{js}", File.open(file))
|
151
|
+
print " - javascripts/#{js}"
|
152
|
+
print " (ok)\n"
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
image_files = Dir.glob("#{Dir.pwd}/images/**/*").map {|dir| dir.gsub("#{Dir.pwd}/images/","")}
|
157
|
+
if !(css_only || js_only)
|
158
|
+
print "\nImages:\n"
|
159
|
+
image_files.each do |image|
|
160
|
+
file = "#{Dir.pwd}/images/#{image}"
|
161
|
+
next if File.directory?(file) || (!anyFileWithWord?(css_glob,image) && !anyFileWithWord?(js_glob,image) && !anyFileWithWord?(layouts_glob,image) && !anyFileWithWord?(templates_glob,image))
|
162
|
+
nimbu.upload_asset(theme, "images/#{image}", File.open(file))
|
163
|
+
print " - images/#{image}"
|
164
|
+
print " (ok)\n"
|
165
|
+
end
|
166
|
+
end
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
private
|
171
|
+
|
172
|
+
def anyFileWithWord?(glob,word)
|
173
|
+
found = false
|
174
|
+
glob.each do |file|
|
175
|
+
found = true if fileHasWord?(file,word)
|
176
|
+
end
|
177
|
+
return found
|
178
|
+
end
|
179
|
+
|
180
|
+
def fileHasWord?(file,word)
|
181
|
+
File.open(file) do |f|
|
182
|
+
f.any? do |line|
|
183
|
+
line.include?(word)
|
184
|
+
end
|
185
|
+
end
|
186
|
+
end
|
86
187
|
end
|
data/lib/nimbu/server/base.rb
CHANGED
@@ -1,9 +1,18 @@
|
|
1
1
|
require 'sinatra'
|
2
|
+
require "sinatra/reloader"
|
2
3
|
require "vendor/nimbu/okjson"
|
4
|
+
require 'term/ansicolor'
|
3
5
|
|
4
6
|
module Nimbu
|
5
7
|
module Server
|
6
8
|
class Base < Sinatra::Base
|
9
|
+
include Term::ANSIColor
|
10
|
+
enable :sessions
|
11
|
+
|
12
|
+
configure :development do
|
13
|
+
register Sinatra::Reloader
|
14
|
+
end
|
15
|
+
|
7
16
|
set :static, true # set up static file routing
|
8
17
|
set :public_folder, Dir.pwd # set up the static dir (with images/js/css inside)
|
9
18
|
|
@@ -17,15 +26,32 @@ module Nimbu
|
|
17
26
|
return ""
|
18
27
|
end
|
19
28
|
|
29
|
+
get '/favicon.ico' do
|
30
|
+
return ""
|
31
|
+
end
|
32
|
+
|
33
|
+
post '*' do
|
34
|
+
path = request.path == "/" ? request.path : request.path.gsub(/\/$/,'')
|
35
|
+
result = json_decode(nimbu.post_request({:path => path, :extra => params, :session => session}))
|
36
|
+
|
37
|
+
session[:logged_in] = true if result["logged_in"]
|
38
|
+
session[:flash] = result["flash"] if result["flash"]
|
39
|
+
redirect result["redirect_to"] if result["redirect_to"]
|
40
|
+
end
|
41
|
+
|
20
42
|
get '*' do
|
21
|
-
puts "Getting template for #{request.
|
43
|
+
puts green("Getting template for #{request.fullpath}")
|
22
44
|
path = request.path == "/" ? request.path : request.path.gsub(/\/$/,'')
|
23
|
-
|
24
|
-
|
45
|
+
result = json_decode(nimbu.get_template({:path => path, :extra => params}))
|
46
|
+
|
47
|
+
session[:logged_in] = result["logged_in"] if result.has_key?("logged_in")
|
48
|
+
redirect result["redirect_to"] if result["redirect_to"]
|
49
|
+
|
50
|
+
if result["template"].nil?
|
25
51
|
raise Sinatra::NotFound
|
26
52
|
end
|
27
|
-
template = template.gsub(/buddha$/,'liquid')
|
28
|
-
puts "Uploading assets for template '#{template}'"
|
53
|
+
template = result["template"].gsub(/buddha$/,'liquid')
|
54
|
+
puts green("Uploading assets for template '#{template}'")
|
29
55
|
# Read the template file
|
30
56
|
template_file = File.join(Dir.pwd,'templates',template)
|
31
57
|
if File.exists?(template_file)
|
@@ -48,11 +74,14 @@ module Nimbu
|
|
48
74
|
if File.exists?(layout_file)
|
49
75
|
layout_code = IO.read(layout_file)
|
50
76
|
else
|
77
|
+
puts red("Layout file '#{layout_file}' is missing...")
|
51
78
|
return "Layout file '#{layout_file}' is missing..."
|
52
79
|
end
|
53
80
|
|
81
|
+
puts red("logged_in") if session[:logged_in]
|
82
|
+
|
54
83
|
# Send the templates to the browser
|
55
|
-
results = json_decode(nimbu.
|
84
|
+
results = json_decode(nimbu.get_request({:path => path, :template => template_code, :layout => layout_code, :extra => params, :logged_in => session[:logged_in]}))
|
56
85
|
|
57
86
|
return "#{results["result"]}"
|
58
87
|
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:
|
4
|
+
version: 0.2.4
|
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-
|
12
|
+
date: 2012-03-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: term-ansicolor
|
16
|
-
requirement: &
|
16
|
+
requirement: &70348632583180 !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: *70348632583180
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rest-client
|
27
|
-
requirement: &
|
27
|
+
requirement: &70348632597260 !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: *70348632597260
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: launchy
|
38
|
-
requirement: &
|
38
|
+
requirement: &70348632596100 !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: *70348632596100
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rubyzip
|
49
|
-
requirement: &
|
49
|
+
requirement: &70348632593760 !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: *70348632593760
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: sinatra
|
60
|
-
requirement: &
|
60
|
+
requirement: &70348632605460 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,21 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70348632605460
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: sinatra-contrib
|
71
|
+
requirement: &70348632604380 !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: *70348632604380
|
69
80
|
- !ruby/object:Gem::Dependency
|
70
81
|
name: compass
|
71
|
-
requirement: &
|
82
|
+
requirement: &70348632603440 !ruby/object:Gem::Requirement
|
72
83
|
none: false
|
73
84
|
requirements:
|
74
85
|
- - ! '>='
|
@@ -76,10 +87,10 @@ dependencies:
|
|
76
87
|
version: '0'
|
77
88
|
type: :runtime
|
78
89
|
prerelease: false
|
79
|
-
version_requirements: *
|
90
|
+
version_requirements: *70348632603440
|
80
91
|
- !ruby/object:Gem::Dependency
|
81
92
|
name: haml
|
82
|
-
requirement: &
|
93
|
+
requirement: &70348632601780 !ruby/object:Gem::Requirement
|
83
94
|
none: false
|
84
95
|
requirements:
|
85
96
|
- - ! '>='
|
@@ -87,10 +98,10 @@ dependencies:
|
|
87
98
|
version: '0'
|
88
99
|
type: :runtime
|
89
100
|
prerelease: false
|
90
|
-
version_requirements: *
|
101
|
+
version_requirements: *70348632601780
|
91
102
|
- !ruby/object:Gem::Dependency
|
92
103
|
name: fssm
|
93
|
-
requirement: &
|
104
|
+
requirement: &70348632600000 !ruby/object:Gem::Requirement
|
94
105
|
none: false
|
95
106
|
requirements:
|
96
107
|
- - ! '>='
|
@@ -98,7 +109,7 @@ dependencies:
|
|
98
109
|
version: '0'
|
99
110
|
type: :runtime
|
100
111
|
prerelease: false
|
101
|
-
version_requirements: *
|
112
|
+
version_requirements: *70348632600000
|
102
113
|
description: Client library and command-line tool to design and manage websites on
|
103
114
|
the Nimbu platform.
|
104
115
|
email:
|