stackfu 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -4,7 +4,7 @@ require 'rake/testtask'
4
4
 
5
5
  require 'echoe'
6
6
 
7
- Echoe.new('stackfu', '0.1.0') do |p|
7
+ Echoe.new('stackfu', '0.1.1') do |p|
8
8
  p.description = "StackFu Backend"
9
9
  p.url = "http://stackfu.com/cli"
10
10
  p.author = "Felipe Coury"
data/lib/stackfu.rb CHANGED
@@ -49,8 +49,8 @@ require "#{dir}/commands/deploy_command"
49
49
  require "#{dir}/commands/dump_command"
50
50
 
51
51
  module StackFu
52
- VERSION = '0.0.1'
53
- API = "http://api.stackfu.com"
52
+ VERSION = '0.1.1'
53
+ API = "http://stackfu.com"
54
54
  CONFIG_FILE = "#{ENV['HOME']}/.stackfu"
55
55
 
56
56
  include StackFu::OperatingSystems
@@ -86,3 +86,16 @@ class String
86
86
  end
87
87
  end
88
88
 
89
+ # class ActiveResource::Connection
90
+ # # Creates new Net::HTTP instance for communication with
91
+ # # remote service and resources.
92
+ # def http
93
+ # http = Net::HTTP.new(@site.host, @site.port)
94
+ # http.use_ssl = @site.is_a?(URI::HTTPS)
95
+ # http.verify_mode = OpenSSL::SSL::VERIFY_NONE if http.use_ssl
96
+ # http.read_timeout = @timeout if @timeout
97
+ # #Here's the addition that allows you to see the output
98
+ # http.set_debug_output $stderr
99
+ # return http
100
+ # end
101
+ # end
@@ -1,16 +1,21 @@
1
1
  module StackFu
2
2
  module ApiHooks
3
- class Server < ActiveResource::Base; end
4
- class User < ActiveResource::Base; end
5
- class Stack < ActiveResource::Base; end
6
- class Plugin < ActiveResource::Base; end
7
- class Provider < ActiveResource::Base; end
8
- class Deployment < ActiveResource::Base; end
3
+ class Resource < ActiveResource::Base
4
+ self.format = :json
5
+ end
6
+
7
+ class Server < Resource; end
8
+ class User < Resource; end
9
+ class Stack < Resource; end
10
+ class Plugin < Resource; end
11
+ class Provider < Resource; end
12
+ class Deployment < Resource; end
9
13
 
10
14
  def initialize_api(config)
11
15
  [Server, User, Stack, Plugin, Provider, Deployment].each do |model_class|
12
- model_class.format = :json
13
- model_class.site = StackFu::API.gsub(/api/, "#{config[:login]}:#{$config[:token]}@api") + "/"
16
+ model_class.user = $config[:token]
17
+ model_class.password = "X"
18
+ model_class.site = StackFu::API
14
19
  end
15
20
  end
16
21
  end
@@ -3,11 +3,11 @@ module StackFu
3
3
  include ApiHooks
4
4
 
5
5
  error_messages :missing_subcommand => "You have to tell what you want to dump: a stack or a plugin"
6
- subcommand :stack, :required_parameters => [:stack_name]
6
+ subcommand :plugin, :required_parameters => [:plugin_name]
7
7
 
8
- def stack(parameters, options)
8
+ def plugin(parameters, options)
9
9
  stack_name = parameters[0]
10
- stack = spinner { Stack.find(:all, :params => { :stack => { :name => stack_name } }).first }
10
+ stack = spinner { Plugin.find(stack_name) }
11
11
 
12
12
  if stack
13
13
  if directory?(stack_name)
@@ -21,33 +21,49 @@ module StackFu
21
21
  create_file "#{stack_name}/stack.yml", {
22
22
  "type" => "stack",
23
23
  "name" => stack.name,
24
- "description" => stack.description,
25
- "operating_system" => stack.operating_system.to_s
24
+ "description" => stack.respond_to?(:description) ? stack.description : ""
26
25
  }.to_yaml
27
26
 
28
27
  create_folder "#{stack_name}/config"
29
28
 
30
- controls = map stack.controls, "controls" do |c|
31
- { "name" => c.name,
32
- "label" => c.label,
33
- "type" => c._type }
29
+ if stack.respond_to?(:controls)
30
+ controls = map stack.controls, "controls" do |c|
31
+ { "name" => c.name,
32
+ "label" => c.label,
33
+ "type" => c._type }
34
+ end
35
+ else
36
+ controls = []
34
37
  end
35
38
 
36
- requirements = map stack.requirements, "requirements" do |req|
37
- { "data" => req.data,
38
- "error" => req.error,
39
- "type" => req._type }
39
+ if stack.respond_to?(:requirements)
40
+ requirements = map stack.requirements, "requirements" do |req|
41
+ { "data" => req.data,
42
+ "error" => req.error,
43
+ "type" => req._type }
44
+ end
45
+ else
46
+ requirements = []
40
47
  end
41
48
 
42
- executions = map stack.executions, "scripts" do |exec|
43
- { "description" => exec.description,
44
- "file" => exec.description.downcase.gsub(" ", "_") }
49
+ if stack.respond_to?(:executions)
50
+ executions = map stack.executions, "scripts" do |exec|
51
+ { "description" => exec.description,
52
+ "file" => exec.description.downcase.gsub(" ", "_") }
53
+ end
54
+ else
55
+ executions = []
45
56
  end
