dumbwaiter 0.1.0 → 0.2.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ee61708863374cdb339fae14fb5f750f52b1a13f
4
- data.tar.gz: 239abdfa0c7d8a4dc81a3575806bba5dc758e4bb
3
+ metadata.gz: 2b69c9d7f2e7d25bd322771b407638c70b5dccef
4
+ data.tar.gz: 3a5d98c4fe4ddd7e8e3f59b8be15a8e8b94c948f
5
5
  SHA512:
6
- metadata.gz: 5b04376369f0d489bd1fdedcdfe5fb970782017cd4867eae437017112c53d7bc64d4df9bec2621178875e63be4e0bd706a2e723861f91f31c1164c47bcfbb6b4
7
- data.tar.gz: 28eaa1dd456eb828cb7eb3988bfd077b149d901ef4a5a5f2aefec11543ce48893c8a7ca41d88d6c2af59c55afdc821e546049a534b058f0c9f12161defdf6989
6
+ metadata.gz: cf1781076eba107b32d03a11e278e03fb429c413ff639999f818ed99d2bee98c51d84f11871d12fd6bee13e403d3b45b50d95f53cd088e8a31ab4a8f1a4289de
7
+ data.tar.gz: 4cf716ba54f720ac5670c4eec82cdcbbd97a3cba26d8db3eacb208be52a9a45477cad4a3f54970f8895a7e69c70f514f715bd599c2346e6450eb61e4fa2acfca
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- Dumbwaiter
1
+ Dumbwaiter [![Build Status](https://travis-ci.org/minifast/dumbwaiter.png)](https://travis-ci.org/minifast/dumbwaiter) [![Code Climate](https://codeclimate.com/github/minifast/dumbwaiter.png)](https://codeclimate.com/github/minifast/dumbwaiter)
2
2
  ==========
3
3
 
4
4
  Dumbwaiter hoists your Rails application up to OpsWorks and ratchets deployment
@@ -28,9 +28,9 @@ Deploy the "cinnamon" branch of the "syrup" application to the "Pancake" stack:
28
28
 
29
29
  `dumbwaiter deploy Pancake syrup cinnamon`
30
30
 
31
- Roll back the "Snowman" stack:
31
+ Roll back the "Snowman" stack's "dandruff" application:
32
32
 
33
- `dumbwaiter rollback Snowman`
33
+ `dumbwaiter rollback Snowman dandruff`
34
34
 
35
35
  List the deployments on the "Maniacal Checklist" stack:
36
36
 
@@ -0,0 +1,54 @@
1
+ require "dumbwaiter/deployment_custom_json"
2
+
3
+ class Dumbwaiter::App
4
+ class NotFound < Exception; end
5
+
6
+ attr_reader :stack, :opsworks_app, :opsworks
7
+
8
+ def self.all(stack, opsworks = Aws::OpsWorks.new(region: "us-east-1"))
9
+ opsworks.describe_apps(stack_id: stack.id).apps.map { |app| new(stack, app, opsworks) }
10
+ end
11
+
12
+ def self.find(stack, app_name, opsworks = Aws::OpsWorks.new(region: "us-east-1"))
13
+ app = all(stack, opsworks).detect { |app| app.name == app_name}
14
+ raise NotFound.new("No app found with name #{app_name}") if app.nil?
15
+ app
16
+ end
17
+
18
+ def initialize(stack, opsworks_app, opsworks)
19
+ @stack = stack
20
+ @opsworks_app = opsworks_app
21
+ @opsworks = opsworks
22
+ end
23
+
24
+ def name
25
+ opsworks_app.name
26
+ end
27
+
28
+ def id
29
+ opsworks_app.app_id
30
+ end
31
+
32
+ def deploy(revision = nil)
33
+ deployment = as_deployment("deploy", args: {migrate: ["true"]})
34
+ unless revision.nil?
35
+ custom_json = Dumbwaiter::DeploymentCustomJson.create(name, revision)
36
+ deployment[:custom_json] = custom_json.to_json
37
+ end
38
+ opsworks.create_deployment(deployment)
39
+ end
40
+
41
+ def rollback
42
+ opsworks.create_deployment(as_deployment("rollback"))
43
+ end
44
+
45
+ protected
46
+
47
+ def as_deployment(command_name, args = {})
48
+ {
49
+ app_id: id,
50
+ stack_id: stack.id,
51
+ command: {name: command_name}.merge(args),
52
+ }
53
+ end
54
+ end
@@ -1,91 +1,41 @@
1
1
  require "thor"
2
2
  require "aws-sdk-core"
3
3
  require "dumbwaiter/deployment_custom_json"
4
+ require "dumbwaiter/stack"
4
5
 
5
6
  module Dumbwaiter
6
7
  class Cli < Thor
7
- class MissingStack < Error; end
8
- class MissingApp < Error; end
9
-
10
8
  desc "deploy STACK_NAME APP_NAME GIT_REF", "Deploy an application revision"
11
9
  def deploy(stack_name, app_name, revision)
12
- stack_id = stack_id_for_name(stack_name)
13
- custom_json = DeploymentCustomJson.create(app_name, revision).to_json
14
- opsworks.create_deployment(
15
- stack_id: stack_id,
16
- app_id: app_id_for_name(stack_id, app_name),
17
- command: {name: "deploy", args: {migrate: ["true"]}},
18
- custom_json: custom_json
19
- )
10
+ stack = Stack.find(stack_name)
11
+ app = App.find(stack, app_name)
12
+ app.deploy(revision)
13
+ rescue Dumbwaiter::Stack::NotFound, Dumbwaiter::App::NotFound => e
14
+ raise Thor::Error.new(e.message)
20
15
  end
21
16
 
22
17
  desc "rollback STACK_NAME APP_NAME", "Roll back an application"
23
18
  def rollback(stack_name, app_name)
24
- stack_id = stack_id_for_name(stack_name)
25
- opsworks.create_deployment(
26
- stack_id: stack_id,
27
- app_id: app_id_for_name(stack_id, app_name),
28
- command: {name: "rollback"}
29
- )
19
+ stack = Stack.find(stack_name)
20
+ app = App.find(stack, app_name)
21
+ app.rollback
22
+ rescue Dumbwaiter::Stack::NotFound, Dumbwaiter::App::NotFound => e
23
+ raise Thor::Error.new(e.message)
30
24
  end
31
25
 
32
26
  desc "list STACK_NAME", "List all the deployments for a stack"
33
27
  def list(stack_name)
34
- stack_id = stack_id_for_name(stack_name)
35
- app_deployments = deployments(stack_id).select do |deployment|
36
- %w(rollback deploy).include?(deployment.command.name)
37
- end
38
-
39
- app_deployments.each do |deployment|
40
- custom_json = DeploymentCustomJson.from_json(deployment.custom_json || "{}")
41
- Kernel.puts "#{deployment.created_at} - #{deployment.command.name} - #{deployment.status} - #{custom_json.git_ref}"
42
- end
43
- end
44
-
45
- no_tasks do
46
- def app_id_for_name(stack_id, app_name)
47
- app_id = app_ids_by_name(stack_id)[app_name]
48
- raise MissingApp.new("No app named #{app_name}") unless app_id
49
- app_id
50
- end
51
-
52
- def stack_id_for_name(stack_name)
53
- stack_id = stack_ids_by_name[stack_name]
54
- raise MissingStack.new("No stack named #{stack_name}") unless stack_id
55
- stack_id
56
- end
57
-
58
- def stack_ids_by_name
59
- @stack_ids_by_name ||= stacks.reduce({}) do |result, stack|
60
- result[stack.name] = stack.stack_id
61
- result
62
- end
63
- end
64
-
65
- def app_ids_by_name(stack_id)
66
- apps(stack_id).reduce({}) do |result, app|
67
- result[app.name] = app.app_id
68
- result
69
- end
70
- end
71
-
72
- def stacks
73
- @stacks ||= opsworks.describe_stacks.stacks
74
- end
75
-
76
- def apps(stack_id)
77
- @apps ||= {}
78
- @apps[stack_id] ||= opsworks.describe_apps(stack_id: stack_id).apps
79
- end
28
+ stack = Stack.find(stack_name)
80
29
 
81
- def deployments(stack_id)
82
- @deployments ||= {}
83
- @deployments[stack_id] ||= opsworks.describe_deployments(stack_id: stack_id).deployments
30
+ deployments = stack.deployments.select do |deployment|
31
+ %w(rollback deploy).include?(deployment.command_name)
84
32
  end
85
33
 
86
- def opsworks
87
- @opsworks ||= Aws::OpsWorks.new(region: "us-east-1")
34
+ deployments.each do |deployment|
35
+ Kernel.puts(deployment.to_log)
88
36
  end
37
+ rescue Dumbwaiter::Stack::NotFound => e
38
+ raise Thor::Error.new(e.message)
89
39
  end
90
40
  end
91
41
  end
@@ -0,0 +1,43 @@
1
+ require "dumbwaiter/deployment_custom_json"
2
+
3
+ class Dumbwaiter::Deployment
4
+ attr_reader :opsworks_deployment
5
+
6
+ def self.all(stack_id, opsworks = Aws::OpsWorks.new(region: "us-east-1"))
7
+ opsworks.describe_deployments(stack_id: stack_id).deployments.map { |d| new(d) }
8
+ end
9
+
10
+ def initialize(opsworks_deployment)
11
+ @opsworks_deployment = opsworks_deployment
12
+ end
13
+
14
+ def created_at
15
+ opsworks_deployment.created_at
16
+ end
17
+
18
+ def command_name
19
+ opsworks_deployment.command.name
20
+ end
21
+
22
+ def status
23
+ opsworks_deployment.status
24
+ end
25
+
26
+ def git_ref
27
+ deployment_custom_json.git_ref
28
+ end
29
+
30
+ def to_log
31
+ "#{created_at} - #{command_name} - #{status} - #{git_ref}"
32
+ end
33
+
34
+ protected
35
+
36
+ def deployment_custom_json
37
+ Dumbwaiter::DeploymentCustomJson.from_json(custom_json)
38
+ end
39
+
40
+ def custom_json
41
+ opsworks_deployment.custom_json || "{}"
42
+ end
43
+ end
@@ -0,0 +1,39 @@
1
+ require "dumbwaiter/app"
2
+ require "dumbwaiter/deployment"
3
+
4
+ class Dumbwaiter::Stack
5
+ attr_reader :opsworks, :opsworks_stack
6
+
7
+ class NotFound < Exception; end
8
+
9
+ def self.all(opsworks = Aws::OpsWorks.new(region: "us-east-1"))
10
+ opsworks.describe_stacks.stacks.map { |stack| new(stack, opsworks) }
11
+ end
12
+
13
+ def self.find(stack_name, opsworks = Aws::OpsWorks.new(region: "us-east-1"))
14
+ stack = all(opsworks).detect { |stack| stack.name == stack_name}
15
+ raise NotFound.new("No stack found with name #{stack_name}") if stack.nil?
16
+ stack
17
+ end
18
+
19
+ def initialize(opsworks_stack, opsworks = Aws::OpsWorks.new(region: "us-east-1"))
20
+ @opsworks = opsworks
21
+ @opsworks_stack = opsworks_stack
22
+ end
23
+
24
+ def name
25
+ opsworks_stack.name
26
+ end
27
+
28
+ def id
29
+ opsworks_stack.stack_id
30
+ end
31
+
32
+ def apps
33
+ @apps ||= Dumbwaiter::App.all(id, opsworks)
34
+ end
35
+
36
+ def deployments
37
+ @deployments ||= Dumbwaiter::Deployment.all(id, opsworks)
38
+ end
39
+ end
@@ -1,3 +1,3 @@
1
1
  module Dumbwaiter
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -0,0 +1,71 @@
1
+ require "spec_helper"
2
+
3
+ describe Dumbwaiter::App do
4
+ let(:fake_stack) { double(:stack, id: "pancakes") }
5
+ let(:fake_app) { double(:app, name: "goose", app_id: "amazing") }
6
+ let(:fake_apps) { double(:apps, apps: [fake_app]) }
7
+ let(:fake_opsworks) { double(:opsworks, describe_apps: fake_apps) }
8
+
9
+ subject(:app) { Dumbwaiter::App.new(fake_stack, fake_app, fake_opsworks) }
10
+
11
+ its(:stack) { should == fake_stack }
12
+ its(:opsworks_app) { should == fake_app }
13
+ its(:id) { should == "amazing" }
14
+ its(:name) { should == "goose" }
15
+
16
+ describe "#deploy" do
17
+ context "when no revision is specified" do
18
+ it "creates a deployment" do
19
+ fake_opsworks.should_receive(:create_deployment) do |params|
20
+ params[:stack_id].should == "pancakes"
21
+ params[:app_id].should == "amazing"
22
+ params[:command].should == {name: "deploy", args: {migrate: ["true"]}}
23
+ end
24
+ app.deploy
25
+ end
26
+ end
27
+
28
+ context "when a revision is specified" do
29
+ it "creates a deployment with a revision" do
30
+ fake_opsworks.should_receive(:create_deployment) do |params|
31
+ params[:custom_json].should == {deploy: {"goose" => {scm: {revision: "golden"}}}}.to_json
32
+ end
33
+ app.deploy("golden")
34
+ end
35
+ end
36
+ end
37
+
38
+ describe "#rollback" do
39
+ it "creates a rollback" do
40
+ fake_opsworks.should_receive(:create_deployment) do |params|
41
+ params[:stack_id].should == "pancakes"
42
+ params[:app_id].should == "amazing"
43
+ params[:command].should == {name: "rollback"}
44
+ end
45
+ app.rollback
46
+ end
47
+ end
48
+
49
+ describe ".all" do
50
+ it "fetches all the apps" do
51
+ fake_opsworks.should_receive(:describe_apps).with(stack_id: "pancakes")
52
+ Dumbwaiter::App.all(fake_stack, fake_opsworks).should have(1).app
53
+ end
54
+ end
55
+
56
+ describe ".find" do
57
+ context "when the app exists" do
58
+ it "finds the app by name" do
59
+ Dumbwaiter::App.find(fake_stack, "goose", fake_opsworks).id.should == "amazing"
60
+ end
61
+ end
62
+
63
+ context "when the app does not exist" do
64
+ it "blows up" do
65
+ expect {
66
+ Dumbwaiter::App.find(fake_stack, "teeth", fake_opsworks)
67
+ }.to raise_error(Dumbwaiter::App::NotFound)
68
+ end
69
+ end
70
+ end
71
+ end
@@ -1,85 +1,101 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Dumbwaiter::Cli do
4
- let(:fake_stack) { double(:stack, name: "ducks", stack_id: "cool") }
5
- let(:fake_stacks) { double(:stacks, stacks: [fake_stack]) }
6
-
7
- let(:fake_app) { double(:app, name: "reifel", app_id: "wat") }
8
- let(:fake_apps) { double(:apps, apps: [fake_app]) }
9
-
10
- let(:custom_json) { {deploy: {"reifel" => {scm: {revision: "corn"}}}} }
4
+ let(:fake_stack) { double(:stack, name: "ducks", id: "wat") }
5
+ let(:fake_app) { double(:app, name: "reifel") }
11
6
 
12
7
  subject(:cli) { Dumbwaiter::Cli.new }
13
8
 
14
- before { cli.opsworks.stub(describe_stacks: fake_stacks, describe_apps: fake_apps) }
9
+ before do
10
+ Dumbwaiter::Stack.stub(all: [fake_stack])
11
+ Dumbwaiter::App.stub(all: [fake_app])
12
+ end
15
13
 
16
14
  describe "#deploy" do
17
15
  context "when the stack exists" do
18
- it "deploys the stack with the resolved id" do
19
- cli.opsworks.should_receive(:create_deployment) do |params|
20
- params[:stack_id].should == "cool"
21
- params[:command].should == {name: "deploy", args: {migrate: ["true"]}}
22
- params[:custom_json].should == custom_json.to_json
16
+ context "when the app exists" do
17
+ it "deploys the stack with the resolved id" do
18
+ fake_app.should_receive(:deploy).with("corn")
19
+ cli.deploy("ducks", "reifel", "corn")
20
+ end
21
+ end
22
+
23
+ context "when the app does not exist" do
24
+ it "blows up" do
25
+ expect { cli.deploy("ducks", "squirrel", "corn") }.to raise_error(Thor::Error)
23
26
  end
24
- cli.deploy("ducks", "reifel", "corn")
25
27
  end
26
28
  end
27
29
 
28
30
  context "when the stack does not exist" do
29
- let(:fake_stack) { double(:stack, name: "tacos", stack_id: "great") }
30
-
31
31
  it "blows up" do
32
- expect {
33
- cli.deploy("ducks", "reifel", "corn")
34
- }.to raise_error(Dumbwaiter::Cli::MissingStack)
32
+ expect { cli.deploy("toques", "reifel", "corn") }.to raise_error(Thor::Error)
35
33
  end
36
34
  end
37
35
  end
38
36
 
39
37
  describe "#rollback" do
40
38
  context "when the stack exists" do
41
- it "rolls back the stack with the resolved id" do
42
- cli.opsworks.should_receive(:create_deployment) do |params|
43
- params[:stack_id].should == "cool"
44
- params[:app_id].should == "wat"
45
- params[:command].should == {name: "rollback"}
39
+ context "when the app exists" do
40
+ it "deploys the stack with the resolved id" do
41
+ fake_app.should_receive(:rollback)
42
+ cli.rollback("ducks", "reifel")
43
+ end
44
+ end
45
+
46
+ context "when the app does not exist" do
47
+ it "blows up" do
48
+ expect { cli.rollback("ducks", "montreal") }.to raise_error(Thor::Error)
46
49
  end
47
- cli.rollback("ducks", "reifel")
48
50
  end
49
51
  end
50
52
 
51
53
  context "when the stack does not exist" do
52
- let(:fake_stack) { double(:stack, name: "tacos", stack_id: "great") }
53
-
54
54
  it "blows up" do
55
55
  expect {
56
- cli.rollback("ducks", "reifel")
57
- }.to raise_error(Dumbwaiter::Cli::MissingStack)
56
+ cli.rollback("maple syrup", "reifel")
57
+ }.to raise_error(Thor::Error)
58
58
  end
59
59
  end
60
60
  end
61
61
 
62
62
  describe "#list" do
63
- let(:fake_command) { double(:command, name: "deploy", args: "not again!")}
64
- let(:fake_deployment) { double(:deployment, stack_id: "cool", created_at: "meat", status: "meh", command: fake_command, custom_json: custom_json.to_json) }
65
- let(:fake_deployments) { double(:deployments, deployments: [fake_deployment]) }
63
+ context "when the stack exists" do
64
+ before { fake_stack.stub(deployments: [fake_deployment]) }
66
65
 
67
- before { cli.opsworks.stub(describe_deployments: fake_deployments) }
66
+ context "when the deployment is a rollback" do
67
+ let(:fake_deployment) { double(:deployment, command_name: "rollback", to_log: "oops!") }
68
68
 
69
- context "when the stack exists" do
70
- it "lists the deployments" do
71
- Kernel.stub(:puts) { |string| string.should =~ /meat.+meh.+corn/ }
72
- cli.list("ducks")
69
+ it "lists the deployment" do
70
+ Kernel.should_receive(:puts).with("oops!")
71
+ cli.list("ducks")
72
+ end
73
+ end
74
+
75
+ context "when the deployment is a deploy" do
76
+ let(:fake_deployment) { double(:deployment, command_name: "deploy", to_log: "whee!") }
77
+
78
+ it "lists the deployment" do
79
+ Kernel.should_receive(:puts).with("whee!")
80
+ cli.list("ducks")
81
+ end
82
+ end
83
+
84
+ context "when the deployment is something else" do
85
+ let(:fake_deployment) { double(:deployment, command_name: "gargle", to_log: "brblrgl") }
86
+
87
+ it "does not print anything" do
88
+ Kernel.should_not_receive(:puts)
89
+ cli.list("ducks")
90
+ end
73
91
  end
74
92
  end
75
93
 
76
94
  context "when the stack does not exist" do
77
- let(:fake_stack) { double(:stack, name: "tacos", stack_id: "great") }
78
-
79
95
  it "blows up" do
80
96
  expect {
81
- cli.list("ducks")
82
- }.to raise_error(Dumbwaiter::Cli::MissingStack)
97
+ cli.list("wat")
98
+ }.to raise_error(Thor::Error)
83
99
  end
