caboodle 0.2.8 → 0.2.9

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -6,11 +6,10 @@ begin
6
6
  Jeweler::Tasks.new do |gem|
7
7
  gem.name = "caboodle"
8
8
  gem.summary = "Web mashups the simple way"
9
- gem.description = "Use Kits to create simple mashups."
9
+ gem.description = "Caboodle is a Rack and Sinatra-based framework for creating websites which combine information from various online services. There are Kits for many of the larger services, which provide a way to retrieve and display photos, videos, blog posts, status updates and so on. Caboodle normalises the display of all of these discrete Kits so that you can create a website which looks seamless but is made up of a variety of things from a variety of sources."
10
10
  gem.email = "stef@stef.io"
11
11
  gem.homepage = "http://github.com/steflewandowski/caboodle"
12
- gem.authors = ["steflewandowski"]
13
- gem.add_dependency "heroku", ">= 0"
12
+ gem.authors = ["Stef Lewandowski"]
14
13
  gem.add_dependency "sinatra", ">=1.0"
15
14
  gem.add_dependency "hashie", ">=0.2.0"
16
15
  gem.add_dependency "haml", ">=3.0.12"
@@ -18,11 +17,9 @@ begin
18
17
  gem.add_dependency "compass-susy-plugin", ">=0.7.0"
19
18
  gem.add_dependency "sinatra-compass", ">=0.5.0"
20
19
  gem.add_dependency "sinatra-advanced-routes", ">=0.5.1"
21
- gem.add_dependency "sinatra-content-for",">=0.2.0"
22
- gem.add_dependency "memcached",">=0.19.9"
23
20
  gem.add_dependency "nokogiri",">=1.4.0"
24
21
  gem.add_dependency "weary",">=0.7.2"
25
- gem.add_dependency "sleepy",">=0.1.3"
22
+ gem.add_dependency "sleepy",">=0.1.4"
26
23
  end
27
24
  Jeweler::GemcutterTasks.new
28
25
  rescue LoadError
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.8
1
+ 0.2.9
data/bin/caboodle CHANGED
@@ -11,4 +11,10 @@ args = ARGV.dup
11
11
  ARGV.clear
12
12
  command = args.shift.strip rescue 'help'
13
13
 
14
- Caboodle::Command.run(command, args)
14
+ git_path = `which git`
15
+ if git_path.blank?
16
+ puts "Sorry - you don't appear to have git installed or in your path"
17
+ puts "Please set up git and try again: http://github.com"
18
+ else
19
+ Caboodle::Command.run(command, args)
20
+ end
@@ -1 +1,2 @@
1
- caboodle
1
+ caboodle
2
+ memcached
@@ -1,5 +1,6 @@
1
1
  has_footer: true
2
2
  has_caboodle_link: true
3
+ home_kit: Standard
3
4
  kits:
4
5
  - Standard
5
6
  - Skimmed
data/lib/caboodle/app.rb CHANGED
@@ -10,7 +10,7 @@ module Caboodle
10
10
  helpers Sinatra::CaboodleHelpers
11
11
 
12
12
  configure do
13
- Caboodle::Kit.configure
13
+ Caboodle::Kit.configure File.expand_path(File.join(Caboodle::App.root,"config","site.yml"))
14
14
  end
15
15
 
16
16
  end
@@ -1,6 +1,3 @@
1
- gem 'heroku'
2
- require 'heroku'
3
- require 'heroku/command'
4
1
 
5
2
  module Caboodle
6
3
  module Command
@@ -8,20 +5,24 @@ module Caboodle
8
5
  def run(command, args, retries=0)
9
6
  case command
10
7
  when "create"
