nimbu 0.2 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
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 get_page(params)
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.merge(:user => password))
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' => '1',
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
@@ -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
@@ -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.path}"
43
+ puts green("Getting template for #{request.fullpath}")
22
44
  path = request.path == "/" ? request.path : request.path.gsub(/\/$/,'')
23
- template = json_decode(nimbu.get_template({:path => path}))["template"]
24
- if template.nil?
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.get_page({:path => path, :template => template_code, :layout => layout_code}))
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
@@ -1,3 +1,3 @@
1
1
  module Nimbu
2
- VERSION = "0.2"
2
+ VERSION = "0.2.4"
3
3
  end
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.2'
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-02-29 00:00:00.000000000 Z
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: &70143971766620 !ruby/object:Gem::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: *70143971766620
24
+ version_requirements: *70348632583180
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rest-client
27
- requirement: &70143971766080 !ruby/object:Gem::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: *70143971766080
35
+ version_requirements: *70348632597260
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: launchy
38
- requirement: &70143971765600 !ruby/object:Gem::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: *70143971765600
46
+ version_requirements: *70348632596100
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rubyzip
49
- requirement: &70143971765140 !ruby/object:Gem::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: *70143971765140
57
+ version_requirements: *70348632593760
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: sinatra
60
- requirement: &70143971764540 !ruby/object:Gem::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: *70143971764540
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: &70143971763980 !ruby/object:Gem::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: *70143971763980
90
+ version_requirements: *70348632603440
80
91
  - !ruby/object:Gem::Dependency
81
92
  name: haml
82
- requirement: &70143971762860 !ruby/object:Gem::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: *70143971762860
101
+ version_requirements: *70348632601780
91
102
  - !ruby/object:Gem::Dependency
92
103
  name: fssm
93
- requirement: &70143971762380 !ruby/object:Gem::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: *70143971762380
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: