Class: WPMake::Bootstrap

Inherits:
Object
  • Object
show all
Includes:
TextHelpers
Defined in:
lib/wpmake/bootstrap.rb

Constant Summary

Constants included from TextHelpers

TextHelpers::MYSQL_INSTALL_MSG, TextHelpers::MYSQL_UPGRADE_MSG, TextHelpers::PAGODA_INSTALL_MSG, TextHelpers::PHP_INSTALL_MSG, TextHelpers::PHP_UPGRADE_MSG, TextHelpers::RUBY_INSTALL_MSG, TextHelpers::WGET_INSTALL_MSG

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeBootstrap

Returns a new instance of Bootstrap.



13
14
15
16
17
# File 'lib/wpmake/bootstrap.rb', line 13

def initialize
  @site_title = ARGV[0]
  @banner = "Usage: wpmake [site name]"
  @remote_provider ||= "pagoda"
end

Instance Attribute Details

Returns the value of attribute banner.



10
11
12
# File 'lib/wpmake/bootstrap.rb', line 10

def banner
  @banner
end

#remote_providerObject (readonly)

Returns the value of attribute remote_provider.



11
12
13
# File 'lib/wpmake/bootstrap.rb', line 11

def remote_provider
  @remote_provider
end

#site_titleObject (readonly)

Returns the value of attribute site_title.



9
10
11
# File 'lib/wpmake/bootstrap.rb', line 9

def site_title
  @site_title
end

Instance Method Details

#check_dependency_presenceObject



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/wpmake/bootstrap.rb', line 34

def check_dependency_presence
  begin
    check_ruby = `ruby -v`
    check_mysql = `mysql -V`
    check_php =  `php -v`
    check_wget = `wget -V`
    check_pagoda = `pagoda --version`
  rescue Errno::ENOENT
    missing_dependency = "#{$!}".split(/-/)[1]
    exit_msg = "#{missing_dependency} not installed!"

    if missing_dependency.match(/ruby/)
      exit_msg = exit_msg + WPMake::TextHelpers::RUBY_INSTALL_MSG
    elsif missing_dependency.match(/mysql/)
      exit_msg = exit_msg + WPMake::TextHelpers::MYSQL_INSTALL_MSG
    elsif missing_dependency.match(/php/)
      exit_msg = exit_msg + WPMake::TextHelpers::PHP_INSTALL_MSG
    elsif missing_dependency.match(/wget/)
      exit_msg = exit_msg + WPMake::TextHelpers::WGET_INSTALL_MSG
    elsif missing_dependency.match(/pagoda/)
      exit_msg = exit_msg + WPMake::TextHelpers::PAGODA_INSTALL_MSG
    end

    abort(exit_msg)
  end
end

#check_dependency_versionsObject



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/wpmake/bootstrap.rb', line 61

def check_dependency_versions
  puts "Checking dependency versions..."
  ruby_version = `ruby -v`.split(/ /)[1]
  mysql_version = `mysql -V`.split(/ /)[5].gsub(/,/, "")
  php_version = `php -v`.split(/ /)[1]
  php_major_version = php_version.split(/\./)[0..1].join("").to_i
  mysql_major_version =  mysql_version.split(/\./)[0].to_i

  puts "Ruby version: #{ruby_version}... ok!"
  if mysql_major_version >= 5
    puts "Mysql version: #{mysql_version}... ok!"
  else
    abort(WPMake::TextHelpers::MYSQL_UPGRADE_MSG)
  end
  if php_major_version > 43
    puts "PHP version: #{php_version}... ok!"
  else
    abort(WPMake::TextHelpers::PHP_UPGRADE_MSG)
  end
end

#directory_setupObject



82
83
84
85
86
87
88
89
90
91
# File 'lib/wpmake/bootstrap.rb', line 82

def directory_setup
  pwd = `pwd`.strip + "/" + @site_title
  wp_latest_url = "http://wordpress.org/latest.zip"

  FileUtils.mkdir(pwd)
  `wget -P #{@site_title} #{wp_latest_url}`
  `unzip #{@site_title}/latest.zip -d #{@site_title}`
  FileUtils.mv(Dir.glob("#{@site_title}/wordpress/*"), "#{@site_title}")
  FileUtils.rm_rf("#{@site_title}/wordpress")
end

#provider_setupObject



93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/wpmake/bootstrap.rb', line 93

def provider_setup
  if @remote_provider == "pagoda"
    working_dir = `pwd`.strip + "/#{@site_title}"
    pagoda_dir = "#{working_dir}/pagoda"

    puts "Copying config files..."
    `cp #{File.expand_path("../../../pagodafiles/Boxfile", __FILE__)} #{@site_title}`
    FileUtils.mkdir(pagoda_dir)
    `cp #{File.expand_path("../../../pagodafiles/wp-config.php", __FILE__)} #{@site_title}/pagoda`

    puts "Initializing git repo..."
    Dir.chdir(working_dir)
    `git init`
    `git add .`
    `git commit -am "Initial commit"`

    puts "Creating empty repository at pagoda box..."
    `pagoda create dba-#{@site_title}`

    puts "Pushing to pagoda box..."
    `git push pagoda master`
  else
    # do stuff for other providers
  end
end

#require_site_nameObject



28
29
30
31
32
# File 'lib/wpmake/bootstrap.rb', line 28

def require_site_name
  if @site_title.nil?
    abort(@banner)
  end
end

#routineObject



19
20
21
22
23
24
25
26
# File 'lib/wpmake/bootstrap.rb', line 19

def routine
  require_site_name
  check_dependency_presence
  check_dependency_versions

  directory_setup
  provider_setup
end