Class: Pave::Remote

Inherits:
Object
  • Object
show all
Includes:
Shell
Defined in:
lib/pave/remote.rb

Class Method Summary collapse

Methods included from Shell

#file_insert, included, #sh, #shell

Class Method Details

.deploy(remote = "live", branch = "master") ⇒ Object



20
21
22
# File 'lib/pave/remote.rb', line 20

def self.deploy(remote="live", branch="master")
  sh "git push #{remote} #{branch}"
end

.directory(remote = "live") ⇒ Object



38
39
40
# File 'lib/pave/remote.rb', line 38

def self.directory(remote="live")
  self.url(remote).split(":").last.gsub("/deploy.git", "")
end

.server(remote = "live") ⇒ Object



34
35
36
# File 'lib/pave/remote.rb', line 34

def self.server(remote="live")
  self.url(remote).split(":").first
end

.setupObject



5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/pave/remote.rb', line 5

def self.setup
  server = ask "Username and hostname of the remote server (e.g. [email protected]): "
  folder = ask "Name of the remote directory (e.g. ~/webapps/appname): "
  remote = ask "Desired git remote name (e.g. live): "
  script = File.join(File.expand_path("../..", File.dirname(__FILE__)), "resources/deploy.sh")

  puts "Piping shell script to #{server} for setup."
  sh "ssh #{server} 'cd #{folder}; bash -s' < #{script}"

  sh "git remote remove #{remote}"
  sh "git remote add #{remote} #{server}:#{folder}/deploy.git"

  puts "Finished! You may now run `pave deploy` to deploy your application."
end

.url(remote = "live") ⇒ Object



24
25
26
27
28
29
30
31
32
# File 'lib/pave/remote.rb', line 24

def self.url(remote="live")
  remotes = shell("git remote -v").output
  begin
    remotes.match(/#{remote}\s+(.*)\s+\(push\)/)[1]
  rescue NoMethodError
    puts "Could not find remote named #{remote}. Please run `pave deploy:setup` to create it."
    exit
  end
end