swiftly 5.0.1 → 5.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d783503de636e427ab81750c033953513ab53d95
4
- data.tar.gz: 1d4b754bc088690b9513dbabf2253cd7a04b4c17
3
+ metadata.gz: e12a8d97534badf9317181eeeaa024c1c4c16f6c
4
+ data.tar.gz: 3d9f554f38f9fd5e9f71950efa6e5257c3c9ccf6
5
5
  SHA512:
6
- metadata.gz: 7c56d006554c3d79b436ce5bdc4a58da4a012b93f8d6ca1896c7c18b1a1092fc0fd6ad30a39660c92dbc0443f55c51192b100b181fbd14f01c7f02bde06bc335
7
- data.tar.gz: 9dabc4f9bba3c91d6916dd712e4d17cfa82d5908a2ddd6af74c36f8f7b102242f892926ecaa7a6e540db731ed71f91b10a4e5396b861529a16cd95915a57131b
6
+ metadata.gz: b027195c39a0f8d5dd105ff9787fdf0874deb9375335ceb19d900690b6016a1c4e4da841844e87a0acee5db322daf5e6fd645fc38c32f1b9a618686a8c2a89c5
7
+ data.tar.gz: 9da671fffd068dc04374daacd325651883e62472d51a2ffd5a016de11ab576bebc828b1ca8a57ff0401148349bc51345aa90c14c5fa17bf6d3ab2661042c1cc3
@@ -1,4 +1,4 @@
1
- require 'Thor'
1
+ require 'thor'
2
2
  require 'pathname'
3
3
  require 'awesome_print'
4
4
 
@@ -69,6 +69,9 @@ module Swiftly
69
69
 
70
70
  def self.set setting, *args, &block
71
71
 
72
+ # Ensure that we are only getting the server settings
73
+ return unless setting == :server
74
+
72
75
  Swiftly::Smokestack.define do
73
76
 
74
77
  factory setting, &block
@@ -79,6 +82,13 @@ module Swiftly
79
82
 
80
83
  end
81
84
 
85
+
86
+ #
87
+ # Loads configuration files for swiftly to use
88
+ # @param file [string] string file path
89
+ # @param project_name = nil [string] name of the project
90
+ #
91
+ # @return [hash] hash of the settings
82
92
  def self.load file, project_name = nil
83
93
 
84
94
  case file
@@ -91,19 +101,15 @@ module Swiftly
91
101
 
92
102
  when :project
93
103
 
94
- if !eval( IO.read( project_file( project_name ) ) ).nil?
104
+ eval( IO.read( project_file( project_name ) ) )
95
105
 
96
- load_hash = Resolver.get :server == {} ? false : Resolver.get( :package )
97
-
98
- end
106
+ load_hash = Resolver.get :server == {} ? false : Resolver.get( :server )
99
107
 
100
108
  when :swiftly
101
109
 
102
- if !eval( IO.read( swiftlyfile ) ).nil?
110
+ eval( IO.read( self.swiftlyfile ) )
103
111
 
104
- load_hash = Resolver.get :server
105
-
106
- end
112
+ load_hash = Resolver.get( :server ) == {} ? false : Resolver.get( :server )
107
113
 
108
114
  when :global
109
115
 
@@ -111,7 +117,7 @@ module Swiftly
111
117
 
112
118
  when :all
113
119
 
114
- eval( IO.read( swiftlyfile ) ) unless eval( IO.read( swiftlyfile ) ).nil?
120
+ eval( IO.read( self.swiftlyfile ) ) unless eval( IO.read( self.swiftlyfile ) ).nil?
115
121
 
116
122
 
117
123
  wp_config_parse project_name
@@ -120,13 +126,11 @@ module Swiftly
120
126
  eval( IO.read( project_file( project_name ) ) ) unless eval( IO.read( project_file( project_name ) ) ).nil?
121
127
 
122
128
 
123
-
124
129
  load_hash = Resolver.get :server
125
130
 
126
131
  end
127
132
 
128
-
129
- load_hash
133
+ return load_hash
130
134
 
131
135
  end
132
136
 