84
100
  end
85
101
  end
@@ -0,0 +1,45 @@
1
+ require "spec_helper"
2
+
3
+ describe Dumbwaiter::Deployment do
4
+ let(:fake_command) { double(:command, name: "deplode") }
5
+ let(:custom_json) { JSON.dump(deploy: {"hockey" => {scm: {revision: "eh-buddy"}}}) }
6
+ let(:fake_deployment) do
7
+ double(:deployment,
8
+ created_at: "yo",
9
+ command: fake_command,
10
+ status: "badical",
11
+ custom_json: custom_json
12
+ )
13
+ end
14
+ let(:fake_deployments) { double(:deployments, deployments: [fake_deployment]) }
15
+ let(:fake_opsworks) { double(:opsworks, describe_deployments: fake_deployments) }
16
+
17
+ subject(:deployment) { Dumbwaiter::Deployment.new(fake_deployment) }
18
+
19
+ its(:opsworks_deployment) { should == fake_deployment }
20
+ its(:created_at) { should == "yo" }
21
+ its(:command_name) { should == "deplode" }
22
+ its(:status) { should == "badical" }
23
+ its(:git_ref) { should == "eh-buddy" }
24
+ its(:to_log) { should == "yo - deplode - badical - eh-buddy" }
25
+
26
+ context "when custom_json is nil" do
27
+ let(:fake_deployment) do
28
+ double(:deployment,
29
+ created_at: "yo",
30
+ command: fake_command,
31
+ status: "badical",
32
+ custom_json: nil
33
+ )
34
+ end
35
+
36
+ its(:git_ref) { should == "HEAD" }
37
+ end
38
+
39
+ describe ".all" do
40
+ it "fetches all the deployments" do
41
+ fake_opsworks.should_receive(:describe_deployments).with(stack_id: "pancakes")
42
+ Dumbwaiter::Deployment.all("pancakes", fake_opsworks).should have(1).app
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,45 @@
1
+ require "spec_helper"
2
+
3
+ describe Dumbwaiter::Stack do
4
+ let(:fake_stack) { double(:stack, name: "ducks", stack_id: "cool") }
5
+ let(:fake_stacks) { double(:stacks, stacks: [fake_stack]) }
6
+ let(:fake_opsworks) { double(:opsworks, describe_stacks: fake_stacks) }
7
+ let(:fake_app) { double(:app) }
8
+ let(:fake_deployment) { double(:deployment) }
9
+
10
+ subject(:stack) { Dumbwaiter::Stack.new(fake_stack) }
11
+
12
+ before do
13
+ Dumbwaiter::App.stub(all: [fake_app])
14
+ Dumbwaiter::Deployment.stub(all: [fake_deployment])
15
+ end
16
+
17
+ its(:opsworks_stack) { should == fake_stack }
18
+ its(:id) { should == "cool" }
19
+ its(:name) { should == "ducks" }
20
+
21
+ its(:apps) { should == [fake_app] }
22
+ its(:deployments) { should == [fake_deployment] }
23
+
24
+ describe ".all" do
25
+ it "fetches all the stacks" do
26
+ Dumbwaiter::Stack.all(fake_opsworks).should have(1).stack
27
+ end
28
+ end
29
+
30
+ describe ".find" do
31
+ context "when the stack exists" do
32
+ it "finds the stack by name" do
33
+ Dumbwaiter::Stack.find("ducks", fake_opsworks).id.should == "cool"
34
+ end
35
+ end
36
+
37
+ context "when the stack does not exist" do
38
+ it "blows up" do
39
+ expect {
40
+ Dumbwaiter::Stack.find("teeth", fake_opsworks)
41
+ }.to raise_error(Dumbwaiter::Stack::NotFound)
42
+ end
43
+ end
44
+ end
45
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dumbwaiter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Doc Ritezel
@@ -114,12 +114,18 @@ files:
114
114
  - bin/dumbwaiter
115
115
  - dumbwaiter.gemspec
116
116
  - lib/dumbwaiter.rb
117
+ - lib/dumbwaiter/app.rb
117
118
  - lib/dumbwaiter/cli.rb
119
+ - lib/dumbwaiter/deployment.rb
118
120
  - lib/dumbwaiter/deployment_custom_json.rb
121
+ - lib/dumbwaiter/stack.rb
119
122
  - lib/dumbwaiter/version.rb
120
123
  - script/ci.sh
124
+ - spec/lib/dumbwaiter/app_spec.rb
121
125
  - spec/lib/dumbwaiter/cli_spec.rb
122
126
  - spec/lib/dumbwaiter/deployment_custom_json_spec.rb
127
+ - spec/lib/dumbwaiter/deployment_spec.rb
128
+ - spec/lib/dumbwaiter/stack_spec.rb
123
129
  - spec/spec_helper.rb
124
130
  homepage: https://github.com/minifast/dumbwaiter
125
131
  licenses:
@@ -146,6 +152,9 @@ signing_key:
146
152
  specification_version: 4
147
153
  summary: Monitor, deploy and maintain your Opsworks application stacks
148
154
  test_files:
155
+ - spec/lib/dumbwaiter/app_spec.rb
149
156
  - spec/lib/dumbwaiter/cli_spec.rb
150
157
  - spec/lib/dumbwaiter/deployment_custom_json_spec.rb
158
+ - spec/lib/dumbwaiter/deployment_spec.rb
159
+ - spec/lib/dumbwaiter/stack_spec.rb
151
160
  - spec/spec_helper.rb