pxg 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/bin/pxg +2 -1
- data/lib/pxg.rb +133 -14
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MThkNGYyNGY4M2M2OGRlZGRkNThjNmRhYmUyMmE5YzQzOTFkYWE4Zg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NTBlOTUyOWU2YWMwM2JlMzQwZTJjMjQxZjc3MzE5MjgxMzJmZDJhNQ==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YThjZjU0MTk3NDBjN2RlZWI1Y2MxOTZkZWNmN2FiZmI3NWRkZWUyNmY4YTU1
|
10
|
+
NDVmYTNjMDVjMGU5ZDkzNGQ3OTg3M2M3ZTcyMGM5Njg1NDhmMjkyODIwMTdi
|
11
|
+
OTQyMTc0Y2UxNjI0MzA2MzA1NmExYTRmM2Y4MGU3YzZlMzM1NTU=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NTliYjRiNTIyYzIxYjRmYTM2NzkzZjJlNTNkYmM4YTNiMTYyOGZjYzA5ZDU5
|
14
|
+
OWI0ODZiZjlkMDNjNDQ5OGFmNzE2Y2NhMmU0ZmYzNWI3NTg3NGE3ODJiMTc1
|
15
|
+
NzNmN2VhMWE0ZmE3MDUzZWFhZGFjMjYwMTY1ZGQ5NmRiMTJkYjA=
|
data/bin/pxg
CHANGED
@@ -15,7 +15,8 @@ puts
|
|
15
15
|
puts <<eos
|
16
16
|
Commands
|
17
17
|
------------------------------------------------------------------------------
|
18
|
-
pxg
|
18
|
+
pxg version - current interface version
|
19
|
+
pxg compile [<dir>] - reads pxg.json from directory and resolves it
|
19
20
|
eos
|
20
21
|
|
21
22
|
end#if
|
data/lib/pxg.rb
CHANGED
@@ -8,6 +8,8 @@ require 'json'
|
|
8
8
|
|
9
9
|
class Pxg
|
10
10
|
|
11
|
+
VERSION = '1.1.0'
|
12
|
+
|
11
13
|
def find_and_replace(path, search, replace)
|
12
14
|
clean_path = path.sub(/(\/)+$/, '') + '/'
|
13
15
|
Dir.glob "#{clean_path}**/*.php" do |file|
|
@@ -15,48 +17,165 @@ class Pxg
|
|
15
17
|
text = File.read file
|
16
18
|
text = text.gsub search, replace
|
17
19
|
File.write file, text
|
18
|
-
end
|
20
|
+
end#glob
|
21
|
+
end#def
|
22
|
+
|
23
|
+
def ensure_copy(rawsrcpath, rawlocalpath, rawthemepath)
|
24
|
+
srcpath = File.expand_path(rawsrcpath) + '/'
|
25
|
+
localpath = File.expand_path(rawlocalpath) + '/'
|
26
|
+
themepath = File.expand_path(rawthemepath) + '/'
|
27
|
+
Dir.glob "#{srcpath}**/*" do |file|
|
28
|
+
next if file == '.' or file == '..'
|
29
|
+
filepath = File.expand_path(file)
|
30
|
+
filesubpath = filepath.sub srcpath, ''
|
31
|
+
localfilepath = localpath + filesubpath
|
32
|
+
if ! File.exists? localfilepath
|
33
|
+
localfilesubpath = localfilepath.sub themepath, ''
|
34
|
+
puts " - #{localfilesubpath}"
|
35
|
+
text = File.read filepath
|
36
|
+
FileUtils.mkpath File.dirname(localfilepath)
|
37
|
+
File.write localfilepath, text
|
38
|
+
end#if
|
39
|
+
end#glob
|
40
|
+
end#def
|
41
|
+
|
42
|
+
def force_copy(filepaths, rawsrcpath, rawlocalpath, rawthemepath)
|
43
|
+
srcpath = File.expand_path(rawsrcpath) + '/'
|
44
|
+
localpath = File.expand_path(rawlocalpath) + '/'
|
45
|
+
themepath = File.expand_path(rawthemepath) + '/'
|
46
|
+
Dir.glob "#{srcpath}**/*" do |file|
|
47
|
+
next if file == '.' or file == '..'
|
48
|
+
filepath = File.expand_path(file)
|
49
|
+
filesubpath = filepath.sub srcpath, ''
|
50
|
+
if filepaths.include? filesubpath
|
51
|
+
|
52
|
+
localfilepath = localpath + filesubpath
|
53
|
+
localfilesubpath = localfilepath.sub themepath, ''
|
54
|
+
text = File.read filepath
|
55
|
+
updatefile = false
|
56
|
+
|
57
|
+
if File.exists? localfilepath
|
58
|
+
localtext = File.read localfilepath
|
59
|
+
if ! localtext.eql? text
|
60
|
+
updatefile = true
|
61
|
+
end#if
|
62
|
+
else # file does not exist
|
63
|
+
updatefile = true
|
64
|
+
end#if
|
65
|
+
|
66
|
+
if updatefile
|
67
|
+
puts " - #{localfilesubpath}"
|
68
|
+
FileUtils.mkpath File.dirname(localfilepath)
|
69
|
+
File.write localfilepath, text
|
70
|
+
end#if
|
71
|
+
|
72
|
+
end#if
|
73
|
+
end#glob
|
19
74
|
end#def
|
20
75
|
|
21
76
|
def wp_core(path, conf)
|
22
77
|
Dir.chdir path
|
78
|
+
themepath = path.sub(/(\/)+$/, '') + '/'
|
23
79
|
core_path = conf['path'].sub(/(\/)+$/, '')
|
24
|
-
|
80
|
+
|
81
|
+
puts " processing #{core_path}"
|
25
82
|
# remove the core if it exists
|
26
83
|
FileUtils.rm_rf core_path
|
27
84
|
# clone a fresh copy
|
28
|
-
puts "cloning #{conf['repo']} -> #{conf['version']}"
|
85
|
+
puts " cloning #{conf['repo']} -> #{conf['version']}"
|
29
86
|
g = Git.clone conf['repo'], core_path
|
30
87
|
g.checkout conf['version']
|
31
88
|
FileUtils.rm_rf core_path+'/.git'
|
89
|
+
|
32
90
|
# refactor name space
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
91
|
+
if conf.has_key? 'namespace'
|
92
|
+
ns_src = conf['namespace']['src']
|
93
|
+
ns_target = conf['namespace']['target']
|
94
|
+
puts " refactoring #{core_path}"
|
95
|
+
self.find_and_replace core_path, ns_src, ns_target
|
96
|
+
self.find_and_replace core_path, ns_src.capitalize, ns_target.capitalize
|
97
|
+
end#if
|
98
|
+
|
99
|
+
# ensure partials
|
100
|
+
if conf.has_key? 'partials'
|
101
|
+
partials_src = core_path + '/' + conf['partials']['src']
|
102
|
+
partials_local = themepath + conf['partials']['local']
|
103
|
+
puts " ensuring copy of system partials"
|
104
|
+
self.ensure_copy partials_src, partials_local, themepath
|
105
|
+
end#if
|
106
|
+
|
107
|
+
# ensure behavior tests
|
108
|
+
if conf.has_key? 'features'
|
109
|
+
features_src = core_path + '/' + conf['features']['src']
|
110
|
+
features_local = themepath + conf['features']['local']
|
111
|
+
if conf['features'].has_key? 'ensure'
|
112
|
+
rawfilenames = conf['features']['ensure']
|
113
|
+
filenames = []
|
114
|
+
rawfilenames.each do |file|
|
115
|
+
filenames.push (file + '.feature')
|
116
|
+
end#each
|
117
|
+
puts " ensuring latest copy of active feature tests"
|
118
|
+
self.force_copy filenames, features_src, features_local, themepath
|
119
|
+
end#if
|
120
|
+
end#if
|
121
|
+
|
38
122
|
end#def
|
39
123
|
|
40
124
|
def compile(args)
|
41
|
-
|
125
|
+
if args.length != 0
|
126
|
+
dirpath = args[0].sub(/(\/)+$/,'')+'/'
|
127
|
+
else # no parameters, assume .
|
128
|
+
dirpath = './'
|
129
|
+
end
|
130
|
+
|
42
131
|
if ! File.exist? dirpath
|
43
|
-
puts 'Err: target directory does not exist.'
|
132
|
+
puts ' Err: target directory does not exist.'
|
44
133
|
return;
|
45
134
|
end
|
46
135
|
|
47
|
-
jsonconfigfile = dirpath+'pxg.json'
|
136
|
+
jsonconfigfile = dirpath+'pxg.json'
|
48
137
|
if ! File.exist? jsonconfigfile
|
49
|
-
puts 'Err: Missing pxg.json file in target directory.'
|
138
|
+
puts ' Err: Missing pxg.json file in target directory.'
|
50
139
|
return;
|
51
140
|
end
|
52
141
|
|
53
|
-
conf = JSON.parse(open(jsonconfigfile).read)
|
142
|
+
conf = JSON.parse(open(jsonconfigfile).read)
|
143
|
+
|
144
|
+
# interface was introduced after 1.0.0
|
145
|
+
if conf.has_key? 'interface'
|
146
|
+
conf['interface'] = "1.0.0"
|
147
|
+
end#if
|
148
|
+
|
149
|
+
# ensure pxg.json interface isn't newer
|
150
|
+
pxgi = Pxg::VERSION.split '.'
|
151
|
+
jsoni = conf['interface'].split '.'
|
152
|
+
|
153
|
+
if jsoni[0] != pxgi[0]
|
154
|
+
self.failed_version_check conf['interface']
|
155
|
+
else # major versions are equal
|
156
|
+
if jsoni[1] > pxgi[1]
|
157
|
+
# ie. json requires extra features
|
158
|
+
self.failed_version_check conf['interface']
|
159
|
+
elsif jsoni[1] == pxgi[1] && jsoni[2] > pxgi[2]
|
160
|
+
# ie. potential problems with bugfix'es
|
161
|
+
self.failed_version_check conf['interface']
|
162
|
+
end#if
|
163
|
+
end#if
|
54
164
|
|
55
165
|
conf['wp-cores'].each do |wpcoreconf|
|
56
166
|
self.wp_core dirpath, wpcoreconf
|
57
167
|
end#each
|
58
168
|
|
59
|
-
puts
|
169
|
+
puts ""
|
170
|
+
puts " fin"
|
171
|
+
end#def
|
172
|
+
|
173
|
+
def version(args)
|
174
|
+
puts " #{Pxg::VERSION}"
|
175
|
+
end#def
|
176
|
+
|
177
|
+
def failed_version_check(interface)
|
178
|
+
puts " Err: Incompatible versions: pxg.json @ #{interface} but pxg.gem @ #{Pxg::VERSION}"
|
60
179
|
end#def
|
61
180
|
|
62
181
|
end#class
|