11
- puts `mkdir #{args.first}`
12
- puts `cd #{args.first} && cp -r #{File.expand_path(File.join(File.dirname(__FILE__), 'app'))}/* .`
13
- puts `cd #{args.first} && cp #{File.expand_path(File.join(File.dirname(__FILE__), 'app'))}/.gems .`
14
- puts `cd #{args.first} && git init`
15
- Caboodle::Kit.configure
16
- puts `cd #{args.first} && git add .`
17
- puts `cd #{args.first} && git commit -m"initial setup"`
18
- puts `cd #{args.first} && heroku create #{args.first}`
19
-
8
+ puts "Welcome to Caboodle!"
9
+ site_name = args.first
10
+ puts `mkdir -p #{site_name}`
11
+ puts `cd #{site_name} && cp -ri #{File.expand_path(File.join(File.dirname(__FILE__), 'app'))}/* .`
12
+ puts `cd #{site_name} && cp -i #{File.expand_path(File.join(File.dirname(__FILE__), 'app'))}/.gems .`
13
+ puts `cd #{site_name} && git init`
14
+ config = File.expand_path(File.join(".",site_name,"config","site.yml"))
15
+ Caboodle::Kit.configure config
16
+ puts "Please set a few settings to get started"
17
+ Caboodle::Kit.ask_user_for_all_missing_settings
18
+ puts `cd #{site_name} && git add .`
19
+ puts `cd #{site_name} && git commit -m"initial setup"`
20
20
  when /kit:add/
21
21
  Caboodle::Kit.load_kit args.first.capitalize
22
22
  puts "Dump config"
23
23
  Caboodle::Kit.dump_config
24
24
  puts "Pushing to Heroku"
25
+ puts "Please be patient - this could take some time the first time you do this"
25
26
  puts `git add .`
26
27
  puts `git commit -m"kit:add #{args}" -a`
27
28
  puts `git push heroku master`
@@ -29,7 +30,12 @@ module Caboodle
29
30
  when /kit:home/
30
31
  if Caboodle::Kit.available_kits.include?(args.first.capitalize)
31
32
  Caboodle::Site.home_kit = args.first.capitalize
33
+ else
34
+ puts "Sorry - that Kit isn't available. Try:"
35
+ Caboodle::Kit.available_kits.each {|kit| puts kit}
32
36
  end
37
+ when /kit:list/
38
+ Caboodle::Kit.available_kits.each {|kit| puts kit}
33
39
  when /kit:remove/
34
40
  Caboodle::Kit.unload_kit args.first.capitalize
35
41
  puts "Pushing to Heroku"
@@ -38,12 +44,16 @@ module Caboodle
38
44
  puts `git push heroku master`
39
45
  puts "Done!"
40
46
  when "deploy"
47
+ gem 'heroku'
48
+ require 'heroku'
49
+ require 'heroku/command'
50
+
41
51
  puts `git commit -m"deploy" -a`
42
52
  puts `git push heroku master`
43
53
  else
44
- Heroku::Command.run(command,args,retries)
54
+ puts "Sorry, that command is not recognized"
45
55
  end
46
56
  end
47
57
  end
48
58
  end
49
- end
59
+ end
@@ -8,6 +8,7 @@ module Caboodle
8
8
  Errors = []
9
9
  Defaults = Hashie::Mash.new(Hashie::Mash.new(YAML.load_file(File.join(File.dirname(__FILE__), 'config','defaults.yml'))))
10
10
  RequiredSettings = Hashie::Mash.new()
11
+ OptionalSettings = Hashie::Mash.new()
11
12
  Layout = Hashie::Mash.new()
12
13
  Site = Defaults.clone
13
14
 
data/lib/caboodle/kit.rb CHANGED
@@ -22,11 +22,13 @@ module Caboodle
22
22
  class << self
23
23
  attr_accessor :credit_link
24
24
 
25
- def configure
26
- config_path = File.expand_path(File.join(Caboodle::App.root,"config","site.yml"))
25
+ def configure config_path
26
+ set :config, config_path
27
27
  if File.exists?(config_path)
28
28
  Caboodle::Kit.load_config(config_path)
29
29
  Caboodle::Kit.setup
30
+ else
31
+ puts "No such configuration file: #{config_path}"
30
32
  end
31
33
  end
32
34
 
@@ -54,14 +56,13 @@ module Caboodle
54
56
 
55
57
  def dump_config
56
58
  begin
57
- puts "Dump config"
58
- p = File.expand_path(File.join(Caboodle::App.root,"config","site.yml"))
59
+ p = config
59
60
  d = Caboodle::Site.clone
60
61
  e = d.to_hash
61
62
  e.delete("required_settings")
62
63
  File.open(p, 'w') {|f| f.write(YAML::dump(e))}
63
64
  rescue
64
- puts "Cannot write config file"
65
+ puts "Cannot write to config file: #{p}"
65
66
  end
66
67
  end
67
68
 
@@ -118,25 +119,43 @@ module Caboodle
118
119
  end
119
120
 
120
121
  def register_kit
121
- required_settings.each do |r|
122
- puts "checking #{r}"
123
- puts "value: #{Caboodle::Site[r]}"
124
- if Caboodle::Site[r].blank?
125
- puts "Rack env #{ENV["RACK_ENV"]}"
126
- unless ENV["RACK_ENV"] == "production"
127
- puts "Please set a value for #{r}:"
128
- v = STDIN.gets
129
- Caboodle::Site[r] = v
130
- Caboodle::Kit.dump_config
131
- end
132
- end
133
- end
122
+ ask_user_for_missing_settings
134
123
  Site.kits << name
135
124
  Site.kits.uniq!
136
125
  Caboodle::Kits << self
137
126
  Caboodle::Kits
138
127
  end
139
128
 
129
+ def ask_user r, optional=false
130
+ unless ENV["RACK_ENV"] == "production"
131
+ puts " "
132
+ opt = "Optional: " if optional
133
+ puts "#{opt}Please set a value for #{r}:"
134
+ v = STDIN.gets
135
+ Caboodle::Site[r] = v
136
+ Caboodle::Kit.dump_config
137
+ end
138
+ end
139
+
140
+ def ask_user_for_missing_settings
141
+ required_settings.each do |r|
142
+ if Caboodle::Site[r].blank?
143
+ ask_user r
144
+ end
145
+ end
146
+ optional_settings.each do |r|
147
+ if Caboodle::Site[r].blank?
148
+ ask_user r, true
149
+ end
150
+ end
151
+ end
152
+
153
+ def ask_user_for_all_missing_settings
154
+ Caboodle::Kits.each do |kit|
155
+ kit.ask_user_for_missing_settings
156
+ end
157
+ end
158
+
140
159
  def unregister_kit
141
160
  Caboodle::Kits.delete(self)
142
161
  Caboodle::Site.kits.delete(self.to_s)
@@ -179,6 +198,16 @@ module Caboodle
179
198
  self.required_settings
180
199
  end
181
200
 
201
+ def optional keys
202
+ if keys.class == Array
203
+ keys.each do |k|
204
+ self.optional_settings << k
205
+ end
206
+ else
207
+ self.optional_settings << keys
208
+ end
209
+ self.optional_settings end
210
+
182
211
  def stylesheets array_of_css_files
183
212
  if array_of_css_files.class == Array
184
213
  array_of_css_files.each { |a| Caboodle::Stylesheets << a.to_s }
@@ -245,9 +274,14 @@ module Caboodle
245
274
  end
246
275
 
247
276
  def required_settings
248
- r = RequiredSettings[self.ancestors.first.to_s.split("::").last] ||= []
277
+ RequiredSettings[self.ancestors.first.to_s.split("::").last] ||= []
249
278
  RequiredSettings[self.ancestors.first.to_s.split("::").last]
250
279
  end
280
+
281
+ def optional_settings
282
+ OptionalSettings[self.ancestors.first.to_s.split("::").last] ||= []
283
+ OptionalSettings[self.ancestors.first.to_s.split("::").last]
284
+ end
251
285
 
252
286
  def available_kits
253
287
  Dir.new(File.join(File.dirname(__FILE__),"kits")).entries.delete_if{|a| a[0,1]=="."}
@@ -1,9 +1,9 @@
1
1
  module Caboodle
2
2
  class Standard < Caboodle::Kit
3
- required [:title, :description, :logo_url, :author]
4
- puts "Test home kit"
3
+ required [:title, :description, :author]
4
+ optional [:logo_url]
5
5
  if Caboodle::Site.home_kit.blank? || !(Caboodle::Kit.available_kits.include?(Caboodle::Site.home_kit)) || !(Caboodle::Kits.include?(Caboodle::Site.home_kit))
6
- puts "There is no home page kit"
6
+ puts "Using the default home kit - you will want to run 'caboodle kit:home <kit name>' to specify your own kit"
7
7
  get "/" do
8
8
  haml :standard
9
9
  end
@@ -1,9 +1,12 @@
1
+ require 'nokogiri'
2
+ require 'hashie'
3
+
1
4
  module Caboodle
2
5
  def self.scrape url
3
- Nokogiri::HTML(Weary.get(url).perform_sleepily.body)
6
+ ::Nokogiri::HTML(Weary.get(url).perform_sleepily.body)
4
7
  end
5
8
 
6
9
  def self.mash req
7
- Hashie::Mash.new(req.perform_sleepily.parse)
10
+ ::Hashie::Mash.new(req.perform_sleepily.parse)
8
11
  end
9
12
  end
data/lib/caboodle.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  $:<<File.dirname(__FILE__)
2
2
  $:<<File.join(File.dirname(__FILE__),"caboodle")
3
- %{sinatra/base sinatra/content_for yaml hashie haml find sinatra/base sinatra/compass sinatra/advanced_routes compass susy pp sleepy caboodle/helpers caboodle/config caboodle/kit caboodle/app caboodle/scrape}.split.each{|a| require a}
3
+ %{sinatra/base yaml hashie haml find sinatra/base sinatra/compass sinatra/advanced_routes compass susy pp sleepy caboodle/helpers caboodle/config caboodle/kit caboodle/app caboodle/scrape}.split.each{|a| require a}
metadata CHANGED
@@ -1,41 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: caboodle
3
3
  version: !ruby/object:Gem::Version
4
- hash: 7
4
+ hash: 5
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 8
10
- version: 0.2.8
9
+ - 9
10
+ version: 0.2.9
11
11
  platform: ruby
12
12
  authors:
13
- - steflewandowski
13
+ - Stef Lewandowski
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-08-25 00:00:00 +01:00
18
+ date: 2010-08-26 00:00:00 +01:00
19
19
  default_executable: caboodle
20
20
  dependencies:
21
- - !ruby/object:Gem::Dependency
22
- name: heroku
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 3
30
- segments:
31
- - 0
32
- version: "0"
33
- type: :runtime
34
- version_requirements: *id001
35
21
  - !ruby/object:Gem::Dependency
36
22
  name: sinatra
37
23
  prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ requirement: &id001 !ruby/object:Gem::Requirement
39
25
  none: false
40
26
  requirements:
41
27
  - - ">="
@@ -46,11 +32,11 @@ dependencies:
46
32
  - 0
47
33
  version: "1.0"
48
34
  type: :runtime
49
- version_requirements: *id002
35
+ version_requirements: *id001
50
36
  - !ruby/object:Gem::Dependency
51
37
  name: hashie
52
38
  prerelease: false
53
- requirement: &id003 !ruby/object:Gem::Requirement
39
+ requirement: &id002 !ruby/object:Gem::Requirement
54
40
  none: false
55
41
  requirements:
56
42
  - - ">="
@@ -62,11 +48,11 @@ dependencies:
62
48
  - 0
63
49
  version: 0.2.0
64
50
  type: :runtime
65
- version_requirements: *id003
51
+ version_requirements: *id002
66
52
  - !ruby/object:Gem::Dependency
67
53
  name: haml
68
54
  prerelease: false
69
- requirement: &id004 !ruby/object:Gem::Requirement
55
+ requirement: &id003 !ruby/object:Gem::Requirement
70
56
  none: false
71
57
  requirements:
72
58
  - - ">="
@@ -78,11 +64,11 @@ dependencies:
78
64
  - 12
79
65
  version: 3.0.12
80
66
  type: :runtime
81
- version_requirements: *id004
67
+ version_requirements: *id003
82
68
  - !ruby/object:Gem::Dependency
83
69
  name: compass
84
70
  prerelease: false
85
- requirement: &id005 !ruby/object:Gem::Requirement
71
+ requirement: &id004 !ruby/object:Gem::Requirement
86
72
  none: false
87
73
  requirements:
88
74
  - - ">="
@@ -94,11 +80,11 @@ dependencies:
94
80
  - 2
95
81
  version: 0.10.2
96
82
  type: :runtime
97
- version_requirements: *id005
83
+ version_requirements: *id004
98
84
  - !ruby/object:Gem::Dependency
99
85
  name: compass-susy-plugin
100
86
  prerelease: false
101
- requirement: &id006 !ruby/object:Gem::Requirement
87
+ requirement: &id005 !ruby/object:Gem::Requirement
102
88
  none: false
103
89
  requirements:
104
90
  - - ">="
@@ -110,11 +96,11 @@ dependencies:
110
96
  - 0
111
97
  version: 0.7.0
112
98
  type: :runtime
113
- version_requirements: *id006
99
+ version_requirements: *id005
114
100
  - !ruby/object:Gem::Dependency
115
101
  name: sinatra-compass
116
102
  prerelease: false
117
- requirement: &id007 !ruby/object:Gem::Requirement
103
+ requirement: &id006 !ruby/object:Gem::Requirement
118
104
  none: false
119
105
  requirements:
120
106
  - - ">="
@@ -126,11 +112,11 @@ dependencies:
126
112
  - 0
127
113
  version: 0.5.0
128
114
  type: :runtime
129
- version_requirements: *id007
115
+ version_requirements: *id006
130
116
  - !ruby/object:Gem::Dependency
131
117
  name: sinatra-advanced-routes
132
118
  prerelease: false
133
- requirement: &id008 !ruby/object:Gem::Requirement
119
+ requirement: &id007 !ruby/object:Gem::Requirement
134
120
  none: false
135
121
  requirements:
136
122
  - - ">="
@@ -142,43 +128,11 @@ dependencies:
142
128
  - 1
143
129
  version: 0.5.1
144
130
  type: :runtime
145
- version_requirements: *id008
146
- - !ruby/object:Gem::Dependency
147
- name: sinatra-content-for
148
- prerelease: false
149
- requirement: &id009 !ruby/object:Gem::Requirement
150
- none: false
151
- requirements:
152
- - - ">="
153
- - !ruby/object:Gem::Version
154
- hash: 23
155
- segments:
156
- - 0
157
- - 2
158
- - 0
159
- version: 0.2.0
160
- type: :runtime
161
- version_requirements: *id009
162
- - !ruby/object:Gem::Dependency
163
- name: memcached
164
- prerelease: false
165
- requirement: &id010 !ruby/object:Gem::Requirement
166
- none: false
167
- requirements:
168
- - - ">="
169
- - !ruby/object:Gem::Version
170
- hash: 65
171
- segments:
172
- - 0
173
- - 19
174
- - 9
175
- version: 0.19.9
176
- type: :runtime
177
- version_requirements: *id010
131
+ version_requirements: *id007
178
132
  - !ruby/object:Gem::Dependency
179
133
  name: nokogiri
180
134
  prerelease: false
181
- requirement: &id011 !ruby/object:Gem::Requirement
135
+ requirement: &id008 !ruby/object:Gem::Requirement
182
136
  none: false
183
137
  requirements:
184
138
  - - ">="
@@ -190,11 +144,11 @@ dependencies:
190
144
  - 0
191
145
  version: 1.4.0
192
146
  type: :runtime
193
- version_requirements: *id011
147
+ version_requirements: *id008
194
148
  - !ruby/object:Gem::Dependency
195
149
  name: weary
196
150
  prerelease: false
197
- requirement: &id012 !ruby/object:Gem::Requirement
151
+ requirement: &id009 !ruby/object:Gem::Requirement
198
152
  none: false
199
153
  requirements:
200
154
  - - ">="
@@ -206,24 +160,24 @@ dependencies:
206
160
  - 2
207
161
  version: 0.7.2
208
162
  type: :runtime
209
- version_requirements: *id012
163
+ version_requirements: *id009
210
164
  - !ruby/object:Gem::Dependency
211
165
  name: sleepy
212
166
  prerelease: false
213
- requirement: &id013 !ruby/object:Gem::Requirement
167
+ requirement: &id010 !ruby/object:Gem::Requirement
214
168
  none: false
215
169
  requirements:
216
170
  - - ">="
217
171
  - !ruby/object:Gem::Version
218
- hash: 29
172
+ hash: 19
219
173
  segments:
220
174
  - 0
221
175
  - 1
222
- - 3
223
- version: 0.1.3
176
+ - 4
177
+ version: 0.1.4
224
178
  type: :runtime
225
- version_requirements: *id013
226
- description: Use Kits to create simple mashups.
179
+ version_requirements: *id010
180
+ description: Caboodle is a Rack and Sinatra-based framework for creating websites which combine information from various online services. There are Kits for many of the larger services, which provide a way to retrieve and display photos, videos, blog posts, status updates and so on. Caboodle normalises the display of all of these discrete Kits so that you can create a website which looks seamless but is made up of a variety of things from a variety of sources.
227
181
  email: stef@stef.io
228
182
  executables:
229
183
  - caboodle