46
57
 
47
- validations = map stack.validations, "validations" do |val|
48
- { "data" => val.data,
49
- "error" => val.error,
50
- "type" => val._type }
58
+
59
+ if stack.respond_to?(:validations)
60
+ validations = map stack.validations, "validations" do |val|
61
+ { "data" => val.data,
62
+ "error" => val.error,
63
+ "type" => val._type }
64
+ end
65
+ else
66
+ validations = []
51
67
  end
52
68
 
53
69
  create_file "#{stack_name}/config/01-controls.yml", controls
@@ -57,7 +73,7 @@ module StackFu
57
73
 
58
74
  create_folder "#{stack_name}/script"
59
75
  stack.executions.each do |script|
60
- create_file "#{stack_name}/script/#{script.description.downcase.gsub(" ", "_")}.sh.erb", script.data
76
+ create_file "#{stack_name}/script/#{script.description.downcase.gsub(" ", "_")}.sh.erb", script.script
61
77
  end
62
78
 
63
79
  puts "Stack #{stack_name} dumped successfully..."
@@ -3,16 +3,17 @@ module StackFu
3
3
  include ApiHooks
4
4
 
5
5
  def default(parameters, options)
6
- user = User.find(:all).first
6
+ # user = User.find(:all).first
7
7
  items = spinner {
8
8
  [
9
- Stack.find(:all, :conditions => { "user.id" => user.id }),
10
- Plugin.find(:all, :conditions => { "user.id" => user.id })
9
+ # Stack.find(:all, :conditions => { "user.id" => user.id }),
10
+ Plugin.find(:all)
11
11
  ].flatten
12
12
  }
13
13
 
14
14
  params = {
15
- :class => [Stack, Plugin],
15
+ # :class => [Stack, Plugin],
16
+ :class => [Plugin],
16
17
  :collection => items,
17
18
  :display => [:name, :type, :description],
18
19
  :main_column => :name,
@@ -20,7 +21,11 @@ module StackFu
20
21
  :ansi => options[:plain].nil?
21
22
  }
22
23
 
23
- puts table(params) { |item| [item.name, item.class.name.demodulize.downcase, item.description.try(:truncate_words)] }
24
+ puts table(params) { |item|
25
+ description = item.respond_to?(:description) ? item.description : ""
26
+
27
+ [item.name, "Plugin", description.truncate_words(10)]
28
+ }
24
29
  end
25
30
  end
26
31
  end
@@ -52,8 +52,11 @@ module StackFu
52
52
  end
53
53
 
54
54
  item_class = ApiHooks.const_get("#{what.to_s.classify}")
55
+ item_class.format = :json
55
56
 
56
- stacks = item_class.find(:all, :params => { what => { :name => stack_spec["name"] } })
57
+ stacks = item_class.find(:all) || []
58
+ stacks = stacks.select { |s| s.name == stack_spec["name"] }
59
+
57
60
  if stacks.any?
58
61
  unless options[:update]
59
62
  if agree("You already have a #{what} named #{stack_spec["name"]}. Do you want to update it?")
@@ -68,7 +71,7 @@ module StackFu
68
71
 
69
72
  stack = stacks.first
70
73
  begin
71
- item_class.delete(stack.id)
74
+ item_class.delete(stack.name)
72
75
  rescue ActiveResource::ResourceNotFound
73
76
  puts "There was a problem updating your #{what}. Please report this problem at support@stackfu.com or try again in a few minutes."
74
77
  return
@@ -107,7 +107,16 @@ module StackFu
107
107
 
108
108
  display.each_with_index do |column, i|
109
109
  max_value_size = collection.map do |item|
110
- value = block_given? ? yield(item)[i] : item.send(column)
110
+ if block_given?
111
+ value = yield(item)[i]
112
+ else
113
+ if item.respond_to?(column)
114
+ value = item.send(column)
115
+ else
116
+ value = ""
117
+ end
118
+ end
119
+
111
120
  value.to_s.size
112
121
  end.max
113
122
 
@@ -150,7 +159,11 @@ module StackFu
150
159
  value = values[idx]
151
160
  idx += 1
152
161
  else
153
- value = item.send(col[:name])
162
+ if item.respond_to?(col[:name])
163
+ value = item.send(col[:name])
164
+ else
165
+ value = ""
166
+ end
154
167
  end
155
168
 
156
169
  just_method = value.is_a?(Numeric) ? :rjust : :ljust
data/stackfu.gemspec CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{stackfu}
5
- s.version = "0.1.0"
5
+ s.version = "0.1.1"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Felipe Coury"]
9
- s.date = %q{2010-08-27}
9
+ s.date = %q{2010-08-29}
10
10
  s.default_executable = %q{stackfu}
11
11
  s.description = %q{StackFu Backend}
12
12
  s.email = %q{felipe@stackfu.com}
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stackfu
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 0
10
- version: 0.1.0
9
+ - 1
10
+ version: 0.1.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Felipe Coury
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-08-27 00:00:00 -03:00
18
+ date: 2010-08-29 00:00:00 -03:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency