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 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: