theme-juice 0.6.18 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +106 -75
  3. data/bin/tj +5 -5
  4. data/lib/theme-juice.rb +32 -16
  5. data/lib/theme-juice/cli.rb +191 -298
  6. data/lib/theme-juice/command.rb +14 -13
  7. data/lib/theme-juice/commands/create.rb +214 -9
  8. data/lib/theme-juice/commands/delete.rb +45 -10
  9. data/lib/theme-juice/commands/deploy.rb +20 -0
  10. data/lib/theme-juice/config.rb +43 -0
  11. data/lib/theme-juice/env.rb +25 -0
  12. data/lib/theme-juice/io.rb +323 -0
  13. data/lib/theme-juice/project.rb +35 -0
  14. data/lib/theme-juice/task.rb +42 -0
  15. data/lib/theme-juice/tasks/create_confirm.rb +33 -0
  16. data/lib/theme-juice/tasks/create_success.rb +42 -0
  17. data/lib/theme-juice/tasks/database.rb +50 -0
  18. data/lib/theme-juice/tasks/delete_confirm.rb +24 -0
  19. data/lib/theme-juice/tasks/delete_success.rb +31 -0
  20. data/lib/theme-juice/tasks/dns.rb +45 -0
  21. data/lib/theme-juice/tasks/dot_env.rb +53 -0
  22. data/lib/theme-juice/tasks/entry.rb +50 -0
  23. data/lib/theme-juice/tasks/hosts.rb +43 -0
  24. data/lib/theme-juice/tasks/import_database.rb +28 -0
  25. data/lib/theme-juice/tasks/landrush.rb +33 -0
  26. data/lib/theme-juice/tasks/list.rb +50 -0
  27. data/lib/theme-juice/tasks/location.rb +23 -0
  28. data/lib/theme-juice/tasks/nginx.rb +51 -0
  29. data/lib/theme-juice/tasks/repo.rb +49 -0
  30. data/lib/theme-juice/tasks/synced_folder.rb +30 -0
  31. data/lib/theme-juice/tasks/theme.rb +34 -0
  32. data/lib/theme-juice/tasks/vm.rb +30 -0
  33. data/lib/theme-juice/tasks/vm_customfile.rb +42 -0
  34. data/lib/theme-juice/tasks/vm_location.rb +32 -0
  35. data/lib/theme-juice/tasks/vm_plugins.rb +32 -0
  36. data/lib/theme-juice/tasks/vm_provision.rb +39 -0
  37. data/lib/theme-juice/tasks/vm_restart.rb +25 -0
  38. data/lib/theme-juice/tasks/wp_cli.rb +52 -0
  39. data/lib/theme-juice/util.rb +45 -0
  40. data/lib/theme-juice/version.rb +1 -1
  41. metadata +66 -34
  42. data/LICENSE +0 -339
  43. data/lib/theme-juice/commands/install.rb +0 -16
  44. data/lib/theme-juice/commands/list.rb +0 -16
  45. data/lib/theme-juice/commands/subcommand.rb +0 -16
  46. data/lib/theme-juice/environment.rb +0 -15
  47. data/lib/theme-juice/interaction.rb +0 -445
  48. data/lib/theme-juice/interactions/create.rb +0 -278
  49. data/lib/theme-juice/interactions/delete.rb +0 -48
  50. data/lib/theme-juice/interactions/teejay.rb +0 -12
  51. data/lib/theme-juice/service.rb +0 -224
  52. data/lib/theme-juice/services/config.rb +0 -44
  53. data/lib/theme-juice/services/create.rb +0 -376
  54. data/lib/theme-juice/services/delete.rb +0 -113
  55. data/lib/theme-juice/services/list.rb +0 -40
@@ -0,0 +1,28 @@
1
+ # encoding: UTF-8
2
+
3
+ module ThemeJuice
4
+ module Tasks
5
+ class ImportDatabase < Task
6
+
7
+ def initialize(opts = {})
8
+ super
9
+ end
10
+
11
+ def execute
12
+ import_db
13
+ end
14
+
15
+ private
16
+
17
+ def import_db
18
+ if @project.db_import
19
+ @io.log "Importing existing database"
20
+ @util.run_inside_vm [], :verbose => @env.verbose do |cmds|
21
+ cmds << "cd #{@project.vm_srv}"
22
+ cmds << "wp db import #{@project.db_import}"
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,33 @@
1
+ # encoding: UTF-8
2
+
3
+ module ThemeJuice
4
+ module Tasks
5
+ class Landrush < Entry
6
+
7
+ def initialize(opts = {})
8
+ super
9
+
10
+ @entry = {
11
+ :project => "landrush",
12
+ :file => "#{@env.vm_path}/Customfile",
13
+ :name => "landrush",
14
+ :id => "LR"
15
+ }
16
+ end
17
+
18
+ def execute
19
+ unless @env.no_landrush
20
+ create_entry_file
21
+ create_entry do
22
+ %Q{config.landrush.enabled = true
23
+ config.landrush.tld = 'dev'}
24
+ end
25
+ end
26
+ end
27
+
28
+ def unexecute
29
+ remove_entry
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,50 @@
1
+ # encoding: UTF-8
2
+
3
+ module ThemeJuice
4
+ module Tasks
5
+ class List < Task
6
+
7
+ def initialize(opts = {})
8
+ super
9
+
10
+ @project.vm_root = vm_root
11
+ @project.vm_location = vm_location
12
+ end
13
+
14
+ def list(prop)
15
+ @io.error "Cannot list '#{prop}'" unless self.respond_to? prop
16
+
17
+ if self.send(prop).empty?
18
+ @io.log "Nothing to list"
19
+ else
20
+ @io.list "Projects :", :green, self.send(prop)
21
+ end
22
+ end
23
+
24
+ def projects
25
+ res = []
26
+
27
+ Dir["#{@project.vm_root}/*"].each do |f|
28
+ if File.directory?(f) && f.include?(@env.vm_prefix)
29
+ res << File.basename(f).gsub(/(#{@env.vm_prefix})/, "")
30
+ end
31
+ end
32
+
33
+ res
34
+ end
35
+
36
+ def urls
37
+ res = []
38
+ ls = `vagrant landrush ls`
39
+
40
+ unless ls.nil?
41
+ ls.gsub(/\s+/m, " ").split(" ").each do |url|
42
+ res << url if /(\.dev)/ =~ url
43
+ end
44
+ end
45
+
46
+ res
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,23 @@
1
+ # encoding: UTF-8
2
+
3
+ module ThemeJuice
4
+ module Tasks
5
+ class Location < Task
6
+
7
+ def initialize(opts = {})
8
+ super
9
+ end
10
+
11
+ def execute
12
+ create_path
13
+ end
14
+
15
+ private
16
+
17
+ def create_path
18
+ @io.log "Creating project location"
19
+ @util.empty_directory @project.location, :verbose => @env.verbose
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,51 @@
1
+ # encoding: UTF-8
2
+
3
+ module ThemeJuice
4
+ module Tasks
5
+ class Nginx < Task
6
+
7
+ def initialize(opts = {})
8
+ super
9
+ end
10
+
11
+ def execute
12
+ create_nginx_file
13
+ end
14
+
15
+ def unexecute
16
+ remove_nginx_file
17
+ end
18
+
19
+ private
20
+
21
+ def nginx_file
22
+ "#{@project.location}/vvv-nginx.conf"
23
+ end
24
+
25
+ def nginx_is_setup?
26
+ File.exist? nginx_file
27
+ end
28
+
29
+ def create_nginx_file
30
+ unless nginx_is_setup?
31
+ @io.log "Creating nginx file"
32
+ @util.create_file nginx_file, :verbose => @env.verbose do
33
+ %Q{server \{
34
+ listen 80;
35
+ server_name .#{@project.url};
36
+ root {vvv_path_to_folder};
37
+ include /etc/nginx/nginx-wp-common.conf;
38
+ \}
39
+
40
+ }
41
+ end
42
+ end
43
+ end
44
+
45
+ def remove_nginx_file
46
+ @io.log "Removing nginx file"
47
+ @util.remove_file nginx_file, :verbose => @env.verbose
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,49 @@
1
+ # encoding: UTF-8
2
+
3
+ module ThemeJuice
4
+ module Tasks
5
+ class Repo < Task
6
+
7
+ def initialize(opts = {})
8
+ super
9
+ end
10
+
11
+ def execute
12
+ if @project.repository
13
+ create_repo
14
+ end
15
+ end
16
+
17
+ private
18
+
19
+ def git_dir
20
+ File.expand_path "#{@project.location}/.git"
21
+ end
22
+
23
+ def repo_is_setup?
24
+ File.exist? git_dir
25
+ end
26
+
27
+ def create_repo
28
+ @io.log "Creating Git repository"
29
+
30
+ remove_repo if repo_is_setup?
31
+
32
+ @util.inside @project.location do
33
+ @util.run [], :verbose => @env.verbose do |cmds|
34
+ cmds << "git init"
35
+ cmds << "git remote add origin #{@project.repository}"
36
+ end
37
+ end
38
+ end
39
+
40
+ def remove_repo
41
+ if @io.agree? "Do you want to overwrite the current repo in '#{@project.location}'?"
42
+ @util.remove_dir git_dir, :verbose => @env.verbose
43
+ else
44
+ @io.error "Run the command again without a repository, or remove the repository currently in '#{@project.location}'"
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,30 @@
1
+ # encoding: UTF-8
2
+
3
+ module ThemeJuice
4
+ module Tasks
5
+ class SyncedFolder < Entry
6
+
7
+ def initialize(opts = {})
8
+ super
9
+
10
+ @entry = {
11
+ :project => @project.name,
12
+ :file => "#{@env.vm_path}/Customfile",
13
+ :name => "synced folder",
14
+ :id => "SF"
15
+ }
16
+ end
17
+
18
+ def execute
19
+ create_entry_file
20
+ create_entry do
21
+ %Q{config.vm.synced_folder '#{@project.location}', '/srv/www/tj-#{@project.name}', mount_options: ['dmode=777','fmode=777']}
22
+ end
23
+ end
24
+
25
+ def unexecute
26
+ remove_entry
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,34 @@
1
+ # encoding: UTF-8
2
+
3
+ module ThemeJuice
4
+ module Tasks
5
+ class Theme < Task
6
+
7
+ def initialize(opts = {})
8
+ super
9
+ end
10
+
11
+ def execute
12
+ if @project.theme
13
+ clone_theme
14
+ install_theme
15
+ end
16
+ end
17
+
18
+ private
19
+
20
+ def clone_theme
21
+ @io.log "Cloning theme"
22
+ @util.inside @project.location do
23
+ @util.run "git clone --depth 1 #{@project.theme} .",
24
+ :verbose => @env.verbose
25
+ end
26
+ end
27
+
28
+ def install_theme
29
+ @io.log "Running theme installation"
30
+ @config.install
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,30 @@
1
+ # encoding: UTF-8
2
+
3
+ module ThemeJuice
4
+ module Tasks
5
+ class VM < Task
6
+
7
+ def initialize(opts = {})
8
+ super
9
+ end
10
+
11
+ def execute
12
+ install_vvv
13
+ end
14
+
15
+ private
16
+
17
+ def vvv_is_installed?
18
+ File.exist? @env.vm_path
19
+ end
20
+
21
+ def install_vvv
22
+ unless vvv_is_installed?
23
+ @io.log "Installing VVV"
24
+ @util.run "git clone https://github.com/Varying-Vagrant-Vagrants/VVV.git #{@env.vm_path} --depth 1",
25
+ :verbose => @env.verbose
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,42 @@
1
+ # encoding: UTF-8
2
+
3
+ module ThemeJuice
4
+ module Tasks
5
+ class VMCustomfile < Task
6
+
7
+ def initialize(opts = {})
8
+ super
9
+ end
10
+
11
+ def execute
12
+ create_custom_file
13
+ end
14
+
15
+ def unexecute
16
+ remove_custom_file
17
+ end
18
+
19
+ private
20
+
21
+ def custom_file
22
+ File.expand_path "#{@env.vm_path}/Customfile"
23
+ end
24
+
25
+ def custom_file_is_setup?
26
+ File.exist? custom_file
27
+ end
28
+
29
+ def create_custom_file
30
+ unless custom_file_is_setup?
31
+ @io.log "Creating customfile"
32
+ @util.create_file custom_file, nil, :verbose => @env.verbose
33
+ end
34
+ end
35
+
36
+ def remove_custom_file
37
+ @io.log "Removing customfile"
38
+ @util.remove_file custom_file, :verbose => @env.verbose
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,32 @@
1
+ # encoding: UTF-8
2
+
3
+ module ThemeJuice
4
+ module Tasks
5
+ class VMLocation < Task
6
+
7
+ def initialize(opts = {})
8
+ super
9
+ end
10
+
11
+ def execute
12
+ create_path
13
+ end
14
+
15
+ def unexecute
16
+ remove_path
17
+ end
18
+
19
+ private
20
+
21
+ def create_path
22
+ @io.log "Creating project location in VM"
23
+ @util.empty_directory @project.vm_location, :verbose => @env.verbose
24
+ end
25
+
26
+ def remove_path
27
+ @io.log "Removing project location in VM"
28
+ @util.remove_dir @project.vm_location, :verbose => @env.verbose
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,32 @@
1
+ # encoding: UTF-8
2
+
3
+ module ThemeJuice
4
+ module Tasks
5
+ class VMPlugins < Task
6
+
7
+ def initialize(opts = {})
8
+ super
9
+ end
10
+
11
+ def execute
12
+ install_vagrant_plugin "vagrant-triggers", "0.5.0"
13
+ install_vagrant_plugin "vagrant-hostsupdater", "0.0.11"
14
+ install_vagrant_plugin "landrush", "0.18.0" unless @env.no_landrush
15
+ end
16
+
17
+ private
18
+
19
+ def vagrant_plugin_is_installed?(plugin)
20
+ `vagrant plugin list`.include? plugin
21
+ end
22
+
23
+ def install_vagrant_plugin(plugin, version)
24
+ unless vagrant_plugin_is_installed? plugin
25
+ @io.log "Installing #{plugin}"
26
+ @util.run "vagrant plugin install #{plugin} --plugin-version #{version}",
27
+ :verbose => @env.verbose
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end