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.
Files changed (4) hide show
  1. checksums.yaml +8 -8
  2. data/bin/pxg +2 -1
  3. data/lib/pxg.rb +133 -14
  4. metadata +1 -1
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YjEzYzYzYzkxZjU5MTFiYzA5NzY0YmY4N2JhNWYwMGZmNDY5ZWQ3Nw==
4
+ MThkNGYyNGY4M2M2OGRlZGRkNThjNmRhYmUyMmE5YzQzOTFkYWE4Zg==
5
5
  data.tar.gz: !binary |-
6
- ZGZkYTFlMWI2N2Q1OTMzOGIxYzQ1MjBlNDRmODk2YTY0NjJmOTFiMw==
6
+ NTBlOTUyOWU2YWMwM2JlMzQwZTJjMjQxZjc3MzE5MjgxMzJmZDJhNQ==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- Y2I4YTNhYjI4YjQwY2VjNDVlY2FiMjQwNTU2NjdiY2ZjNWUwNzA1ZjE3MGQ1
10
- MTdhMDlhNzMxZDU0Yjc2OTBlMWIyMTkyYWIxZjM2Mzc1MTFiYWYyOTI0ZTA4
11
- MzA0MDMwNmI0M2RiYjY2ZDgzOTc3YjU2NDZjZDQ2ODBhNjVjNTQ=
9
+ YThjZjU0MTk3NDBjN2RlZWI1Y2MxOTZkZWNmN2FiZmI3NWRkZWUyNmY4YTU1
10
+ NDVmYTNjMDVjMGU5ZDkzNGQ3OTg3M2M3ZTcyMGM5Njg1NDhmMjkyODIwMTdi
11
+ OTQyMTc0Y2UxNjI0MzA2MzA1NmExYTRmM2Y4MGU3YzZlMzM1NTU=
12
12
  data.tar.gz: !binary |-
13
- OWQxNGY1MTM5MTAzNTQxZTA3MGZjNTFmY2I4NjhjMmEyZDZmMzE4ODM3YzE4
14
- ZjBmZTI5MDkzNmIxY2U2ZTEzZWRiNjczMjBlMDQ5OWUyZjY3MGQ3MmMzOTFl
15
- ODJiMjU1Y2M4ODVmNzViNDM2NDgwNjA3NWFjNmUyNWFhOGU3ODY=
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 compile <dir> - reads pxg.json from directory and resolves it
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
- puts "processing #{core_path}"
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
- ns_src = conf['namespace']['src']
34
- ns_target = conf['namespace']['target']
35
- puts "refactoring #{core_path}"
36
- self.find_and_replace core_path, ns_src, ns_target
37
- self.find_and_replace core_path, ns_src.capitalize, ns_target.capitalize
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
- dirpath = args[0].sub(/(\/)+$/,'')+'/';
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 'fin'
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pxg
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - srcspider