cavalerie_web 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +15 -0
  3. data/.rspec +2 -0
  4. data/.ruby-version +1 -0
  5. data/.travis.yml +3 -0
  6. data/CODE_OF_CONDUCT.md +13 -0
  7. data/Gemfile +4 -0
  8. data/Guardfile +77 -0
  9. data/LICENSE.txt +21 -0
  10. data/README.md +36 -0
  11. data/Rakefile +2 -0
  12. data/bin/cavalerie +5 -0
  13. data/cavalerie_web.gemspec +39 -0
  14. data/lib/cavalerie_web/checks/file_folder_check.rb +23 -0
  15. data/lib/cavalerie_web/checks/vagrant_check.rb +24 -0
  16. data/lib/cavalerie_web/cli/command.rb +37 -0
  17. data/lib/cavalerie_web/cli/subcommands/new.rb +13 -0
  18. data/lib/cavalerie_web/cli/subcommands/server.rb +23 -0
  19. data/lib/cavalerie_web/configs/VirtualHost.sample +8 -0
  20. data/lib/cavalerie_web/configs/apache_container_ip +1 -0
  21. data/lib/cavalerie_web/configs/config.rb +55 -0
  22. data/lib/cavalerie_web/configs/docker_configs.json +22 -0
  23. data/lib/cavalerie_web/configs/local-config.sample.php +15 -0
  24. data/lib/cavalerie_web/configs/mysql_container_ip +1 -0
  25. data/lib/cavalerie_web/configs/setup_status.default.json +13 -0
  26. data/lib/cavalerie_web/configs/setup_status.json +13 -0
  27. data/lib/cavalerie_web/errors/container_not_running_error.rb +2 -0
  28. data/lib/cavalerie_web/errors/logs_folder_not_found_error.rb +2 -0
  29. data/lib/cavalerie_web/errors/max_retries_reach_error.rb +2 -0
  30. data/lib/cavalerie_web/errors/required_folder_unavailable_error.rb +2 -0
  31. data/lib/cavalerie_web/errors/required_plugin_missing_error.rb +2 -0
  32. data/lib/cavalerie_web/errors/unable_to_access_hosts_file_on_windows_os_error.rb +2 -0
  33. data/lib/cavalerie_web/errors/unknown_docker_container_status_error.rb +2 -0
  34. data/lib/cavalerie_web/errors/vagrant_not_installed_error.rb +2 -0
  35. data/lib/cavalerie_web/errors/vagrant_vm_already_running_error.rb +2 -0
  36. data/lib/cavalerie_web/errors/vagrant_vm_not_running_error.rb +2 -0
  37. data/lib/cavalerie_web/errors/virtual_host_file_not_found_error.rb +2 -0
  38. data/lib/cavalerie_web/helpers/os_helper.rb +9 -0
  39. data/lib/cavalerie_web/helpers/vagrant_helper.rb +73 -0
  40. data/lib/cavalerie_web/managers/database_manager.rb +10 -0
  41. data/lib/cavalerie_web/managers/file_folder_manager.rb +99 -0
  42. data/lib/cavalerie_web/managers/sequence_manager.rb +97 -0
  43. data/lib/cavalerie_web/managers/site_manager.rb +37 -0
  44. data/lib/cavalerie_web/managers/vagrant_manager.rb +66 -0
  45. data/lib/cavalerie_web/sequences/base_sequence.rb +9 -0
  46. data/lib/cavalerie_web/sequences/cavalerie_destroy_sequence.rb +12 -0
  47. data/lib/cavalerie_web/sequences/cavalerie_init_sequence.rb +71 -0
  48. data/lib/cavalerie_web/sequences/cavalerie_refresh_sequence.rb +21 -0
  49. data/lib/cavalerie_web/sequences/cavalerie_status_sequence.rb +107 -0
  50. data/lib/cavalerie_web/sequences/cavalerie_up_sequence.rb +24 -0
  51. data/lib/cavalerie_web/sequences/ensure_setup_is_correct_sequence.rb +77 -0
  52. data/lib/cavalerie_web/ui/banner.rb +16 -0
  53. data/lib/cavalerie_web/ui/message.rb +23 -0
  54. data/lib/cavalerie_web.rb +37 -0
  55. data/lib/vagrant/DockerHost.Vagrantfile +31 -0
  56. data/lib/vagrant/Vagrantfile +74 -0
  57. data/lib/vagrant/scripts/new_website.rb +54 -0
  58. metadata +283 -0
@@ -0,0 +1,37 @@
1
+ module CavalerieWeb
2
+
3
+ require "thor"
4
+ require "colorize"
5
+ require "cavalerie_web/sequences/base_sequence"
6
+
7
+ cavalerie_web_module_requires = ["configs", "errors", "helpers", "checks", "managers", "sequences", "ui"]
8
+
9
+ cavalerie_web_module_requires.each do |folder|
10
+ Dir[File.dirname(__FILE__) + "/cavalerie_web/#{folder}/*.rb"].each { |file| require file }
11
+ end
12
+
13
+ # CLI
14
+ module CLI
15
+ module Subcommand
16
+ require "cavalerie_web/cli/subcommands/server"
17
+ end
18
+ require "cavalerie_web/cli/command"
19
+ end
20
+
21
+ # Initialization
22
+ def self.initialize_global_variables
23
+ $sites_folder_path = ENV[Config.get_environment_variables[:sites][:name]]
24
+ $shared_folder_path = ENV[Config.get_environment_variables[:shared][:name]]
25
+ $mysql_folder_path = ENV[Config.get_environment_variables[:mysql][:name]]
26
+ $export_folder_path = ENV[Config.get_environment_variables[:export][:name]]
27
+ $credentials_folder_path = $shared_folder_path + "/_credentials"
28
+ $samples_folder_path = $shared_folder_path + "/_samples"
29
+ $db_dumps_folder_path = $shared_folder_path + "/_db_dumps"
30
+ $gem_path = Gem::Specification.find_by_name("cavalerie_web").gem_dir
31
+ $configs_path = $gem_path + "/lib/cavalerie_web/configs"
32
+ end
33
+
34
+ initialize_global_variables
35
+ Dir.chdir $gem_path
36
+
37
+ end
@@ -0,0 +1,31 @@
1
+ # -*- mode: ruby -*-
2
+ # vi: set ft=ruby :
3
+
4
+ Vagrant.configure("2") do |config|
5
+
6
+ config.vm.provision "docker"
7
+
8
+ # The following line terminates all ssh connections. Therefore
9
+ # Vagrant will be forced to reconnect.
10
+ # That's a workaround to have the docker command in the PATH
11
+ config.vm.provision "shell", inline:
12
+ "ps aux | grep 'sshd:' | awk '{print $2}' | xargs kill"
13
+
14
+ config.vm.box = "ubuntu/trusty64"
15
+ config.vm.define "dockerhost"
16
+
17
+ config.vm.network :forwarded_port, guest: 80, host: 8080
18
+ config.vm.network :forwarded_port, guest: 8081, host: 8081
19
+
20
+ # Mount shared folders
21
+ config.vm.synced_folder ENV["CAVALERIE_SITES_PATH"], "/cavalerie/sites"
22
+ config.vm.synced_folder ENV["CAVALERIE_SHARED_PATH"], "/cavalerie/shared"
23
+ config.vm.synced_folder ENV["CAVALERIE_MYSQL_PATH"], "/cavalerie/mysql_datadir", mount_options: ['dmode=777,fmode=666']
24
+ config.vm.synced_folder "../cavalerie_web/configs", "/cavalerie/configs"
25
+
26
+ config.vm.provider :virtualbox do |vb|
27
+ vb.name = "Vagrant-Dockerhost"
28
+ vb.memory = 1024 # => Required by MySQL Server
29
+ end
30
+
31
+ end
@@ -0,0 +1,74 @@
1
+ # -*- mode: ruby -*-
2
+ # vi: set ft=ruby :
3
+
4
+ # ---------------------------------------------
5
+ #
6
+ # Get Docker's config
7
+ #
8
+
9
+ docker_configs_file = File.read "../cavalerie_web/configs/docker_configs.json"
10
+ docker_configs = JSON.parse docker_configs_file
11
+
12
+ mysql_container_name = docker_configs["containers_names"][0]
13
+
14
+ mysql_root_password = docker_configs["#{mysql_container_name}_root_password"]
15
+ mysql_user = docker_configs["#{mysql_container_name}_user"]
16
+ mysql_password = docker_configs["#{mysql_container_name}_password"]
17
+
18
+ apache_container_name = docker_configs["containers_names"][1]
19
+
20
+ phpmyadmin_container_name = docker_configs["containers_names"][2]
21
+
22
+ #
23
+ # ---------------------------------------------
24
+
25
+ ENV['VAGRANT_DEFAULT_PROVIDER'] = 'docker'
26
+ DOCKER_HOST_NAME = "dockerhost"
27
+ DOCKER_HOST_VAGRANTFILE = "DockerHost.Vagrantfile"
28
+
29
+ Vagrant.configure("2") do |config|
30
+
31
+ config.vm.define "#{mysql_container_name}" do |v|
32
+ v.vm.provider "docker" do |d|
33
+ d.image = "mysql"
34
+ d.name = "#{mysql_container_name}"
35
+ d.env = {
36
+ MYSQL_ROOT_PASSWORD: "#{mysql_root_password}",
37
+ MYSQL_USER: "#{mysql_user}",
38
+ MYSQL_PASSWORD: "#{mysql_password}",
39
+ MYSQL_DATABASE: "dev"
40
+ }
41
+ d.volumes = ["/cavalerie/mysql_datadir:/var/lib/mysql"]
42
+ d.cmd = ["/entrypoint.sh", "mysqld"]
43
+ d.remains_running = true
44
+ d.vagrant_machine = "#{DOCKER_HOST_NAME}"
45
+ d.vagrant_vagrantfile = "#{DOCKER_HOST_VAGRANTFILE}"
46
+ end
47
+ end
48
+
49
+ config.vm.define "#{apache_container_name}" do |v|
50
+ v.vm.provider "docker" do |d|
51
+ d.image = "lacavalerie/apache-server"
52
+ d.ports = ["80:80"]
53
+ d.name = "#{apache_container_name}"
54
+ d.link("#{mysql_container_name}:db")
55
+ d.volumes = ["/cavalerie/sites:/cavalerie/sites", "/cavalerie/shared:/cavalerie/shared", "/cavalerie/configs:/cavalerie/configs"]
56
+ d.remains_running = true
57
+ d.vagrant_machine = "#{DOCKER_HOST_NAME}"
58
+ d.vagrant_vagrantfile = "#{DOCKER_HOST_VAGRANTFILE}"
59
+ end
60
+ end
61
+
62
+ config.vm.define "#{phpmyadmin_container_name}" do |v|
63
+ v.vm.provider "docker" do |d|
64
+ d.image = "odaniait/phpmyadmin-docker"
65
+ d.ports = ["8081:80"]
66
+ d.name = "#{phpmyadmin_container_name}"
67
+ d.link("#{mysql_container_name}:mysql")
68
+ d.remains_running = true
69
+ d.vagrant_machine = "#{DOCKER_HOST_NAME}"
70
+ d.vagrant_vagrantfile = "#{DOCKER_HOST_VAGRANTFILE}"
71
+ end
72
+ end
73
+
74
+ end
@@ -0,0 +1,54 @@
1
+ #!/home/vagrant/.rvm/rubies/ruby-2.2.0/bin/ruby
2
+ #
3
+ # Create a new website
4
+
5
+ # TODO
6
+ # exec "docker run -it --privileged -v #{sites_path}/#{site_name_url_safe}:/app -v #{shared_path}/#{site_name_url_safe}/shared:/app/shared --name new_website --rm cavalerie/new_website \"#{site_name}\" \"#{site_name_url_safe}\""
7
+
8
+
9
+
10
+
11
+ #!/home/vagrant/.rvm/rubies/ruby-2.2.0/bin/ruby
12
+ #
13
+ # Create new website
14
+
15
+ require "active_support/inflector"
16
+
17
+ # ------------ Params (inside the Vagrant) ------------
18
+
19
+ sites_path = "/apps"
20
+ shared_path = "/shared_path"
21
+
22
+ site_name = ARGV.join(" ")
23
+ site_name_url_safe = ActiveSupport::Inflector.transliterate(site_name).gsub(/[' ]/, "").downcase
24
+
25
+ # ------------ Startup checks ------------
26
+
27
+ # Check for shared folder accessibility
28
+ if ( !File.directory? "#{shared_path}/_samples" )
29
+ print "Error: shared folder doesn't seem to be accessible. Is it mounted?\nExiting...\n"
30
+ print `ls #{shared_path}`
31
+ exit
32
+ end
33
+
34
+ # ------------ CAVALERIE:NEW ------------
35
+
36
+ print "\no> Relax: your new shinny '#{site_name}' website is on his way!\n"
37
+
38
+ # Create NAS folder
39
+ `mkdir -p #{shared_path}/#{site_name_url_safe}/shared/content/uploads`
40
+ print "o> NAS folder '#{shared_path}/#{site_name_url_safe}/shared/content/uploads' created\n"
41
+
42
+ # Create local folder
43
+ `mkdir -p #{sites_path}/#{site_name_url_safe}`
44
+ print "o> Local folder '#{sites_path}/#{site_name_url_safe}' created\n"
45
+
46
+ # Copy required config files to shared folder
47
+ `cp -r #{shared_path}/_credentials #{shared_path}/_samples #{shared_path}/#{site_name_url_safe}/shared`
48
+ print "o> Credentials and sample files copied\n"
49
+
50
+ # Run container with 2 volumes
51
+ print "o> Docker run with 2 volumes:\n"
52
+ print "o> - #{sites_path}/#{site_name_url_safe}\n"
53
+ print "o> - #{shared_path}/#{site_name_url_safe}/shared\n"
54
+ exec "docker run -it -v #{sites_path}/#{site_name_url_safe}:/app -v #{shared_path}/#{site_name_url_safe}/shared:/app/shared --name new_website --rm cavalerie/new_website \"#{site_name}\" \"#{site_name_url_safe}\""
metadata ADDED
@@ -0,0 +1,283 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cavalerie_web
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Arnaud Lenglet
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-04-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: thor
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.19'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.19'
27
+ - !ruby/object:Gem::Dependency
28
+ name: colorize
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.7'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.7'
41
+ - !ruby/object:Gem::Dependency
42
+ name: ghost
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: ptools
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.3'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.3'
69
+ - !ruby/object:Gem::Dependency
70
+ name: mysql2
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.3'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.3'
83
+ - !ruby/object:Gem::Dependency
84
+ name: bundler
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.8'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.8'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rake
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '10.0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '10.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rspec-core
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '3.2'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '3.2'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rspec-mocks
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '3.2'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '3.2'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rspec-expectations
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '3.2'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '3.2'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rspec
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '3.2'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '3.2'
167
+ - !ruby/object:Gem::Dependency
168
+ name: guard
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '2.12'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '2.12'
181
+ - !ruby/object:Gem::Dependency
182
+ name: guard-rspec
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: '4.5'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: '4.5'
195
+ description: Contain everything your need to create and manage websites
196
+ email:
197
+ - arlenglet@gmail.com
198
+ executables:
199
+ - cavalerie
200
+ extensions: []
201
+ extra_rdoc_files: []
202
+ files:
203
+ - ".gitignore"
204
+ - ".rspec"
205
+ - ".ruby-version"
206
+ - ".travis.yml"
207
+ - CODE_OF_CONDUCT.md
208
+ - Gemfile
209
+ - Guardfile
210
+ - LICENSE.txt
211
+ - README.md
212
+ - Rakefile
213
+ - bin/cavalerie
214
+ - cavalerie_web.gemspec
215
+ - lib/cavalerie_web.rb
216
+ - lib/cavalerie_web/checks/file_folder_check.rb
217
+ - lib/cavalerie_web/checks/vagrant_check.rb
218
+ - lib/cavalerie_web/cli/command.rb
219
+ - lib/cavalerie_web/cli/subcommands/new.rb
220
+ - lib/cavalerie_web/cli/subcommands/server.rb
221
+ - lib/cavalerie_web/configs/VirtualHost.sample
222
+ - lib/cavalerie_web/configs/apache_container_ip
223
+ - lib/cavalerie_web/configs/config.rb
224
+ - lib/cavalerie_web/configs/docker_configs.json
225
+ - lib/cavalerie_web/configs/local-config.sample.php
226
+ - lib/cavalerie_web/configs/mysql_container_ip
227
+ - lib/cavalerie_web/configs/setup_status.default.json
228
+ - lib/cavalerie_web/configs/setup_status.json
229
+ - lib/cavalerie_web/errors/container_not_running_error.rb
230
+ - lib/cavalerie_web/errors/logs_folder_not_found_error.rb
231
+ - lib/cavalerie_web/errors/max_retries_reach_error.rb
232
+ - lib/cavalerie_web/errors/required_folder_unavailable_error.rb
233
+ - lib/cavalerie_web/errors/required_plugin_missing_error.rb
234
+ - lib/cavalerie_web/errors/unable_to_access_hosts_file_on_windows_os_error.rb
235
+ - lib/cavalerie_web/errors/unknown_docker_container_status_error.rb
236
+ - lib/cavalerie_web/errors/vagrant_not_installed_error.rb
237
+ - lib/cavalerie_web/errors/vagrant_vm_already_running_error.rb
238
+ - lib/cavalerie_web/errors/vagrant_vm_not_running_error.rb
239
+ - lib/cavalerie_web/errors/virtual_host_file_not_found_error.rb
240
+ - lib/cavalerie_web/helpers/os_helper.rb
241
+ - lib/cavalerie_web/helpers/vagrant_helper.rb
242
+ - lib/cavalerie_web/managers/database_manager.rb
243
+ - lib/cavalerie_web/managers/file_folder_manager.rb
244
+ - lib/cavalerie_web/managers/sequence_manager.rb
245
+ - lib/cavalerie_web/managers/site_manager.rb
246
+ - lib/cavalerie_web/managers/vagrant_manager.rb
247
+ - lib/cavalerie_web/sequences/base_sequence.rb
248
+ - lib/cavalerie_web/sequences/cavalerie_destroy_sequence.rb
249
+ - lib/cavalerie_web/sequences/cavalerie_init_sequence.rb
250
+ - lib/cavalerie_web/sequences/cavalerie_refresh_sequence.rb
251
+ - lib/cavalerie_web/sequences/cavalerie_status_sequence.rb
252
+ - lib/cavalerie_web/sequences/cavalerie_up_sequence.rb
253
+ - lib/cavalerie_web/sequences/ensure_setup_is_correct_sequence.rb
254
+ - lib/cavalerie_web/ui/banner.rb
255
+ - lib/cavalerie_web/ui/message.rb
256
+ - lib/vagrant/DockerHost.Vagrantfile
257
+ - lib/vagrant/Vagrantfile
258
+ - lib/vagrant/scripts/new_website.rb
259
+ homepage: https://bitbucket.org/lacavalerie/web_toolbox
260
+ licenses:
261
+ - MIT
262
+ metadata: {}
263
+ post_install_message:
264
+ rdoc_options: []
265
+ require_paths:
266
+ - lib
267
+ required_ruby_version: !ruby/object:Gem::Requirement
268
+ requirements:
269
+ - - ">="
270
+ - !ruby/object:Gem::Version
271
+ version: '0'
272
+ required_rubygems_version: !ruby/object:Gem::Requirement
273
+ requirements:
274
+ - - ">="
275
+ - !ruby/object:Gem::Version
276
+ version: '0'
277
+ requirements: []
278
+ rubyforge_project:
279
+ rubygems_version: 2.4.5
280
+ signing_key:
281
+ specification_version: 4
282
+ summary: La Cavalerie web toolbox
283
+ test_files: []