@@ -58,12 +58,11 @@ module Swiftly
58
58
 
59
59
  global_settings = Swiftly::Config.load :global
60
60
  project_settings = Swiftly::Config.load :swiftly
61
+ template = Swiftly::Template.retrieve :wordpress, options[:template]
61
62
 
62
- template = Swiftly::Package.load({
63
- framework: :wordpress,
64
- type: :template,
65
- name: options[:template]
66
- })
63
+ say_status "#{APP_NAME}:", "Wordpress template #{options[:template]} cannot be found.", :yellow unless template
64
+
65
+ abort unless template
67
66
 
68
67
  project_path = File.join(
69
68
  global_settings[:sites_path],
@@ -1,7 +1,6 @@
1
1
  require "thor/group"
2
2
  require 'rubygems'
3
3
  require 'active_support'
4
- require 'swiftly/packages'
5
4
  require 'swiftly/app_module'
6
5
  require 'active_support/core_ext/string'
7
6
  require 'git'
@@ -14,156 +13,244 @@ module Swiftly
14
13
 
15
14
  argument :project_name
16
15
  argument :template
17
- # argument :settings
18
16
  argument :project_path
19
17
 
20
18
  desc "Handles the creation of a wordpress project."
21
19
 
20
+ #
21
+ # Define the source root of this file
22
+ #
23
+ # @return [string] The path to this file
22
24
  def self.source_root
23
25
 
24
26
  File.dirname(__FILE__)
25
27
 
26
28
  end
27
29
 
28
- def get_wordpress()
29
30
 
30
- # download wordpress and place it in the project directory
31
+ #
32
+ # This method grabs the latest version of wordpress,
33
+ # unzips it and places it into the project directory
34
+ #
35
+ # @return [void]
36
+ def get_wordpress
37
+
38
+ # change directory into the project path
31
39
  inside @project_path do
32
40
 
41
+ # download Wordpress unless it already exists
33
42
  get 'https://wordpress.org/latest.zip', 'latest.zip' unless File.exist? 'wordpress'
34
43
 
44
+ # unzip the zip unless it is already unzipped
35
45
  unzip 'latest.zip', 'wordpress' unless File.exist? 'wordpress'
36
46
 
47
+ # remove the zip file if the zip file exists
37
48
  remove_file 'latest.zip' unless !File.exist? 'latest.zip'
38
49
 
39
- Dir['wordpress/*'].each do |e|
50
+ # Grab all of the folders out of the wordpress directory
51
+ Dir[File.join('wordpress', '*')].each do |e|
40
52
 
53
+ # Move all of the folders our of the wordpress directory
54
+ # and into the root of the project if it exists
41
55
  FileUtils.mv( e, @project_path ) unless File.exist? e.gsub(/^wordpress/, @project_path )
42
56
 
43
57
  end
44
58
 
59
+ # Remove the empty wordpress directory if it still exits
45
60
  remove_file 'wordpress' unless !(Dir.entries('wordpress') - %w{ . .. }).empty?
61
+ end
62
+ end
46
63
 
47
- inside File.join( 'wp-content', 'themes') do
48
-
49
- if @template[:location] =~ /^#{URI::regexp}\.zip$/
50
64
 
51
- zipfile = get @template[:location], File.basename( @template[:location] )
65
+ #
66
+ # Download or get theme for a location on the hard drive
67
+ # and add it to the Wordpress theme folder
68
+ #
69
+ # @return [void]
70
+ def get_theme
52
71
 
53
- unzip zipfile, @template[:name] unless File.exist? @template[:name]
72
+ # Change directories to inside of the theme directory
73
+ inside File.join( @project_path, 'wp-content', 'themes') do
54
74
 
55
- remove_file zipfile unless !File.exist? zipfile
75
+ # Check to see if the theme is a zip file
76
+ if @template.location =~ /^#{URI::regexp}\.zip$/
56
77
 
57
- else
78
+ # If the theme is a zip file then download the theme
79
+ zipfile = get @template.location, File.basename( @template.location )
58
80
 
59
- FileUtils.cp_r( File.join( @template[:location], @template[:name] ), '.' )
81
+ # Unzip the theme if it has not been unzipped already
82
+ unzip zipfile, @template.name unless File.exist? @template.name.to_s
60
83
 
61
- end
84
+ # Rmove the zipfile if it still exists
85
+ remove_file zipfile unless !File.exist? zipfile
62
86
 
63
- FileUtils.mv( @template[:name], @project_name ) unless !File.exists? @template[:name].capitalize
87
+ else
64
88
 
65
- inside @project_name do
89
+ # If the theme location does not point to a zip file
90
+ # then the theme to the theme folder
91
+ FileUtils.cp_r( File.join( @template.location, @template.name.to_s ), '.' )
66
92
 
67
- [
68
- '.git',
69
- '_resources',
70
- '.gitignore',
71
- '.htaccess',
72
- ".#{APP_NAME}",
73
- ".#{APP_NAME}ignore"
74
- ].each do |e|
75
-
76
- remove_file e
93
+ end
77
94
 
78
- end
95
+ # Change the theme name from whatever it was named
96
+ # into the the name of the project
97
+ FileUtils.mv( @template.name.to_s, @project_name ) unless !File.exists? @template.name.to_s.capitalize
79
98
 
80
- [
81
- '.htaccess',
82
- 'wp-config.php',
83
- 'bower.json',
84
- 'config.rb',
85
- 'Guardfile',
86
- 'Gemfile',
87
- 'Gemfile.lock'
88
- ].each do |file|
99
+ # Change directories
100
+ inside @project_name do
89
101
 
90
- gsub_file file, /(#{@template[:name]})/, @project_name unless !File.exists? file
102
+ # Loop through each of these files
103
+ # and delete them if the exist
104
+ [
105
+ '.git',
106
+ '_resources',
107
+ '.gitignore',
108
+ '.htaccess',
109
+ ".#{APP_NAME}",
110
+ ".#{APP_NAME}ignore"
111
+ ].each do |file|
91
112
 
92
- FileUtils.mv( file, @project_path ) unless !File.exists? file
113
+ remove_file file unless !File.exists? file
93
114
 
94
- end
115
+ end
95
116
 
96
- FileUtils.mv(
97
- "#{@template[:name]}-specific-plugin",
98
- File.join( @project_path, "wp-content", "plugins", "#{@project_name}-specific-plugin")
99
- ) unless !File.exists? "#{@template[:name]}-specific-plugin"
117
+ # Loop through each of these files
118
+ # and perform a find and replace to change
119
+ # the theme name into the name of the project
120
+ [
121
+ '.htaccess',
122
+ 'wp-config.php',
123
+ 'bower.json',
124
+ 'config.rb',
125
+ 'Guardfile',
126
+ 'Gemfile',
127
+ 'Gemfile.lock'
128
+ ].each do |file|
100
129
 
101
- FileUtils.mv(
102
- File.join( "wp-login-logo-#{@template[:name]}.png" ) ,
103
- File.join( "wp-login-logo-#{@project_name}.png" )
104
- ) unless !File.exists? File.join( "wp-login-logo-#{@template[:name]}.png" )
130
+ gsub_file file, /(#{@template.name})/, @project_name.gsub(/\-|\./, '_') unless !File.exists? file
105
131
 
106
- gsub_file 'functions.php', /(#{@template[:name]})/, @project_name
132
+ FileUtils.mv( file, @project_path ) unless !File.exists? file
107
133
 
108
134
  end
109
- end
110
135
 
111
- inside File.join( "wp-content", "plugins", "#{@project_name}-specific-plugin") do
136
+ # Move the project specific plugin into the
137
+ # plugins directory if it exists
138
+ FileUtils.mv(
139
+ "#{@template.name}-specific-plugin",
140
+ File.join( @project_path, "wp-content", "plugins", "#{@project_name}-specific-plugin")
141
+ ) unless !File.exists? "#{@template.name}-specific-plugin"
112
142
 
143
+ # Change the name of the theme logo
144
+ # if it exists
113
145
  FileUtils.mv(
114
- "#{@template[:name]}-plugin.php",
115
- "#{@project_name}-plugin.php"
116
- ) unless !File.exists? "#{@template[:name]}-plugin.php"
146
+ File.join( "wp-login-logo-#{@template.name}.png" ) ,
147
+ File.join( "wp-login-logo-#{@project_name}.png" )
148
+ ) unless !File.exists? File.join( "wp-login-logo-#{@template.name}.png" )
117
149
 
118
- gsub_file "#{@project_name}-plugin.php", /(#{@template[:name]})/, @project_name.capitalize unless !File.exists? "#{@template[:name]}-plugin.php"
150
+ # Perform a find and replace on the function file to
151
+ # change any mentions of the theme name into the name of the project
152
+ gsub_file 'functions.php', /(#{@template.name})/, @project_name
119
153
 
120
154
  end
121
155
 
122
- inside File.join( "wp-content", "plugins" ) do
156
+ end
157
+
158
+ # Change directories into the project specific plugin
159
+ inside File.join( @project_path, "wp-content", "plugins", "#{@project_name}-specific-plugin") do
160
+
161
+ # Change the file name to match the project name
162
+ FileUtils.mv(
163
+ "#{@template.name}-plugin.php",
164
+ "#{@project_name}-plugin.php"
165
+ ) unless !File.exists? "#{@template.name}-plugin.php"
166
+
167
+ # Perform a find and replace files to match the project name
168
+ gsub_file "#{@project_name}-plugin.php", /(#{@template.name})/, @project_name.capitalize unless !File.exists? "#{@template.name}-plugin.php"
169
+
170
+ end
171
+ end
172
+
173
+ #
174
+ # Download or get plugins for a location on the hard drive
175
+ # and add it to the Wordpress plugins folder
176
+ #
177
+ # @return [void]
178
+ def get_plugins
179
+
180
+ # Change directories into the plugins directory
181
+ inside File.join( @project_path, "wp-content", "plugins" ) do
123
182
 
124
- plugins = Swiftly::Package.load_plugins :wordpress
183
+ # Get all the Wordpress plugins from specified in
184
+ # the config and in the Swiftlyfolder
185
+ plugins = Swiftly::Plugin.all :wordpress
125
186
 
126
- if plugins
187
+ # Check to see if any plugins are available
188
+ if plugins
127
189
 
128
- # grab global plugins if they exist
129
- plugins.each do |plugin|
190
+ # If plugins are available then
191
+ # loop through all the plugins
192
+ plugins[:wordpress].each do |plugin|
130
193
 
131
- if plugin[:location] =~ /^#{URI::regexp}\.zip$/
194
+ # If a plugin is zipped up
195
+ if plugin.location =~ /^#{URI::regexp}\.zip$/
132
196
 
133
- zipfile = get plugin[:location], File.basename( plugin[:location] )
197
+ # Set the plugin up to be unzipped
198
+ zipfile = get plugin.location, File.basename( plugin.location )
134
199
 
135
- unzip zipfile, plugin[:name] unless File.exist? plugin[:name]
200
+ # Unzip the plugin if it exists
201
+ unzip zipfile, plugin.name unless File.exist? plugin.name.to_s
136
202
 
137
- remove_file zipfile unless !File.exist? zipfile
203
+ # Remove the zip file if it exists
204
+ remove_file zipfile unless !File.exist? zipfile
138
205
 
139
- else
206
+ else
140
207
 
141
- FileUtils.cp_r( File.join( plugin[:location], plugin[:name] ), '.' ) unless File.exist? plugin[:name]
208
+ # If the plugin is not zipped then just
209
+ # copy it to the plugin folder
210
+ FileUtils.cp_r( File.join( plugin.location, plugin.name.to_s ), '.' ) unless File.exist? plugin.name.to_s
142
211
 
143
- end
144
212
  end
145
213
  end
146
214
  end
215
+ end
216
+ end
147
217
 
148
- # add plugins to the functions file
149
- # Plugins.add_plugins_to_functions_file @project_path
218
+ #
219
+ # Handle the wp-config file in peperations for database set up
220
+ #
221
+ # @return [void]
222
+ def wp_config
150
223
 
224
+ # Change directories into the project directory
225
+ inside File.join @project_path do
226
+
227
+ # Get rid of the sample wp-config file
151
228
  remove_file "wp-config-sample.php"
152
229
 
230
+ # Add salts to the wp-config file
153
231
  gsub_file 'wp-config.php', /\/\/\s*Insert_Salts_Below/, Net::HTTP.get('api.wordpress.org', '/secret-key/1.1/salt')
232
+
233
+ # Change the table prefix for the database
154
234
  gsub_file 'wp-config.php', /(table_prefix\s*=\s*')(wp_')/, '\1' + @project_name[0,3] + "_'"
155
235
 
236
+ # Retrieve the server settings for the
237
+ # local database
156
238
  settings = Swiftly::Config.load :swiftly
157
239
 
240
+ # Check to see if all of the database settings
241
+ # are present
158
242
  if !settings.nil? &&
159
243
  !settings[:local][:db_host].nil? &&
160
244
  !settings[:local][:db_user].nil? &&
161
245
  !settings[:local][:db_pass].nil?
162
246
 
247
+ # If the database settings are present the
248
+ # perform a find and replace on the local wp-config
249
+ # database settings
163
250
  gsub_file 'wp-config.php', /(\$local\s*?=[\s|\S]*?)({[\s|\S]*?})/ do |match|
164
251
 
165
252
  '$local = \'{
166
- "db_name": "' + @project_name + '_local_wp",
253
+ "db_name": "' + @project_name.gsub(/\-|\./, '_') + '_local_wp",
167
254
  "db_host": "' + settings[:local][:db_host] + '",
168
255
  "db_user": "' + settings[:local][:db_user] + '",
169
256
  "db_pass": "' + settings[:local][:db_pass] + '",
@@ -174,14 +261,40 @@ module Swiftly
174
261
  end
175
262
  end
176
263
 
177
- database = Swiftly::Database.new( @project_name )
264
+ end
265
+ end
266
+
267
+
268
+ #
269
+ # Create the database for the project
270
+ #
271
+ # @return [void]
272
+ def create_database
273
+
274
+ # Create a new database object
275
+ database = Swiftly::Database.new @project_name
178
276
 
179
- database.create( :local )
277
+ # Create a new database
278
+ database.create :local
279
+
280
+ end
180
281
 
282
+
283
+ #
284
+ # Take care of any of the project dependencies
285
+ #
286
+ # @return [void]
287
+ def dependencies
288
+
289
+ # Change directories into the project directory
290
+ inside File.join @project_path do
291
+
292
+ # Run all the possible installs if any of the
293
+ # package managers exists
181
294
  run('bundle') unless !File.exists? 'Gemfile'
182
295
  run('bundle exec guard') unless !File.exists? 'Guardfile'
296
+ run('npm install') unless !File.exists? 'package.json'
183
297
  run('bower update') unless !File.exists? 'bower.json'
184
-
185
298
  end
186
299
  end
187
300
  end
@@ -1,4 +1,4 @@
1
- require 'Thor'
1
+ require 'thor'
2
2
  require 'swiftly/app_module'
3
3
  require "thor/group"
4
4
  require 'swiftly/project'
@@ -210,4 +210,4 @@ module Swiftly
210
210
  end
211
211
  end
212
212
  end
213
- end
213
+ end
@@ -1,16 +1,18 @@
1
1
  require "swiftly/server"
2
+ require "swiftly/template"
3
+ require "swiftly/plugin"
2
4
 
3
5
  module Swiftly
4
6
  class Factory < BasicObject
5
7
 
8
+ attr_reader :attributes
9
+
6
10
  def initialize
7
11
 
8
12
  @attributes = {}
9
13
 
10
14
  end
11
15
 
12
- attr_reader :attributes
13
-
14
16
  def method_missing(name, *args, &block)
15
17
 
16
18
  @attributes[name] = args[0]
@@ -0,0 +1,116 @@
1
+ module Swiftly
2
+ class Package
3
+
4
+ attr_accessor :name
5
+ attr_accessor :location
6
+ attr_accessor :status
7
+
8
+ def self.file
9
+
10
+ @settings = Swiftly::Config.load :global
11
+
12
+ File.join(
13
+ @settings[:sites_path],
14
+ "#{APP_NAME}file",
15
+ ) unless !File.exists?(
16
+ File.join(
17
+ @settings[:sites_path],
18
+ "#{APP_NAME}file"
19
+ )
20
+ )
21
+
22
+ end
23
+
24
+ def self.set package_type, *args, &block
25
+
26
+ unless package_type == @package_type &&
27
+ args[0][:type] == @type
28
+ return
29
+ end
30
+
31
+ Swiftly::Smokestack.define do
32
+
33
+ factory package_type, &block
34
+
35
+ end
36
+
37
+ self.load args[0][:type], Swiftly::Smokestack.build( package_type )
38
+
39
+ end
40
+
41
+ #
42
+ # Loads the class variable @package with an hash
43
+ # with package objects by package types
44
+ #
45
+ # @param type [symbol] Type of package either :plugin or :template
46
+ # @param attributes [obj] The package object
47
+ #
48
+ # @return [type] [description]
49
+ def self.load type, attributes
50
+
51
+ @packages[type] << attributes
52
+ end
53
+
54
+
55
+ #
56
+ # Return a package back to the requester
57
+ # @param type [symbol] Type of package either :plugin or :template
58
+ # @param name [string] The name of the package to be returned
59
+ #
60
+ # @return [obj] An object of the package
61
+ def self.retrieve type, name
62
+
63
+ # Gather all packages
64
+ self.gather type
65
+
66
+ # Check to see if the class variable packages
67
+ # contain packages that match the passed in type
68
+ if !@packages[type].nil?
69
+
70
+ # If so the loop over all the packages
71
+ @packages[type].each do |package|
72
+
73
+ # Check to see if one thereis one
74
+ # that matches the passed in name
75
+ if package.name == name
76
+
77
+ # If so the return it
78
+ return package
79
+ end
80
+ end
81
+
82
+ end
83
+
84
+ # If all goes bad then return false
85
+ return false
86
+ end
87
+
88
+ def self.all type
89
+
90
+ self.gather type
91
+
92
+ return false if @packages[type].nil? && type == :plugin
93
+
94
+ @packages
95
+ end
96
+
97
+ def self.gather type
98
+
99
+ # Set the type
100
+ @type = type
101
+
102
+ # Ready the package hash
103
+ @packages = {
104
+ type => []
105
+ }
106
+
107
+ # Set defaults
108
+ self.defaults
109
+
110
+ proc = Proc.new {}
111
+
112
+ # Evalutes the config file and runs the methods on the file
113
+ eval( IO.read( self.file ), proc.binding, self.file)
114
+ end
115
+ end
116
+ end
@@ -0,0 +1,38 @@
1
+ require "swiftly/package"
2
+
3
+ module Swiftly
4
+ class Plugin < Package
5
+
6
+ attr_accessor :muplugin
7
+
8
+ @package_type = :plugin
9
+
10
+ def self.defaults
11
+
12
+ global = Swiftly::Config.load :global
13
+
14
+ if File.directory? File.join(global[:sites_path], "#{APP_NAME}folder".capitalize)
15
+
16
+ app_folder = File.join(global[:sites_path], "#{APP_NAME}folder".capitalize)
17
+
18
+ if File.directory? File.join app_folder, 'plugins'
19
+
20
+ plugin_folder = File.join app_folder, 'plugins'
21
+
22
+ plugins = Dir.glob(File.join(plugin_folder, '*')).select {|f| File.directory? f}
23
+
24
+ plugins.each do |location|
25
+
26
+ self.set :plugin, :type => :wordpress do
27
+
28
+ name File.basename location
29
+ location File.join app_folder, 'plugins'
30
+ status :enabled
31
+
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -1,4 +1,4 @@
1
- require 'Thor'
1
+ require 'thor'
2
2
  require 'yaml'
3
3
  require 'swiftly/app_module'
4
4
 
@@ -12,6 +12,8 @@ module Swiftly
12
12
 
13
13
  def self.set setting, *args, &block
14
14
 
15
+ return unless setting == :server
16
+
15
17
  Swiftly::Smokestack.define do
16
18
 
17
19
  factory setting, &block
@@ -30,11 +32,15 @@ module Swiftly
30
32
  project_file = Swiftly::Config.project_file project_name
31
33
  wp_config = Swiftly::Config.wp_config_file project_name
32
34
 
33
- eval( IO.read( swiftlyfile ) ) unless eval( IO.read( swiftlyfile ) ).nil?
35
+ proc = Proc.new {}
36
+
37
+ eval( IO.read( swiftlyfile ) ) unless eval( IO.read( swiftlyfile ), proc.binding, swiftlyfile ).nil?
34
38
 
35
39
  wp_config_parse wp_config
36
40
 
37
- eval( IO.read( project_file ) ) unless eval( IO.read( project_file ) ).nil?
41
+ proc = Proc.new {}
42
+
43
+ eval( IO.read( project_file ) ) unless eval( IO.read( project_file ), proc.binding, project_file ).nil?
38
44
 
39
45
  settings = Resolver.get :server
40
46
 
@@ -165,4 +171,4 @@ module Swiftly
165
171
  end
166
172
  end
167
173
  end
168
- end
174
+ end
@@ -3,13 +3,11 @@ module Swiftly
3
3
 
4
4
  @@settings = {
5
5
  server: [],
6
- package: []
7
6
  }
8
7
 
9
8
  def self.load setting, type, attributes
10
9
 
11
10
  @@settings[setting] << { type => attributes }
12
-
13
11
  end
14
12
 
15
13
  def self.get setting
@@ -17,8 +15,11 @@ module Swiftly
17
15
  override = {}
18
16
  final = {}
19
17
 
18
+ # Check to see if there is a setting in the array
19
+ # that matches the setting param
20
20
  if !@@settings[setting].nil?
21
21
 
22
+ # If so loop through
22
23
  @@settings[setting].each do |s|
23
24
 
24
25
  s.each do |k, v|
@@ -41,7 +42,6 @@ module Swiftly
41
42
 
42
43
  construct = {}
43
44
  capture = {}
44
-
45
45
  override[k].each do |o|
46
46
 
47
47
  final.merge!( {k => {} } )
@@ -0,0 +1,19 @@
1
+ require "swiftly/package"
2
+
3
+ module Swiftly
4
+ class Template < Package
5
+
6
+ @package_type = :template
7
+
8
+ def self.defaults
9
+
10
+ self.set :template, :type => :wordpress do
11
+
12
+ name :default
13
+ location 'https://github.com/micalexander/mask/archive/master.zip'
14
+ status :enabled
15
+
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,4 +1,4 @@
1
1
  module Swiftly
2
2
  APP_NAME = 'swiftly'
3
- VERSION = '5.0.1'
4
- end
3
+ VERSION = '5.0.2'
4
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: swiftly
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.1
4
+ version: 5.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mic Alexander
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-19 00:00:00.000000000 Z
11
+ date: 2017-03-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: git
@@ -103,7 +103,6 @@ executables:
103
103
  extensions: []
104
104
  extra_rdoc_files: []
105
105
  files:
106
- - ".DS_Store"
107
106
  - ".gitignore"
108
107
  - Gemfile
109
108
  - README.md
@@ -125,7 +124,8 @@ files:
125
124
  - lib/swiftly/destroy.rb
126
125
  - lib/swiftly/factory.rb
127
126
  - lib/swiftly/init.rb
128
- - lib/swiftly/packages.rb
127
+ - lib/swiftly/package.rb
128
+ - lib/swiftly/plugin.rb
129
129
  - lib/swiftly/project.rb
130
130
  - lib/swiftly/pull.rb
131
131
  - lib/swiftly/push.rb
@@ -135,6 +135,7 @@ files:
135
135
  - lib/swiftly/setup.rb
136
136
  - lib/swiftly/smokestack.rb
137
137
  - lib/swiftly/ssh.rb
138
+ - lib/swiftly/template.rb
138
139
  - lib/swiftly/templates/config_global.erb
139
140
  - lib/swiftly/templates/config_project.erb
140
141
  - lib/swiftly/templates/gitignore.erb
@@ -162,7 +163,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
162
163
  version: 2.1.3
163
164
  requirements: []
164
165
  rubyforge_project:
165
- rubygems_version: 2.4.5
166
+ rubygems_version: 2.6.8
166
167
  signing_key:
167
168
  specification_version: 4
168
169
  summary: Swiftly is a all-in-one WordPress development tool
data/.DS_Store DELETED
Binary file
@@ -1,157 +0,0 @@
1
- require "swiftly/config"
2
- require "swiftly/app_module"
3
- require "yaml"
4
- require "swiftly/factory"
5
-
6
- module Swiftly
7
- class Package < Thor
8
-
9
- include Thor::Actions
10
- include Helpers
11
-
12
- no_commands do
13
-
14
- attr_accessor :framework
15
- attr_accessor :type
16
- attr_accessor :name
17
- attr_accessor :location
18
-
19
- def self.file
20
-
21
- @settings = Swiftly::Config.load :global
22
-
23
- File.join(
24
- @settings[:sites_path],
25
- 'Swiftlyfile',
26
- ) unless !File.exists?(
27
- File.join(
28
- @settings[:sites_path],
29
- 'Swiftlyfile'
30
- )
31
- )
32
-
33
- end
34
-
35
- def self.check?
36
-
37
- if File.exists? self.file
38
-
39
- true
40
-
41
- else
42
-
43
- false
44
-
45
- end
46
- end
47
-
48
- def self.available
49
-
50
- eval( IO.read( self.file ) )
51
-
52
- load_hash = Resolver.get( :package ) == {} ? false : Resolver.get( :package )
53
-
54
- end
55
-
56
- def self.set setting, *args, &block
57
-
58
- Swiftly::Smokestack.define do
59
-
60
- factory setting, &block
61
-
62
- end
63
-
64
- Swiftly::Resolver.load setting, args[0][:type], Swiftly::Smokestack.build( setting )
65
-
66
- end
67
-
68
- def self.template
69
-
70
- {
71
- name: 'mask',
72
- location: 'https://github.com/micalexander/mask/archive/master.zip'
73
- }
74
-
75
- end
76
-
77
- def self.load package = {}
78
-
79
- approved_package = nil
80
-
81
- if self.available &&
82
- !self.available[:packages].nil? &&
83
- !self.available[:packages][package[:framework]].nil? &&
84
- !self.available[:packages][package[:framework]][package[:type]].nil?
85
-
86
- self.available[:packages][package[:framework]][package[:type]].each do |p|
87
-
88
- if ( p[:name] == package[:name] && p[:status] != :disabled ) ||
89
- ( p[:status] == :default )
90
-
91
- approved_package = p
92
-
93
- else
94
-
95
- approved_package = self.template
96
-
97
- end
98
- end
99
-
100
- elsif !self.available
101
-
102
-
103
- approved_package = self.template
104
-
105
- end
106
-
107
- if !approved_package.nil? &&
108
- (
109
- approved_package[:location] =~ /^#{URI::regexp}\.zip$/ ||
110
- File.exist?( File.join( approved_package[:location], approved_package[:name] ) )
111
- )
112
-
113
- return approved_package
114
-
115
- end
116
-
117
- false
118
-
119
- end
120
-
121
- def self.load_plugins framework
122
-
123
- plugins = []
124
-
125
- if self.available &&
126
- !self.available[:packages].nil? &&
127
- !self.available[:packages][framework].nil? &&
128
- !self.available[:packages][framework][:plugins].nil?
129
-
130
- self.available[:packages][framework][:plugins].each do |p|
131
-
132
- verified = self.load({
133
- framework: framework,
134
- type: :plugins,
135
- name: p[:name]
136
- })
137
-
138
- if verified
139
-
140
- plugins << verified
141
-
142
- end
143
- end
144
-
145
- if plugins.count > 0
146
-
147
- return plugins
148
-
149
- end
150
-
151
- false
152
-
153
- end
154
- end
155
- end
156
- end
157
- end