pagiii 0.0.10 → 0.1.2

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 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: