cloudwalk 0.0.1
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 +7 -0
- data/lib/cloudwalk.rb +8 -0
- data/lib/cloudwalk/config.rb +16 -0
- data/lib/cloudwalk/cw_file_json.rb +271 -0
- data/lib/cloudwalk/manager_exception.rb +4 -0
- data/lib/cloudwalk/posxml_application.rb +44 -0
- data/lib/cloudwalk/posxml_version.rb +57 -0
- data/lib/cloudwalk/rake_task.rb +71 -0
- metadata +79 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 79963e617cac091d5ef17808d7026f188063de7a
|
4
|
+
data.tar.gz: 86e13a022581f855401797c1f3e7c9ba603ef2f5
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 7f0a5e91a63c3ee755dd745381c44fb060bca2d7c393d048a5bf0b4e2ef269d5d0733b4c3824f54557570f2ccd3d2531490151e851040e94e45466c0d7b76186
|
7
|
+
data.tar.gz: 1de02728f1b568968c1194732f182b5eaa57379867d101a617291d6b138ede5cac39a2619e882158bbc543d99396bf09ff2a9108ce8ed52715c9e543326beac8
|
data/lib/cloudwalk.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
module Cloudwalk
|
2
|
+
class Config
|
3
|
+
def self.token
|
4
|
+
@token ||= `cloudwalk config token`.chomp
|
5
|
+
raise ManagerException.new("Token not found, try 'cloudwalk login'") if @token.empty?
|
6
|
+
@token
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.host
|
10
|
+
@host ||= `cloudwalk config host`.chomp
|
11
|
+
raise ManagerException.new("Token not found, try 'cloudwalk login'") if @host.empty?
|
12
|
+
@host
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
@@ -0,0 +1,271 @@
|
|
1
|
+
#lib/pos/base.rb: json_versions = `curl -k -X GET \"https://#{host}/v1/apps/posxml/#{cw_main_id}/versions?access_token=#{token}\"`
|
2
|
+
#lib/pos/package_util.rb: json_version = `curl -k -X GET \"https://#{host}/v1/apps/posxml/#{app_id}/versions/#{version_id}?access_token=#{token}\"`
|
3
|
+
#lib/pos/package_util.rb: app_json = `curl -k -X GET \"https://#{host}/v1/apps/posxml/#{app_id}/?access_token=#{token}\"`
|
4
|
+
#lib/pos/package_util.rb: file_json = `curl -k -X GET \"https://#{host}/v1/files/#{file_id}/?access_token=#{token}\"`
|
5
|
+
#
|
6
|
+
# - Lock is a file that contains the id of applications.
|
7
|
+
#
|
8
|
+
# What to do:
|
9
|
+
#
|
10
|
+
# 1. Check if lock exists and create it.
|
11
|
+
# - If not update create .lock by checking applications
|
12
|
+
# 2. Check if all applications has an id.
|
13
|
+
#
|
14
|
+
# Commands
|
15
|
+
# - "cloudwalk app upgrade-version cw_main.xml 1.10.10..1.2.0"
|
16
|
+
# - Can be used for a module
|
17
|
+
# - Change Cwfile.json and Cwfile.json.lock
|
18
|
+
# - rake cloudwalk:deploy
|
19
|
+
# - Read Cwfile.json
|
20
|
+
# - Check if apps and versions are ok
|
21
|
+
|
22
|
+
module Cloudwalk
|
23
|
+
class CwFileJson
|
24
|
+
CW_FILE_LOCK_PATH = "./Cwfile.json.lock"
|
25
|
+
CW_FILE_PATH = "./Cwfile.json"
|
26
|
+
|
27
|
+
attr_accessor :cwfile, :lock
|
28
|
+
|
29
|
+
def self.load_cwfile_lock
|
30
|
+
JSON.parse(File.read(CW_FILE_LOCK_PATH))
|
31
|
+
rescue Errno::ENOENT
|
32
|
+
false
|
33
|
+
rescue JSON::ParserError
|
34
|
+
puts "Error to read Cwfile.json.lock"
|
35
|
+
false
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.load_cwfile
|
39
|
+
JSON.parse(File.read(CW_FILE_PATH))
|
40
|
+
rescue Errno::ENOENT
|
41
|
+
puts "Cwfile.json not found"
|
42
|
+
false
|
43
|
+
rescue JSON::ParserError
|
44
|
+
puts "Error to read Cwfile.json"
|
45
|
+
false
|
46
|
+
end
|
47
|
+
|
48
|
+
# Load Scenarios
|
49
|
+
# 1. Pure true
|
50
|
+
# - Cwfile.json exists.
|
51
|
+
# - Cwfile.json.lock exists.
|
52
|
+
# - json and lock are the same
|
53
|
+
# R: Just execute :)
|
54
|
+
#
|
55
|
+
# 2.
|
56
|
+
# - Cwfile.json exists.
|
57
|
+
# - Cwfile.json.lock exists.
|
58
|
+
# - json and lock aren't the same
|
59
|
+
#
|
60
|
+
# Response:
|
61
|
+
# WARN: Warning Cwfile.json and Cwfile.json.lock are different, please fix, follow differences:
|
62
|
+
#
|
63
|
+
# User Actions:
|
64
|
+
# - The user can delete Cwfile.json.lock
|
65
|
+
# - The user can fix Cwfile.json
|
66
|
+
#
|
67
|
+
# Scenarios:
|
68
|
+
# - The user could create a version on manager and just updated Cwfile.json, instead of delete Cwfile.json.lock
|
69
|
+
# - Maybe create an update action, rake cloudwalk:update
|
70
|
+
# - The user
|
71
|
+
#
|
72
|
+
# 3.
|
73
|
+
# - Cwfile.json exists.
|
74
|
+
# - Cwfile.json.lock not exists.
|
75
|
+
# R: Create Cwfile.json.lock
|
76
|
+
#
|
77
|
+
# 4.
|
78
|
+
# - Cwfile.json not exists.
|
79
|
+
# - Cwfile.json.lock not exists.
|
80
|
+
# R: ASK: Cwfile.json not exists, should I create a skeleton or get the last versions available for the files we have here?
|
81
|
+
def self.setup(without_lock_check = false)
|
82
|
+
if self.cwfile = load_cwfile
|
83
|
+
if without_lock_check
|
84
|
+
true
|
85
|
+
elsif CwFileJson.exists_lock?
|
86
|
+
if self.lock = load_cwfile_lock
|
87
|
+
difference = self.compare
|
88
|
+
if difference.empty?
|
89
|
+
true
|
90
|
+
else
|
91
|
+
puts "Warning Cwfile.json and Cwfile.json.lock are different, follow differences:"
|
92
|
+
puts difference
|
93
|
+
false
|
94
|
+
end
|
95
|
+
end
|
96
|
+
else
|
97
|
+
persist_lock!
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
def self.delete_lock!
|
103
|
+
FileUtils.rm_rf CW_FILE_LOCK_PATH
|
104
|
+
end
|
105
|
+
|
106
|
+
def self.persist_lock!
|
107
|
+
File.open(CW_FILE_LOCK_PATH, "w") {|f| f.write(self.lock_build.to_json) }
|
108
|
+
end
|
109
|
+
|
110
|
+
def self.lock_build
|
111
|
+
all = Cloudwalk::PosxmlApplication.all
|
112
|
+
config = []
|
113
|
+
self.cwfile["apps"].each do |app_local|
|
114
|
+
app_remote = all.find { |app_json| app_json["posxml_app"]["name"] == xml2posxml(app) }
|
115
|
+
app_posxml = app_remote["posxml_app"]
|
116
|
+
versions = Cloudwalk::PosxmlVersion.all(app_posxml["id"])
|
117
|
+
version = versions.find { |json| json["app_version"]["number"] == version }
|
118
|
+
|
119
|
+
if version && version = version["app_version"]
|
120
|
+
version_detail = PosxmlApplication::Version.get(app_posxml["id"], version["id"])
|
121
|
+
config << build_application(app_posxml, version, version_detail["app_version"]["module_ids"])
|
122
|
+
else
|
123
|
+
# TODO Version not found, what to do?
|
124
|
+
end
|
125
|
+
end
|
126
|
+
self.lock = config
|
127
|
+
end
|
128
|
+
|
129
|
+
def self.build_module(mod)
|
130
|
+
response = PosxmlApplication::Version.get(mod["app_id"], mod["version_id"])
|
131
|
+
module_version = response["app_version"]
|
132
|
+
{
|
133
|
+
"name" => PosxmlApplication::Apps.get_name(module_version["app_id"]),
|
134
|
+
"version" => module_version["number"],
|
135
|
+
"id" => module_version["app_id"],
|
136
|
+
"version_id" => module_version["id"]
|
137
|
+
}
|
138
|
+
end
|
139
|
+
|
140
|
+
def self.build_application(posxml_app, version_remote, modules_remote)
|
141
|
+
{
|
142
|
+
"name" => posxml_app["name"],
|
143
|
+
"id" => posxml_app["id"],
|
144
|
+
"modules" => modules_remote.collect {|mod| build_module(mod)},
|
145
|
+
"version" => version_remote["number"],
|
146
|
+
"version_id" => version_remote["id"]
|
147
|
+
}
|
148
|
+
|
149
|
+
#old = config.find {|app| app["id"] == posxml_app["id"]}
|
150
|
+
|
151
|
+
#if old
|
152
|
+
#config.delete(old)
|
153
|
+
#config << new
|
154
|
+
#else
|
155
|
+
#config << new
|
156
|
+
#end
|
157
|
+
end
|
158
|
+
|
159
|
+
# TODO Check CRC
|
160
|
+
def self.deploy(outs)
|
161
|
+
outs.each do |path|
|
162
|
+
p path
|
163
|
+
posxml = path.split("/").last
|
164
|
+
#app = posxml2xml(posxml)
|
165
|
+
|
166
|
+
app_lock = self.lock.find {|config| config["name"] == posxml }
|
167
|
+
|
168
|
+
unless app_lock
|
169
|
+
self.lock.each do |application|
|
170
|
+
app_lock = application["modules"].find {|config| config["name"] == posxml }
|
171
|
+
break if app_lock
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
175
|
+
Cloudwalk::PosxmlVersion.update(
|
176
|
+
app_lock["id"], app_lock["version_id"], File.read(path)
|
177
|
+
)
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
181
|
+
def self.exists?
|
182
|
+
File.exists? CW_FILE_PATH
|
183
|
+
end
|
184
|
+
|
185
|
+
def self.exists_lock?
|
186
|
+
File.exists? CW_FILE_LOCK_PATH
|
187
|
+
end
|
188
|
+
|
189
|
+
def self.posxml2xml(str)
|
190
|
+
str.sub(".posxml", ".xml")
|
191
|
+
end
|
192
|
+
|
193
|
+
def self.xml2posxml(str)
|
194
|
+
str.sub(".xml", ".posxml")
|
195
|
+
end
|
196
|
+
|
197
|
+
# TODO future!
|
198
|
+
|
199
|
+
def self.compare
|
200
|
+
cwfile_list = self.cwfile.inject({}) do |hash, app|
|
201
|
+
hash[app["name"]] = app["modules"].inject({}) do |hash_m, app_module|
|
202
|
+
hash_m[app_module[0]] = app_module[1]
|
203
|
+
hash_m
|
204
|
+
end
|
205
|
+
hash
|
206
|
+
end
|
207
|
+
|
208
|
+
lock_list = self.lock.inject({}) do |hash, app|
|
209
|
+
hash[posxml2xml(app["name"])] = app["modules"].inject({}) do |hash_m, app_module|
|
210
|
+
hash_m[posxml2xml(app_module["name"])] = app_module["version"]
|
211
|
+
hash_m
|
212
|
+
end
|
213
|
+
hash
|
214
|
+
end
|
215
|
+
|
216
|
+
cwfile_list.to_a - lock_list.to_a
|
217
|
+
end
|
218
|
+
|
219
|
+
def compare_modules(local_app, module_ids)
|
220
|
+
local_module_app_ids = local_app["modules"].inject([]) do |mods, app|
|
221
|
+
mods << app["id"]
|
222
|
+
end
|
223
|
+
|
224
|
+
module_app_ids = module_ids.inject([]) do |mods, app|
|
225
|
+
mods << app["app_id"]
|
226
|
+
end
|
227
|
+
|
228
|
+
local_creation = local_module_app_ids - module_app_ids
|
229
|
+
remote_creation = module_app_ids - local_module_app_ids
|
230
|
+
|
231
|
+
if local_creation.nil?
|
232
|
+
raise ApplicationConfigError.new("Application #{local_app["name"]}: Local modules are missing #{local_creation}")
|
233
|
+
end
|
234
|
+
|
235
|
+
if remote_creation.nil?
|
236
|
+
raise ApplicationConfigError.new("Application #{local_app["name"]}: Remote modules are missing #{local_creation}")
|
237
|
+
end
|
238
|
+
end
|
239
|
+
|
240
|
+
# curl -X GET "https://api-staging.cloudwalk.io/v1/apps/posxml?access_token=d79db7b1dc59c9c5a1f369478444625a0d1adef8"
|
241
|
+
# curl -X GET "https://manager.cloudwalk.io/v1/apps/posxml/3082/versions?access_token=d79db7b1dc59c9c5a1f369478444625a0d1adef8"
|
242
|
+
def update_apps(list, apps, config)
|
243
|
+
all = Cloudwalk::PosxmlApplication.all
|
244
|
+
list.each do |app, version|
|
245
|
+
local_app = apps.find { |json| json["name"] == app }
|
246
|
+
|
247
|
+
if app[-4..-1] == ".xml" # Check if is posxml application
|
248
|
+
remote_app = all.find { |app_json| app_json["posxml_app"]["name"] == xml2posxml(app) }
|
249
|
+
|
250
|
+
if remote_app
|
251
|
+
remote_posxml_app = remote_app["posxml_app"]
|
252
|
+
remote_versions = Cloudwalk::PosxmlVersion.all(remote_posxml_app["id"])
|
253
|
+
remote_version_json = remote_versions.find { |json| json["app_version"]["number"] == version }
|
254
|
+
|
255
|
+
if remote_version_json && (remote_version = remote_version_json["app_version"])
|
256
|
+
remote_version_detail = PosxmlApplication::Version.get(remote_posxml_app["id"], remote_version["id"])
|
257
|
+
# TODO: Check if application exists locally
|
258
|
+
build_application(local_app, config, remote_posxml_app, remote_version, remote_version_detail["app_version"]["module_ids"])
|
259
|
+
else
|
260
|
+
# TODO versions not found, what to do?
|
261
|
+
end
|
262
|
+
else
|
263
|
+
# TODO app not found, what to do?
|
264
|
+
end
|
265
|
+
else
|
266
|
+
# Ruby flow
|
267
|
+
end
|
268
|
+
end
|
269
|
+
end
|
270
|
+
end
|
271
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Cloudwalk
|
2
|
+
class PosxmlApplication
|
3
|
+
def self.token
|
4
|
+
Cloudwalk::Config.token
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.host
|
8
|
+
Cloudwalk::Config.host
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.all
|
12
|
+
if @apps
|
13
|
+
@apps
|
14
|
+
else
|
15
|
+
response = JSON.parse(Net::HTTP.get(URI("https://#{self.host}/v1/apps/posxml?access_token=#{self.token}&per_page=100")))
|
16
|
+
raise ManagerException.new(response["message"]) if response["message"]
|
17
|
+
|
18
|
+
total_pages = response["pagination"]["total_pages"].to_i
|
19
|
+
apps = response["posxmlapps"]
|
20
|
+
(total_pages - 1).times do |page|
|
21
|
+
url = "https://#{self.host}/v1/apps/posxml?access_token=#{self.token}&per_page=100&page=#{page+2}"
|
22
|
+
response = JSON.parse(Net::HTTP.get(URI(url)))
|
23
|
+
raise ManagerException.new(response["message"]) if response["message"]
|
24
|
+
|
25
|
+
apps.concat(response["posxmlapps"])
|
26
|
+
end
|
27
|
+
@apps = apps
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.get(id)
|
32
|
+
url = "https://#{self.host}/v1/apps/posxml/#{id}?access_token=#{self.token}"
|
33
|
+
response = JSON.parse(Net::HTTP.get(URI(url)))
|
34
|
+
raise ManagerException.new(response["message"]) if response["message"]
|
35
|
+
|
36
|
+
response["posxml_app"]
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.get_name(id)
|
40
|
+
get(id)["name"]
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
@@ -0,0 +1,57 @@
|
|
1
|
+
module Cloudwalk
|
2
|
+
class PosxmlVersion
|
3
|
+
def self.token
|
4
|
+
Cloudwalk::Config.token
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.host
|
8
|
+
Cloudwalk::Config.host
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.get_or_create(app, version)
|
12
|
+
response = JSON.parse(Net::HTTP.get(URI("https://#{self.host}/v1/apps/posxml/#{app_id}/versions?access_token=#{self.token}&per_page=100")))
|
13
|
+
raise ManagerException.new(response["message"]) if response["message"]
|
14
|
+
|
15
|
+
#TODO
|
16
|
+
#`curl -X GET "https://api-staging.cloudwalk.io/v1/apps/posxml/3082/versions?access_token=#{self.token}`
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.all(app_id)
|
20
|
+
response = JSON.parse(Net::HTTP.get(URI("https://#{self.host}/v1/apps/posxml/#{app_id}/versions?access_token=#{self.token}&per_page=100")))
|
21
|
+
raise ManagerException.new(response["message"]) if response["message"]
|
22
|
+
|
23
|
+
total_pages = response["pagination"]["total_pages"].to_i
|
24
|
+
versions = response["appversions"]
|
25
|
+
|
26
|
+
(total_pages - 1).times do |page|
|
27
|
+
url = "https://#{self.host}/v1/apps/posxml/#{app_id}/versions?access_token=#{self.token}&per_page=100&page=#{page+2}"
|
28
|
+
response = JSON.parse(Net::HTTP.get(URI(url)))
|
29
|
+
raise ManagerException.new(response["message"]) if response["message"]
|
30
|
+
|
31
|
+
versions.concat(response["posxmlapps"])
|
32
|
+
end
|
33
|
+
versions
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.get(app_id, id)
|
37
|
+
url = "https://#{self.host}/v1/apps/posxml/#{app_id}/versions/#{id}?access_token=#{token}"
|
38
|
+
response = JSON.parse(Net::HTTP.get(URI(url)))
|
39
|
+
raise ManagerException.new(response["message"]) if response["message"]
|
40
|
+
|
41
|
+
response
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.update(app_id, version_id, bytecode)
|
45
|
+
url = "#{self.host}/v1/apps/posxml/#{app_id}/versions/#{version_id}?access_token=#{self.token}"
|
46
|
+
uri = URI(url)
|
47
|
+
uri.encode_www_form({"bytecode" => Base64.strict_encode64(bytecode)})
|
48
|
+
|
49
|
+
Net::HTTP.start(uri.host, uri.port, :use_ssl => true) do |http|
|
50
|
+
request = Net::HTTP::Put.new(uri)
|
51
|
+
response = http.request request
|
52
|
+
end
|
53
|
+
p response
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
@@ -0,0 +1,71 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
|
3
|
+
require 'rake'
|
4
|
+
require 'rake/tasklib'
|
5
|
+
require 'fileutils'
|
6
|
+
require 'bundler/setup'
|
7
|
+
|
8
|
+
# Tasks:
|
9
|
+
# cloudwalk:build (Will build mruby or posxml application)
|
10
|
+
# cloddwalk:deploy (Send Posxml or Ruby application)
|
11
|
+
# cloddwalk:update (Update Cwfile.lock)
|
12
|
+
# cloudwalk:package - maybe not
|
13
|
+
|
14
|
+
module Cloudwalk
|
15
|
+
class RakeTask < ::Rake::TaskLib
|
16
|
+
include ::Rake::DSL if defined?(::Rake::DSL)
|
17
|
+
|
18
|
+
attr_accessor :libs, :root_path, :main_out, :out_path
|
19
|
+
|
20
|
+
def initialize
|
21
|
+
yield self if block_given?
|
22
|
+
|
23
|
+
@libs ||= FileList['lib/*.xml']
|
24
|
+
@root_path ||= "./"
|
25
|
+
@out_path ||= File.join(root_path, "out", "shared")
|
26
|
+
@outs ||= @libs.pathmap("%{lib,#{@out_path}}p")
|
27
|
+
|
28
|
+
define
|
29
|
+
end
|
30
|
+
|
31
|
+
def platform_call(command)
|
32
|
+
if (/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM)
|
33
|
+
sh("bash -c \"#{command}\"")
|
34
|
+
else
|
35
|
+
sh command
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def define
|
40
|
+
namespace :cloudwalk do
|
41
|
+
desc "Compile posxml"
|
42
|
+
task :build do
|
43
|
+
FileUtils.rm_rf self.out_path
|
44
|
+
FileUtils.mkdir_p self.out_path
|
45
|
+
self.libs.zip(self.outs).each do |file, out|
|
46
|
+
posxml = CwFileJson.xml2posxml(out)
|
47
|
+
puts "cloudwalk compile -xml -o #{posxml} #{file}"
|
48
|
+
platform_call "cloudwalk compile -xml -o #{posxml} #{file}"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
desc "Deploy all compiled applications based in Cwfile.json"
|
53
|
+
task :deploy => :build do
|
54
|
+
if Cloudwalk::CwFileJson.setup
|
55
|
+
Cloudwalk::CwFileJson.deploy(self.outs)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
desc "Update CwFile.json.lock"
|
60
|
+
task :update do
|
61
|
+
Cloudwalk::CwFileJson.delete_lock!
|
62
|
+
Cloudwalk::CwFileJson.setup(true)
|
63
|
+
Cloudwalk::CwFileJson.persist_lock!
|
64
|
+
end
|
65
|
+
|
66
|
+
task :default => :build
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
metadata
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cloudwalk
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Thiago Scalone
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-05-17 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '10.4'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '10.4'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.7'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.7'
|
41
|
+
description: CloudWalk CLI for posxml and ruby applications.
|
42
|
+
email:
|
43
|
+
- thiago@cloudwalk.io
|
44
|
+
executables: []
|
45
|
+
extensions: []
|
46
|
+
extra_rdoc_files: []
|
47
|
+
files:
|
48
|
+
- lib/cloudwalk.rb
|
49
|
+
- lib/cloudwalk/config.rb
|
50
|
+
- lib/cloudwalk/cw_file_json.rb
|
51
|
+
- lib/cloudwalk/manager_exception.rb
|
52
|
+
- lib/cloudwalk/posxml_application.rb
|
53
|
+
- lib/cloudwalk/posxml_version.rb
|
54
|
+
- lib/cloudwalk/rake_task.rb
|
55
|
+
homepage: https://cloudwalk.io/cli
|
56
|
+
licenses:
|
57
|
+
- MIT
|
58
|
+
metadata: {}
|
59
|
+
post_install_message:
|
60
|
+
rdoc_options: []
|
61
|
+
require_paths:
|
62
|
+
- mrblib
|
63
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - '>='
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: 1.9.3
|
68
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
69
|
+
requirements:
|
70
|
+
- - '>='
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '0'
|
73
|
+
requirements: []
|
74
|
+
rubyforge_project:
|
75
|
+
rubygems_version: 2.2.2
|
76
|
+
signing_key:
|
77
|
+
specification_version: 4
|
78
|
+
summary: CLI for Cloudwalk projects
|
79
|
+
test_files: []
|