pagiii 0.0.10 → 0.1.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
  SHA256:
3
- metadata.gz: 7755458ae3c0f870ffa2ce9a4b399af7e63b27434f519f4b234105de4012dea5
4
- data.tar.gz: 1f776e5bd611222b26a6a42896176ff4860213a5b18e2cac902fbc3d59265740
3
+ metadata.gz: cfaa4ea7a12fa55eb6c25f09edd7d7af72cb0cb941ca6484d01771a15f6585b9
4
+ data.tar.gz: 39ef43287e308e86601181ef3ed9cac9626344fe974ae63eda91c28d46c24635
5
5
  SHA512:
6
- metadata.gz: 79cd11e255f1b395896422be70bf2a9e1fcc421508ff03c0fb549a14a3bfadf6399a667e337cd69d292b0498a7a9b978844bfc6aea29eac6fcbefcfe24231a4f
7
- data.tar.gz: f1fdde170d73890991b3cc26a4ca50ad4d7ebc9f798f4eeaa919a665a184f8cf2fe36a21737d485199ba2334436ac2eb491a81ce9489bac9c164b3a7d69e66ff
6
+ metadata.gz: b7e04eb945f09eb79f4e11b0de238cc0c84a0c140aa2644e9e140018d297624bb907cb3abb3577064e0223708ad20f5d566e02c47bee9b099191b254b16cf5c5
7
+ data.tar.gz: f0cc199c4f1905f7bc0ba84f68d202a64ea36e2e26c14a4d4497db909b6599a97bbd5717645bc18edd43ab5934f2e7fba3f105c36e275caf04f1301172bb3100
data/bin/pagiii CHANGED
@@ -19,7 +19,7 @@ secret_id = 'WlENailhg7KEbZqXXwX4Y470HYGL8-U2af_bOZGVWeQ'
19
19
  redirect_uri = 'http://localhost:7654'
20
20
  scope = 'read_theme write_theme delete_theme'
21
21
 
22
- program :version, '0.0.10'
22
+ program :version, '0.1.2'
23
23
  program :description, 'Pagiii CLI'
24
24
 
25
25
 
@@ -49,7 +49,7 @@ def check_authorized(response)
49
49
  end
50
50
  end
51
51
 
52
- def update_config(site_name, token)
52
+ def update_config(email, password)
53
53
  dir = "#{Dir.home}/.pagiii"
54
54
  FileUtils.mkdir_p(dir) unless Dir.exists?(dir)
55
55
  file = File.join(dir, 'config.json')
@@ -57,19 +57,21 @@ def update_config(site_name, token)
57
57
  if File.exists?(file)
58
58
  hash = JSON.parse(IO.read(file))
59
59
  end
60
- hash[site_name] = token
60
+ hash[:email] = email
61
+ hash[:password] = password
62
+
61
63
  File.open(file, 'w+') do |f|
62
64
  f.write(hash.to_json)
63
65
  end
64
66
  end
65
67
 
66
- def read_config(site_name)
68
+ def read_config
67
69
  dir = "#{Dir.home}/.pagiii"
68
70
  return nil unless Dir.exists?(dir)
69
71
  file = File.join(dir, 'config.json')
70
72
  return nil unless File.exists?(file)
71
73
  hash = JSON.parse(IO.read(file))
72
- hash[site_name]
74
+ hash
73
75
  end
74
76
 
75
77
  command :help do |c|
@@ -78,39 +80,66 @@ command :help do |c|
78
80
  end
79
81
  end
80
82
 
83
+ command 'login' do |c|
84
+ c.action do
85
+ email = ask("Email: ")
86
+ password = ask("Password: "){|q| q.echo = '*'}
87
+ url = "#{root_api}/api/v1/admin/auth"
88
+ conn = Faraday.new(
89
+ url: url,
90
+ params: {},
91
+ headers: {
92
+ 'Content-Type' => 'application/json'
93
+ }
94
+ )
95
+ response = conn.post do |req|
96
+ req.body = {email: email, password: password}.to_json
97
+ end
98
+ if response.status == 200
99
+ api_token = JSON.parse(response.body)['api_token']
100
+ update_config(email, api_token)
101
+ puts "logged as #{email}"
102
+ else
103
+ message = JSON.parse(response.body)['message']
104
+ say "login failed http [#{message}]"
105
+ end
106
+ end
107
+ end
108
+
109
+ command 'site:list' do |c|
110
+ c.action do
111
+ user = read_config
112
+ site_info = Pagiii::SiteInfo.new(token: user['password'], root_api: root_api)
113
+ site_info.list
114
+ end
115
+ end
116
+
81
117
 
82
118
  # bundle exec ruby pagiii.rb theme:sync --site=dokumentasi --theme=doc
83
119
  command 'theme:sync' do |c|
84
120
  c.option '--theme STRING', String, 'Theme name'
85
121
  c.option '--site STRING', String, 'Site name'
86
122
  c.action do |args, options|
87
- if options.theme.nil?
88
- say "please specify theme name using --theme option"
89
- exit(false)
90
- elsif options.site.nil?
123
+ if options.site.nil?
91
124
  say "please specify site name using --site option"
92
125
  exit(false)
93
126
  end
94
- token = read_config(options.site)
95
- theme = Pagiii::ThemeSync.new(token: token, root_api: root_api)
96
- theme.sync_all(options.theme)
127
+ user = read_config
128
+ theme = Pagiii::ThemeSync.new(token: user['password'], root_api: root_api)
129
+ theme.sync_all(options.site)
97
130
  end
98
131
  end
99
132
 
100
133
  command 'theme:watch' do |c|
101
- c.option '--site STRING', String, 'Site name'
102
- c.option '--theme STRING', String, 'Theme name'
103
- c.action do |args, options|
104
- if options.theme.nil?
105
- say "please specify theme name using --theme option"
106
- exit(false)
107
- elsif options.site.nil?
134
+ c.option '--site STRING', String, 'Site name'
135
+ c.action do |args, options|
136
+ if options.site.nil?
108
137
  say "please specify site name using --site option"
109
138
  exit(false)
110
139
  end
111
- token = read_config(options.site)
112
- theme_sync = Pagiii::ThemeSync.new(token: token, root_api: root_api)
113
- theme_sync.watch(options.theme)
140
+ user = read_config
141
+ theme_sync = Pagiii::ThemeSync.new(token: user['password'], root_api: root_api)
142
+ theme_sync.watch(options.site)
114
143
  end
115
144
  end
116
145
 
@@ -121,13 +150,13 @@ command 'theme:create' do |c|
121
150
  c.option '--theme STRING', String, 'Theme name'
122
151
 
123
152
  c.action do |args, options|
124
- token = read_config(options.site)
153
+ user = read_config
125
154
  if options.theme.nil?
126
155
  say "please specify theme name using --theme option"
127
156
  else
128
157
  say "Create theme #{options.theme}"
129
- theme_sync = Pagiii::ThemeSync.new(token: token, root_api: root_api)
130
- response = theme_sync.create_theme(options.theme)
158
+ theme_sync = Pagiii::ThemeSync.new(token: user['password'], root_api: root_api)
159
+ response = theme_sync.create_theme(options.site, options.theme)
131
160
 
132
161
  if response.status == 200
133
162
  say "theme created"
@@ -149,10 +178,10 @@ command 'theme:pull' do |c|
149
178
  elsif options.site.nil?
150
179
  say "please provide site name"
151
180
  else
152
- token = read_config(options.site)
181
+ user = read_config
153
182
  say "Pull theme #{options.theme}"
154
- theme_sync = Pagiii::ThemeSync.new(token: token, root_api: root_api)
155
- theme_sync.pull_theme(options.theme)
183
+ theme_sync = Pagiii::ThemeSync.new(token: user['password'], root_api: root_api)
184
+ theme_sync.pull_theme(options.site, options.theme)
156
185
  end
157
186
  end
158
187
  end
@@ -165,9 +194,10 @@ command 'theme:list' do |c|
165
194
  if options.site.nil?
166
195
  say "please provide name using --site"
167
196
  else
168
- token = read_config(options.site)
169
- theme_sync = Pagiii::ThemeSync.new(token: token, root_api: root_api)
170
- theme_sync.list_themes
197
+ user = read_config
198
+
199
+ theme_sync = Pagiii::ThemeSync.new(token: user['password'], root_api: root_api)
200
+ theme_sync.list_themes(options.site)
171
201
  end
172
202
  end
173
203
  end
@@ -184,10 +214,10 @@ command 'theme:delete' do |c|
184
214
  say "please provide site name using --site"
185
215
  else
186
216
  say "Delete theme #{options.theme}"
187
- token = read_config(options.site)
217
+ user = read_config
188
218
 
189
- theme_sync = Pagiii::ThemeSync.new(token: token, root_api: root_api)
190
- theme_sync.delete_theme(options.theme)
219
+ theme_sync = Pagiii::ThemeSync.new(token: user['password'], root_api: root_api)
220
+ theme_sync.delete_theme(options.site, options.theme)
191
221
  end
192
222
  end
193
223
  end
@@ -205,9 +235,9 @@ command 'theme:set_current' do |c|
205
235
  say "please provide name using --site"
206
236
  else
207
237
  say "Set current theme of #{options.site} to #{options.theme}"
208
- token = read_config(options.site)
209
- theme_sync = Pagiii::ThemeSync.new(token: token, root_api: root_api)
210
- theme_sync.set_current_theme(options.theme)
238
+ user = read_config
239
+ theme_sync = Pagiii::ThemeSync.new(token: user['password'], root_api: root_api)
240
+ theme_sync.set_current_theme(options.site, options.theme)
211
241
  end
212
242
  end
213
243
  end
@@ -0,0 +1,31 @@
1
+ module Pagiii
2
+ class SiteInfo
3
+ def initialize(token:, root_api:)
4
+ @token = token
5
+ @root_api = root_api
6
+ end
7
+
8
+ def list
9
+ conn = Faraday.new(
10
+ url: "#{@root_api}/api/v1/admin/sites",
11
+ headers: {
12
+ 'Content-Type' => 'application/json',
13
+ 'api-token' => @token
14
+ }
15
+ )
16
+ response = conn.get
17
+ # check_authorized(response)
18
+ if response.status == 200
19
+ organizations = JSON.parse(response.body)
20
+ organizations.each do |o|
21
+ puts "Organization: #{o['name']}"
22
+ o['sites'].each do |site|
23
+ puts " #{site['name']}"
24
+ end
25
+ end
26
+ else
27
+ say "unknown error"
28
+ end
29
+ end
30
+ end
31
+ end
@@ -10,12 +10,12 @@ class Pagiii::ThemeSync
10
10
  @root_api = root_api
11
11
  end
12
12
 
13
- def list_themes
13
+ def list_themes(site_name)
14
14
  conn = Faraday.new(
15
- url: "#{root_api}/api/v1/admin/themes",
15
+ url: "#{root_api}/api/v1/admin/themes?site_name=#{site_name}",
16
16
  headers: {
17
17
  'Content-Type' => 'application/json',
18
- 'Authorization' => "Bearer #{@token}"
18
+ 'api-token' => @token
19
19
  }
20
20
  )
21
21
  response = conn.get
@@ -23,9 +23,9 @@ class Pagiii::ThemeSync
23
23
  if response.status == 200
24
24
  hash = JSON.parse(response.body)
25
25
  say "List themes at #{hash['site']['name']}"
26
- say "--------------------------------------"
26
+ say "--------------------------------------"
27
27
  hash['themes'].each do |theme|
28
- say " - #{theme['name']}"
28
+ say " - #{theme['name']} #{(theme['id'] == hash['current']['id'])? "(active)" : '' }"
29
29
  end
30
30
  else
31
31
  say "error"
@@ -33,14 +33,14 @@ class Pagiii::ThemeSync
33
33
  end
34
34
 
35
35
 
36
- def sync_file(theme_name, file)
36
+ def sync_file(site, theme_name, file)
37
37
  #puts "sync #{file}"
38
38
  conn = Faraday.new(
39
39
  url: @root_api,
40
40
  params: {param: '1'},
41
41
  headers: {
42
42
  'Content-Type' => 'application/json',
43
- 'Authorization' => "Bearer #{@token}"
43
+ 'api-token' => @token
44
44
  }
45
45
  )
46
46
 
@@ -52,12 +52,12 @@ class Pagiii::ThemeSync
52
52
  else
53
53
  data = IO.read(file)
54
54
  end
55
- response = get_theme_by_name(name: theme_name)
55
+ response = get_theme_by_name(site: site, name: theme_name)
56
56
 
57
57
  check_authorized(response)
58
58
  theme_id = JSON.parse(response.body)['theme']['id']
59
59
 
60
- response = conn.post("/api/v1/admin/themes/#{theme_id}/assets") do |req|
60
+ response = conn.post("/api/v1/admin/themes/#{theme_id}/assets?site_name=#{site}") do |req|
61
61
  req.params['limit'] = 100
62
62
  req.body = {
63
63
  key: get_asset_key(file),
@@ -68,9 +68,9 @@ class Pagiii::ThemeSync
68
68
 
69
69
 
70
70
 
71
- def sync_delete(theme_name, file)
71
+ def sync_delete(site, theme_name, file)
72
72
  puts "deleteing #{file}"
73
- response = get_theme_by_name(name: theme_name)
73
+ response = get_theme_by_name(site: site, name: theme_name)
74
74
  check_authorized(response)
75
75
  theme_id = JSON.parse(response.body)['theme']['id']
76
76
 
@@ -79,15 +79,15 @@ class Pagiii::ThemeSync
79
79
  params: {param: '1'},
80
80
  headers: {
81
81
  'Content-Type' => 'application/json',
82
- 'Authorization' => "Bearer #{@token}"
82
+ 'api-token' => @token
83
83
  }
84
84
  )
85
- response = conn.delete("/api/v1/admin/themes/#{theme_id}/assets?key=#{get_asset_key(file)}")
85
+ response = conn.delete("/api/v1/admin/themes/#{theme_id}/assets?key=#{get_asset_key(file)}&site_name=#{site}")
86
86
  end
87
87
 
88
- def delete_remote(theme, asset_key)
88
+ def delete_remote(site, theme, asset_key)
89
89
  puts "deleting #{asset_key}"
90
- response = get_theme_by_name(name: theme)
90
+ response = get_theme_by_name(site: site, name: theme)
91
91
  check_authorized(response)
92
92
  theme_id = JSON.parse(response.body)['theme']['id']
93
93
 
@@ -96,25 +96,25 @@ class Pagiii::ThemeSync
96
96
  params: {param: '1'},
97
97
  headers: {
98
98
  'Content-Type' => 'application/json',
99
- 'Authorization' => "Bearer #{@token}"
99
+ 'api-token' => @token
100
100
  }
101
101
  )
102
- response = conn.delete("/api/v1/admin/themes/#{theme_id}/assets?key=#{asset_key}")
102
+ response = conn.delete("/api/v1/admin/themes/#{theme_id}/assets?key=#{asset_key}&site_name=#{site}")
103
103
  end
104
104
 
105
- def compare_and_delete(theme)
105
+ def compare_and_delete(site, theme)
106
106
  conn = Faraday.new(
107
107
  url: @root_api,
108
108
  params: {param: '1'},
109
109
  headers: {
110
110
  'Content-Type' => 'application/json',
111
- 'Authorization' => "Bearer #{@token}"
111
+ 'api-token' => @token
112
112
  }
113
113
  )
114
- response = get_theme_by_name(name: theme)
114
+ response = get_theme_by_name(site: site, name: theme)
115
115
  check_authorized(response)
116
116
  theme_id = JSON.parse(response.body)['theme']['id']
117
- response = conn.get("/api/v1/admin/themes/#{theme_id}/assets")
117
+ response = conn.get("/api/v1/admin/themes/#{theme_id}/assets?site_name=#{site}")
118
118
  remote_assets = JSON.parse(response.body)['assets'].map{|x| x['asset_key']}
119
119
 
120
120
  local_assets = []
@@ -130,7 +130,7 @@ class Pagiii::ThemeSync
130
130
 
131
131
  assets_to_be_deleted = remote_assets - local_assets
132
132
  assets_to_be_deleted.each do |asset_key|
133
- delete_remote(theme, asset_key)
133
+ delete_remote(site, theme, asset_key)
134
134
  end
135
135
  end
136
136
 
@@ -142,15 +142,17 @@ class Pagiii::ThemeSync
142
142
  "#{dir}/#{file}"
143
143
  end
144
144
 
145
- def sync_all(theme)
146
- compare_and_delete(theme)
145
+ def sync_all(site)
146
+ response = current_theme(site: site)
147
+ theme = JSON.parse(response.body)['theme']['name']
148
+ compare_and_delete(site, theme)
147
149
  Dir.entries('.').each do |dir|
148
150
  if ALLOWED_DIRS.include?(dir) && File.directory?(dir)
149
151
  puts "--#{dir}"
150
152
  Dir.entries(dir).reject{|x| [".", ".."].include?(x)}.each do |file|
151
153
  print "----#{file}"
152
154
  file_path = "./#{dir}/#{file}"
153
- resp = sync_file(theme, file_path)
155
+ resp = sync_file(site, theme, file_path)
154
156
  if resp.status == 200
155
157
  puts " [OK]"
156
158
  else
@@ -162,44 +164,56 @@ class Pagiii::ThemeSync
162
164
  end
163
165
  end
164
166
 
165
- def watch(theme_name)
167
+ def watch(site)
168
+ response = current_theme(site: site)
169
+ theme_name = JSON.parse(response.body)['theme']['name']
166
170
  Filewatcher.new(ALLOWED_DIRS).watch do |changes|
167
171
  changes.each do |filename, event|
168
172
  puts "#{filename} #{event}"
169
173
  if event == :updated || event == :created
170
- sync_file(theme_name, filename)
174
+ sync_file(site, theme_name, filename)
171
175
  elsif event == :deleted
172
- sync_delete(theme_name, filename)
176
+ sync_delete(site, theme_name, filename)
173
177
  end
174
178
  end
175
179
  end
176
180
  end
177
181
 
178
- def get_theme_by_name(name:)
182
+ def get_theme_by_name(site:, name:)
179
183
  conn = Faraday.new(
180
- url: "#{@root_api}/api/v1/admin/themes/by_name?name=#{name}",
184
+ url: "#{@root_api}/api/v1/admin/themes/by_name?name=#{name}&site_name=#{site}",
181
185
  headers: {
182
186
  'Content-Type' => 'application/json',
183
- 'Authorization' => "Bearer #{@token}"
187
+ 'api-token' => @token
188
+ }
189
+ )
190
+ response = conn.get
191
+ end
192
+
193
+ def current_theme(site:)
194
+ conn = Faraday.new(
195
+ url: "#{@root_api}/api/v1/admin/themes/current?site_name=#{site}",
196
+ headers: {
197
+ 'Content-Type' => 'application/json',
198
+ 'api-token' => @token
184
199
  }
185
200
  )
186
-
187
201
  response = conn.get
188
202
  end
189
203
 
190
204
 
191
205
 
192
- def pull_theme(name)
193
- response = get_theme_by_name(name: name)
206
+ def pull_theme(site, name)
207
+ response = get_theme_by_name(site: site, name: name)
194
208
  check_authorized(response)
195
209
  parsed_response = JSON.parse(response.body)
196
210
 
197
211
  conn = Faraday.new(
198
- url: "#{root_api}/api/v1/admin/themes/#{parsed_response['theme']['id']}/pull",
212
+ url: "#{root_api}/api/v1/admin/themes/#{parsed_response['theme']['id']}/pull?site_name=#{site}",
199
213
  params: {param: '1'},
200
214
  headers: {
201
215
  'Content-Type' => 'application/json',
202
- 'Authorization' => "Bearer #{@token}"
216
+ 'api-token' => @token
203
217
  }
204
218
  )
205
219
  response = conn.get
@@ -208,7 +222,7 @@ class Pagiii::ThemeSync
208
222
 
209
223
  assets.each do |asset|
210
224
  say "downloading #{asset['asset_key']}"
211
- response = download_asset(theme_id: parsed_response['theme']['id'], key: asset['asset_key'])
225
+ response = download_asset(site: site, theme_id: parsed_response['theme']['id'], key: asset['asset_key'])
212
226
  path = File.split(asset['asset_key'])
213
227
  FileUtils.mkdir(path.first) unless Dir.exists?(path.first)
