geordi 0.4.3 → 0.4.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/bin/console-for CHANGED
@@ -1,25 +1,13 @@
1
1
  #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + "/../lib/geordi"
3
+ include Geordi
2
4
 
3
- def find_project_root
4
- current = Dir.pwd
5
- until (File.exists? 'Capfile')
6
- Dir.chdir '..'
7
- return nil if current == Dir.pwd
8
- current = Dir.pwd
9
- end
10
- current
11
- end
12
-
13
- begin
14
- stage = ARGV.shift
15
- root = find_project_root or raise 'Call me from inside a Rails project!'
5
+ catching_errors do
6
+ retrieve_data!
16
7
 
17
8
  if File.exists? "#{root}/script/console" # => Rails 2
18
- exec "shell-for #{stage} --no-bash script/console #{stage}"
9
+ system "shell-for #{env} --no-bash script/console #{env}"
19
10
  else
20
- exec "shell-for #{stage} --no-bash bundle exec rails console #{stage}"
11
+ system "shell-for #{env} --no-bash bundle exec rails console #{env}"
21
12
  end
22
- rescue Exception => e
23
- $stderr.puts e.message
24
- exit 1
25
- end
13
+ end
data/bin/cuc CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  # Print some whitespace
4
4
  4.times { puts }
5
+ puts "Running Cucumber tests..."
6
+ puts "========================="
5
7
 
6
8
  # Check if cucumber_spinner is available
7
9
  spinner_available = File.exists?('Gemfile') && File.open('Gemfile').read.scan(/cucumber_spinner/).any?
@@ -17,4 +19,4 @@ if use_parallel_tests
17
19
  exec *['b', 'rake', 'parallel:features', ARGV].flatten
18
20
  else
19
21
  exec *["b", "cucumber", format_args, ARGV].flatten
20
- end
22
+ end
data/bin/dump-for CHANGED
@@ -1,61 +1,19 @@
1
1
  #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + "/../lib/geordi"
3
+ include Geordi
2
4
 
3
- def unquote(line)
4
- if line
5
- line.match(/["'](.*)["']/)
6
- $1
7
- end
8
- end
9
-
10
- def find_project_root
11
- current = Dir.pwd
12
- until (File.exists? 'Capfile')
13
- Dir.chdir '..'
14
- return nil if current == Dir.pwd
15
- current = Dir.pwd
16
- end
17
- @project_root = current
18
- end
19
-
20
- begin
21
- stage = ARGV.shift
22
- dump_name = "dump_for_download.dump"
5
+ catching_errors do
6
+ retrieve_data!
23
7
 
24
- find_project_root or raise 'Call me from inside a Rails project!'
8
+ command = %(ssh #{user}@#{server} -t "cd #{path} && dumple #{env} --for_download")
9
+ success = system command
25
10
 
26
- data = if stage
27
- deploy_file = Dir['config/deploy/*.rb'].find do |file|
28
- file.match(/\/#{stage}.rb$/)
29
- end
30
- deploy_file or raise "Stage does not exist: #{stage}"
31
-
32
- File.open(deploy_file).readlines
11
+ if success
12
+ puts "Downloading dump_for_download..."
13
+ system "scp #{user}@#{server}:~/dumps/dump_for_download.dump #{root}/tmp/#{env}.dump"
14
+ puts
15
+ puts "Dumped the #{env.upcase} database to: #{File.basename root}/tmp/#{env}.dump"
33
16
  else
34
- []
35
- end + File.open("config/deploy.rb").readlines
36
-
37
- user = unquote data.find{ |line| line =~ /^set :user,/}
38
- server = unquote data.find{ |line| line =~ /^server / }
39
- deploy_to = unquote data.find{ |line| line =~ /^set :deploy_to,/}
40
- environment = unquote data.find{ |line| line =~ /^set :rails_env,/}
41
- (user and server and deploy_to and environment) or raise "Could not find required data (user, server, deploy target and environment).\nUsage: dump-for DEPLOYMENT_STAGE"
42
-
43
- path = deploy_to + "/current"
44
- if path.match /#\{.*\}/
45
- puts %(NOTE: "#{path}" is not a valid path.)
46
- puts %(NOTE: You will need to fetch the dump yourself.)
47
- raise ""
17
+ raise "An error occurred. Aborting..."
48
18
  end
49
-
50
- command = %(ssh #{user}@#{server} -t "cd #{path} && dumple #{environment} --for_download")
51
- system command
52
-
53
- puts "Downloading dump_for_download..."
54
- system "scp #{user}@#{server}:~/dumps/#{dump_name} #{@project_root}/tmp/#{environment}.dump"
55
- puts
56
- puts "Dumped the #{environment.upcase} database to PROJECT_ROOT/tmp/#{environment}.dump"
57
-
58
- rescue Exception => e
59
- $stderr.puts e.message
60
- exit 1
61
19
  end
data/bin/rs CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  # Print some whitespace
4
4
  4.times { puts }
5
+ puts "Running RSpec tests..."
6
+ puts "======================"
5
7
 
6
8
  # Check if we're looking at a Rails 2 / rspec 1 project
7
9
  rspec1 = File.exists?('script/spec')
@@ -25,4 +27,4 @@ if use_parallel_tests
25
27
  else
26
28
  # Run rspec behind bundler
27
29
  exec *["b", rspec_args, spinner_args, ARGV].flatten
28
- end
30
+ end
data/bin/shell-for CHANGED
@@ -1,63 +1,17 @@
1
1
  #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + "/../lib/geordi"
3
+ include Geordi
2
4
 
3
- def unquote(line)
4
- if line
5
- line.match(/["'](.*)["']/)
6
- $1
7
- end
8
- end
9
-
10
- def find_project_root
11
- current = Dir.pwd
12
- until (File.exists? 'Capfile')
13
- Dir.chdir '..'
14
- return nil if current == Dir.pwd
15
- current = Dir.pwd
16
- end
17
- @project_root = current
18
- end
19
-
20
- begin
21
- stage = ARGV.shift
22
- no_bash = ARGV.shift if ARGV.first == '--no-bash'
23
- remote_command = ARGV.join(' ').strip
5
+ catching_errors do
6
+ retrieve_data!
7
+ no_bash = ARGV.delete('--no-bash')
8
+ remote_command = ARGV.join(' ').strip
24
9
 
25
- find_project_root or raise 'Call me from inside a Rails project!'
26
-
27
- data = if stage
28
- deploy_file = Dir["#{@project_root}/config/deploy/*.rb"].find do |file|
29
- file.match(/\/#{stage}.rb$/)
30
- end
31
- deploy_file or raise "Stage does not exist: #{stage}"
32
-
33
- File.open(deploy_file).readlines
34
- else
35
- []
36
- end + File.open("#{@project_root}/config/deploy.rb").readlines
37
-
38
- user = unquote data.find{ |line| line =~ /^set :user, /}
39
- server = unquote data.find{ |line| line =~ /^server / }
40
- deploy_to = unquote data.find{ |line| line =~ /^set :deploy_to, /}
41
-
42
- (user and server and deploy_to) or raise "Could not find required data (user, server and deploy-target).\nUsage: shell-for DEPLOYMENT_STAGE"
43
-
44
- path = deploy_to + "/current"
45
10
  ssh = %(ssh #{user}@#{server})
46
11
 
47
- commands = []
48
- if path.match /#\{.*\}/
49
- puts %(NOTE: "#{path}" is not a valid path.)
50
- puts %(NOTE: Connecting to deploy user home.)
51
- sleep 2
52
- else
53
- commands << "cd #{path}"
54
- end
12
+ commands = [ "cd #{path}" ]
55
13
  commands << remote_command unless remote_command.empty?
56
14
  commands << "bash --login" unless no_bash
57
15
 
58
16
  exec ssh + %( -t "#{commands.join(' && ')}")
59
-
60
- rescue Exception => e
61
- $stderr.puts e.message
62
- exit 1
63
- end
17
+ end
@@ -1,3 +1,3 @@
1
1
  module Geordi
2
- VERSION = '0.4.3'
2
+ VERSION = '0.4.4'
3
3
  end
data/lib/geordi.rb ADDED
@@ -0,0 +1,62 @@
1
+ module Geordi
2
+
3
+ attr_accessor :stage, :user, :server, :path, :env, :root
4
+
5
+ def catching_errors(&block)
6
+ begin
7
+ yield
8
+ rescue Exception => e
9
+ $stderr.puts e.message
10
+ exit 1
11
+ end
12
+ end
13
+
14
+ def retrieve_data!
15
+ @stage = ARGV.shift
16
+ @root = find_project_root!
17
+
18
+ {}.tap do |data|
19
+ @lines = if stage
20
+ deploy_file = Dir['config/deploy/*.rb'].find do |file|
21
+ file.match(/\/#{stage}.rb$/)
22
+ end
23
+ deploy_file or raise "Stage does not exist: #{stage}"
24
+
25
+ File.open(deploy_file).readlines
26
+ else
27
+ []
28
+ end
29
+ @lines += File.open("config/deploy.rb").readlines
30
+
31
+ @user = retrieve! "user", /^set :user,/
32
+ @server = retrieve! "server", /^server /
33
+ @path = retrieve!("deploy_to", /^set :deploy_to,/) + '/current'
34
+ @env = retrieve! "environment", /^set :rails_env,/
35
+
36
+ # fix
37
+ %w[user server path env].each do |attr|
38
+ self.send(attr).gsub! /#\{site_id\}/, stage.sub(/_.*/, '')
39
+ end
40
+ end
41
+ end
42
+
43
+ def find_project_root!
44
+ current = Dir.pwd
45
+ until (File.exists? 'Capfile')
46
+ Dir.chdir '..'
47
+ raise 'Call me from inside a Rails project!' if current == Dir.pwd
48
+ current = Dir.pwd
49
+ end
50
+ current
51
+ end
52
+
53
+ def retrieve!(name, regex)
54
+ if line = @lines.find{ |line| line =~ regex }
55
+ line.match(/["'](.*)["']/)
56
+ $1
57
+ else
58
+ raise "Could not find :#{name} for stage '#{stage}'!\nAborting..."
59
+ end
60
+ end
61
+
62
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geordi
3
3
  version: !ruby/object:Gem::Version
4
- hash: 9
5
- prerelease: false
4
+ hash: 7
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 4
9
- - 3
10
- version: 0.4.3
9
+ - 4
10
+ version: 0.4.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Henning Koch
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-07-12 00:00:00 +02:00
18
+ date: 2011-07-22 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies: []
21
21
 
@@ -65,6 +65,7 @@ files:
65
65
  - bin/shell-for
66
66
  - bin/tests
67
67
  - geordi.gemspec
68
+ - lib/geordi.rb
68
69
  - lib/geordi/version.rb
69
70
  has_rdoc: true
70
71
  homepage: http://makandra.com
@@ -96,7 +97,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
96
97
  requirements: []
97
98
 
98
99
  rubyforge_project: geordi
99
- rubygems_version: 1.3.7
100
+ rubygems_version: 1.5.2
100
101
  signing_key:
101
102
  specification_version: 3
102
103
  summary: Collection of command line tools we use in our daily work with Ruby, Rails and Linux at makandra.