codebase 4.0.8 → 4.0.9
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/codebase.rb +2 -2
- data/lib/codebase/command.rb +5 -0
- data/lib/codebase/recipes.rb +74 -24
- metadata +2 -2
data/lib/codebase.rb
CHANGED
@@ -14,7 +14,7 @@ module Codebase
|
|
14
14
|
class NotConfiguredError < StandardError; end
|
15
15
|
class MustBeInRepositoryError < StandardError; end
|
16
16
|
|
17
|
-
VERSION = "4.0.
|
17
|
+
VERSION = "4.0.9"
|
18
18
|
|
19
19
|
def run(command, args = [])
|
20
20
|
load_commands
|
@@ -100,7 +100,7 @@ Codebase.command "help" do |command|
|
|
100
100
|
puts " #{key.ljust(15)} #{command[:description].first}"
|
101
101
|
end
|
102
102
|
puts
|
103
|
-
puts "For more information see http://docs.
|
103
|
+
puts "For more information see http://docs.atechmedia.com/codebase/gem"
|
104
104
|
puts "See 'cb help [command]' for usage information."
|
105
105
|
else
|
106
106
|
if c = Codebase.commands[command]
|
data/lib/codebase/command.rb
CHANGED
@@ -115,6 +115,11 @@ module Codebase
|
|
115
115
|
case res
|
116
116
|
when Net::HTTPSuccess
|
117
117
|
return res.body
|
118
|
+
when Net::HTTPFound
|
119
|
+
if res.body =~ /http:\/\/api3.codebasehq.com/ && url.include?('https://')
|
120
|
+
puts "Falling back to non SSL"
|
121
|
+
api_request(url.gsub("https://", "http://"), username, password)
|
122
|
+
end
|
118
123
|
when Net::HTTPServiceUnavailable
|
119
124
|
puts "The API is currently unavailable. Please check your codebase account has been enabled for API access."
|
120
125
|
Process.exit(1)
|
data/lib/codebase/recipes.rb
CHANGED
@@ -1,4 +1,66 @@
|
|
1
1
|
Capistrano::Configuration.instance(:must_exist).load do
|
2
|
+
|
3
|
+
def git_config_variable(name)
|
4
|
+
if name.is_a?(Symbol)
|
5
|
+
r = `git config codebase.#{name.to_s}`.chomp
|
6
|
+
else
|
7
|
+
r = `git config #{name.to_s}`.chomp
|
8
|
+
end
|
9
|
+
r.empty? ? nil : r
|
10
|
+
end
|
11
|
+
|
12
|
+
def new_username?
|
13
|
+
git_config_variable(:username).match(/(.+)\/(.+)/)
|
14
|
+
end
|
15
|
+
|
16
|
+
def domain
|
17
|
+
@domain ||= new_username? ? "#{new_username?[1]}.codebasehq.com" : git_config_variable(:domain)
|
18
|
+
end
|
19
|
+
|
20
|
+
def username
|
21
|
+
@username ||= new_username? ? new_username?[2] : git_config_variable(:username)
|
22
|
+
end
|
23
|
+
|
24
|
+
def api_username
|
25
|
+
@api_username = "#{domain.split('.').first}/#{username}"
|
26
|
+
end
|
27
|
+
|
28
|
+
def api_key
|
29
|
+
@api_key ||= git_config_variable(:apikey)
|
30
|
+
end
|
31
|
+
|
32
|
+
def api_request(url, data)
|
33
|
+
require 'net/http'
|
34
|
+
require 'net/https'
|
35
|
+
require 'uri'
|
36
|
+
|
37
|
+
puts " - URL..........: #{url}"
|
38
|
+
|
39
|
+
uri = URI.parse(url)
|
40
|
+
|
41
|
+
req = Net::HTTP::Post.new(uri.path)
|
42
|
+
req.basic_auth(api_username, api_key)
|
43
|
+
req.add_field('Content-type', 'application/xml')
|
44
|
+
req.add_field('Accept', 'application/xml')
|
45
|
+
|
46
|
+
res = Net::HTTP.new(uri.host, uri.port)
|
47
|
+
if url.include?('https://')
|
48
|
+
res.use_ssl = true
|
49
|
+
res.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
50
|
+
end
|
51
|
+
res = res.request(req, data)
|
52
|
+
|
53
|
+
case res
|
54
|
+
when Net::HTTPCreated then puts " * \e[32mAdded deployment to Codebase\e[0m"
|
55
|
+
when Net::HTTPFound
|
56
|
+
if res.body =~ /http:\/\/api3.codebasehq.com/ && url.include?('https://')
|
57
|
+
puts " - Status.......: Falling back to non SSL"
|
58
|
+
api_request(url.gsub("https://", "http://"), data)
|
59
|
+
end
|
60
|
+
else
|
61
|
+
puts " * \e[31mSorry, your deployment was not logged in Codebase - please check your config above.\e[0m"
|
62
|
+
end
|
63
|
+
end
|
2
64
|
|
3
65
|
after "deploy:symlink", 'codebase:deploy'
|
4
66
|
|
@@ -19,10 +81,8 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
19
81
|
|
20
82
|
desc 'Log a deployment in Codebase'
|
21
83
|
task :deploy do
|
22
|
-
|
23
|
-
api_key
|
24
|
-
|
25
|
-
if username == '' || api_key == ''
|
84
|
+
|
85
|
+
if api_username == '' || api_key == ''
|
26
86
|
puts " * Codebase is not configured on your computer. Run 'codebase setup' to auto configure it."
|
27
87
|
puts " * Deployments will not be tracked."
|
28
88
|
next
|
@@ -36,9 +96,14 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
36
96
|
project = m[3]
|
37
97
|
repository = m[4]
|
38
98
|
|
99
|
+
unless respond_to?(:branch)
|
100
|
+
branch = 'HEAD'
|
101
|
+
end
|
102
|
+
|
103
|
+
|
39
104
|
puts " * \e[44;33mAdding Deployment to your CodebaseHQ account\e[0m"
|
40
105
|
puts " - Account......: #{url}"
|
41
|
-
puts " - Username.....: #{
|
106
|
+
puts " - Username.....: #{api_username}"
|
42
107
|
puts " - API Key......: #{api_key[0,10]}..."
|
43
108
|
|
44
109
|
puts " - Project......: #{project}"
|
@@ -71,28 +136,13 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
71
136
|
xml << "<environment>#{environment_to_send}</environment>"
|
72
137
|
xml << "<branch>#{branch}</branch>"
|
73
138
|
xml << "</deployment>"
|
74
|
-
|
75
|
-
require 'net/http'
|
76
|
-
require 'uri'
|
77
|
-
|
139
|
+
|
78
140
|
# URL should be in this format to be compatible with the new API
|
79
141
|
# http://api3.codebasehq.com/PROJECTNAME/REPO/deployments
|
142
|
+
|
143
|
+
real_url = "https://api3.codebasehq.com/#{project}/#{repository}/deployments"
|
144
|
+
api_request(real_url, xml.join)
|
80
145
|
|
81
|
-
real_url = "http://api3.codebasehq.com/#{project}/#{repository}/deployments"
|
82
|
-
puts " - URL..........: #{real_url}"
|
83
|
-
|
84
|
-
url = URI.parse(real_url)
|
85
|
-
|
86
|
-
req = Net::HTTP::Post.new(url.path)
|
87
|
-
req.basic_auth(username, api_key)
|
88
|
-
req.add_field('Content-type', 'application/xml')
|
89
|
-
req.add_field('Accept', 'application/xml')
|
90
|
-
res = Net::HTTP.new(url.host, url.port).start { |http| http.request(req, xml.join) }
|
91
|
-
case res
|
92
|
-
when Net::HTTPCreated then puts " * \e[32mAdded deployment to Codebase\e[0m"
|
93
|
-
else
|
94
|
-
puts " * \e[31mSorry, your deployment was not logged in Codebase - please check your config above.\e[0m"
|
95
|
-
end
|
96
146
|
end
|
97
147
|
end
|
98
148
|
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: codebase
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 4.0.
|
5
|
+
version: 4.0.9
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Adam Cooke
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-05-
|
13
|
+
date: 2011-05-23 00:00:00 +01:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|