214
228
  File.open(asset['asset_key'], 'wb') do |f|
@@ -223,28 +237,28 @@ class Pagiii::ThemeSync
223
237
  end
224
238
  end
225
239
 
226
- def delete_theme(name)
227
- response = get_theme_by_name(name: name)
240
+ def delete_theme(site, name)
241
+ response = get_theme_by_name(site: site, name: name)
228
242
  check_authorized(response)
229
243
  parsed_response = JSON.parse(response.body)
230
244
  conn = Faraday.new(
231
- url: "#{root_api}/api/v1/admin/themes/#{parsed_response['theme']['id']}",
245
+ url: "#{root_api}/api/v1/admin/themes/#{parsed_response['theme']['id']}?site_name=#{site}",
232
246
  params: {param: '1'},
233
247
  headers: {
234
248
  'Content-Type' => 'application/json',
235
- 'Authorization' => "Bearer #{@token}"
249
+ 'api-token' => @token
236
250
  }
237
251
  )
238
252
  response = conn.delete
239
253
  end
240
254
 
241
- def create_theme(name)
255
+ def create_theme(site, name)
242
256
  conn = Faraday.new(
243
- url: "#{root_api}/api/v1/admin/themes",
257
+ url: "#{@root_api}/api/v1/admin/themes?site_name=#{site}",
244
258
  params: {param: '1'},
245
259
  headers: {
246
260
  'Content-Type' => 'application/json',
247
- 'Authorization' => "Bearer #{@token}"
261
+ 'api-token' => @token
248
262
  }
249
263
  )
250
264
  response = conn.post do |req|
@@ -256,16 +270,16 @@ class Pagiii::ThemeSync
256
270
  end
257
271
  end
258
272
 
259
- def set_current_theme(name)
260
- response = get_theme_by_name(name: name)
273
+ def set_current_theme(site, name)
274
+ response = get_theme_by_name(site: site, name: name)
261
275
  check_authorized(response)
262
276
  parsed_response = JSON.parse(response.body)
263
277
  conn = Faraday.new(
264
- url: "#{root_api}/api/v1/admin/themes/#{parsed_response['theme']['id']}/set_current",
278
+ url: "#{root_api}/api/v1/admin/themes/#{parsed_response['theme']['id']}/set_current?site_name=#{site}",
265
279
  params: {param: '1'},
266
280
  headers: {
267
281
  'Content-Type' => 'application/json',
268
- 'Authorization' => "Bearer #{@token}"
282
+ 'api-token' => @token
269
283
  }
270
284
  )
271
285
  response = conn.patch do |req|
@@ -275,13 +289,13 @@ class Pagiii::ThemeSync
275
289
 
276
290
  private
277
291
 
278
- def download_asset(theme_id:, key:)
292
+ def download_asset(site:,theme_id:, key:)
279
293
  conn = Faraday.new(
280
- url: "#{root_api}/api/v1/admin/themes/#{theme_id}/assets/download?key=#{key}",
294
+ url: "#{root_api}/api/v1/admin/themes/#{theme_id}/assets/download?key=#{key}&site_name=#{site}",
281
295
  params: {param: '1'},
282
296
  headers: {
283
297
  'Content-Type' => 'application/json',
284
- 'Authorization' => "Bearer #{@token}"
298
+ 'api-token' => @token
285
299
  }
286
300
  )
287
301
  response = conn.get
data/lib/pagiii.rb CHANGED
@@ -3,3 +3,4 @@ module Pagiii
3
3
  end
4
4
 
5
5
  require 'pagiii/theme_sync'
6
+ require 'pagiii/site_info'
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pagiii
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sugiarto
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-06-24 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2023-07-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: faraday
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  description: CLI to support themes on pagiii CMS
14
28
  email:
15
29
  - ugidmtest@gmail.com
@@ -21,6 +35,7 @@ files:
21
35
  - bin/pagiii
22
36
  - lib/pagiii.rb
23
37
  - lib/pagiii/info.rb
38
+ - lib/pagiii/site_info.rb
24
39
  - lib/pagiii/theme_sync.rb
25
40
  homepage: http://rubygems.org/gems/pagiii
26
41
  licenses: