occs-wizard 1.0.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 +7 -0
- data/lib/occs-wizard.rb +254 -0
- metadata +44 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: dbcdbfa280709b1b67cdc1df1bb8110482b725c3
|
4
|
+
data.tar.gz: 577a04bd82376a34cd380b2085258a518ce6f2ae
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 82f456987e274222001cac6d3c546a12133b33aba1e80f69d0d7a4adede0a783497d2483d1e434d4e5e88ef4d8262af7a3c55b1f4c795ffec9ca6c42ab61bae0
|
7
|
+
data.tar.gz: 678d3e44b0189417f122fc701b7a82bc71b967be82de4362621be9f6031df1fd3a586364d0b06fc354748b5cb64b8ed818a68967c1b8b4f104b5a03b7b8c41e4
|
data/lib/occs-wizard.rb
ADDED
@@ -0,0 +1,254 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
class Wizard
|
5
|
+
|
6
|
+
attr_accessor :extension_id, :developer_id, :created_by, :created_at, :extension_name, :description
|
7
|
+
VERSION = 1
|
8
|
+
|
9
|
+
def set_extension_id(ext)
|
10
|
+
raise ArgumentError, 'Argument is not a valid OCCS extension id, please read the documentation for further details' unless ext.size == 36 && ext.is_a?(String)
|
11
|
+
self.extension_id = ext
|
12
|
+
end
|
13
|
+
|
14
|
+
def get_extension_id
|
15
|
+
self.extension_id
|
16
|
+
end
|
17
|
+
|
18
|
+
def set_developer_id(dev_id)
|
19
|
+
raise ArgumentError, 'Developer ID value is not valid, please read the documentation for further details' unless dev_id.size >= 8
|
20
|
+
self.developer_id = dev_id
|
21
|
+
end
|
22
|
+
|
23
|
+
def get_developer_id
|
24
|
+
self.developer_id
|
25
|
+
end
|
26
|
+
|
27
|
+
def set_created_at
|
28
|
+
time = Time.now
|
29
|
+
current = time.to_s.scan(/\w+/)
|
30
|
+
today = "#{current[0]}-#{current[1]}-#{current[2]}"
|
31
|
+
self.created_at = today
|
32
|
+
end
|
33
|
+
|
34
|
+
def get_created_at
|
35
|
+
self.created_at
|
36
|
+
end
|
37
|
+
|
38
|
+
def set_created_by(name = "OCCS Wizard Developer")
|
39
|
+
self.created_by = name
|
40
|
+
end
|
41
|
+
|
42
|
+
def get_created_by
|
43
|
+
self.created_by
|
44
|
+
end
|
45
|
+
|
46
|
+
def set_extension_name(ext_name)
|
47
|
+
raise ArgumentError, 'Extension name cannot be empty' unless ext_name.size > 0
|
48
|
+
self.extension_name = ext_name
|
49
|
+
end
|
50
|
+
|
51
|
+
def get_extension_name
|
52
|
+
ext_name = self.extension_name.delete(' ').downcase
|
53
|
+
end
|
54
|
+
|
55
|
+
def set_description(desc)
|
56
|
+
raise ArgumentError, 'Extension description cannot be empty' unless desc.size > 0
|
57
|
+
self.description = desc
|
58
|
+
end
|
59
|
+
|
60
|
+
def get_description
|
61
|
+
self.description
|
62
|
+
end
|
63
|
+
|
64
|
+
# crate the ext.json file
|
65
|
+
def create_ext_json_file(directory)
|
66
|
+
ext_json = {
|
67
|
+
extensionID: self.get_extension_id,
|
68
|
+
developerID: self.get_developer_id,
|
69
|
+
createdBy: self.created_by,
|
70
|
+
name: self.get_extension_name,
|
71
|
+
version: VERSION,
|
72
|
+
timeCreated: self.get_created_at,
|
73
|
+
description: self.get_description
|
74
|
+
}
|
75
|
+
# write the file
|
76
|
+
File.open(directory,"w") do |f|
|
77
|
+
# call the convert_to_json private method and write a json file
|
78
|
+
f.write(convert_to_json(ext_json))
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
# create the file widget.json
|
83
|
+
def create_widget_json_file(directory)
|
84
|
+
widget_json = {
|
85
|
+
name: self.get_extension_name,
|
86
|
+
version: VERSION,
|
87
|
+
global: false,
|
88
|
+
javascript: "widget-#{self.get_extension_name}-js",
|
89
|
+
pageTypes: ["home"],
|
90
|
+
imports: ["products"],
|
91
|
+
jsEditable: true,
|
92
|
+
config: {}
|
93
|
+
}
|
94
|
+
|
95
|
+
# write the file
|
96
|
+
File.open(directory,"w") do |f|
|
97
|
+
# call the convert_to_json private method and write a json file
|
98
|
+
f.write(convert_to_json(widget_json))
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
# create the display.template file
|
103
|
+
def create_display_template_file(directory)
|
104
|
+
html = %{<!-- Template File -->\n
|
105
|
+
<div class="myWidget">Hello World</div>}
|
106
|
+
|
107
|
+
File.open(directory, "w") do |f|
|
108
|
+
f.write(html)
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
# create the less file
|
113
|
+
def create_less_file(directory)
|
114
|
+
less = %{/* Widget CSS Less */\n
|
115
|
+
.myWidget {}}
|
116
|
+
|
117
|
+
File.open(directory, "w") do |f|
|
118
|
+
f.write(less)
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
# create the javascript file
|
123
|
+
def create_js_file(directory)
|
124
|
+
js = %{// Javascript widget file\n
|
125
|
+
define(\n
|
126
|
+
// Dependencies\n
|
127
|
+
['jquery', 'knockout'],\n
|
128
|
+
// Module Implementation\n
|
129
|
+
function($, ko) {\n
|
130
|
+
// We recommend enabling strict checking mode\n
|
131
|
+
'use strict';\n
|
132
|
+
// Private variables and functions can be defined here...\n
|
133
|
+
var SOME_CONSTANT = 1024;\n
|
134
|
+
var privateMethod = function () {\n
|
135
|
+
// ...\n
|
136
|
+
};\n
|
137
|
+
return {\n
|
138
|
+
// Widget JS\n
|
139
|
+
onLoad: function(widget) {},\n
|
140
|
+
// Some member variables...\n
|
141
|
+
// Some public methods...\n
|
142
|
+
}\n
|
143
|
+
});}
|
144
|
+
|
145
|
+
File.open(directory, "w") do |f|
|
146
|
+
f.write(js)
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
# Project Structure
|
151
|
+
def create_project_structure
|
152
|
+
# create the project date
|
153
|
+
self.set_created_at
|
154
|
+
# go back one dir
|
155
|
+
Dir.chdir('..')
|
156
|
+
raise Exception, "Folder #{self.extension_name} already exists" unless !File.directory?("#{self.extension_name}")
|
157
|
+
# make a new root dir with the extension name
|
158
|
+
FileUtils.mkdir(self.extension_name)
|
159
|
+
# enter inside the new root dirt
|
160
|
+
Dir.chdir("#{self.extension_name}")
|
161
|
+
# create the widget folder
|
162
|
+
FileUtils.mkdir('widget')
|
163
|
+
# create the file ext.json
|
164
|
+
self.create_ext_json_file("ext.json")
|
165
|
+
# enter inside widget folder
|
166
|
+
Dir.chdir('./widget')
|
167
|
+
# create the extension name folder with no spaces and lowered
|
168
|
+
FileUtils.mkdir(self.get_extension_name)
|
169
|
+
# enter inside the extensionname folder
|
170
|
+
Dir.chdir("./#{self.get_extension_name }")
|
171
|
+
# make the template folder
|
172
|
+
FileUtils.mkdir("templates")
|
173
|
+
# make the js folder
|
174
|
+
FileUtils.mkdir("js")
|
175
|
+
# make the less folder
|
176
|
+
FileUtils.mkdir("less")
|
177
|
+
# write the widget.json file
|
178
|
+
self.create_widget_json_file("widget.json")
|
179
|
+
# move into the templates folder
|
180
|
+
Dir.chdir("./templates")
|
181
|
+
# write the display.template file
|
182
|
+
self.create_display_template_file("display.template")
|
183
|
+
# move back one dir
|
184
|
+
Dir.chdir("..")
|
185
|
+
# move inside the less folder
|
186
|
+
Dir.chdir("./less")
|
187
|
+
# write the less file
|
188
|
+
self.create_less_file("widget.less")
|
189
|
+
# move back one dir
|
190
|
+
Dir.chdir("..")
|
191
|
+
# move inside the js folder
|
192
|
+
Dir.chdir("./js")
|
193
|
+
# write the js file
|
194
|
+
self.create_js_file("widget-#{self.get_extension_name}-js.js")
|
195
|
+
# move back one dir
|
196
|
+
Dir.chdir("..")
|
197
|
+
# create the config folder
|
198
|
+
Dir.mkdir("config")
|
199
|
+
|
200
|
+
end
|
201
|
+
|
202
|
+
def get_user_input
|
203
|
+
puts "\n"
|
204
|
+
puts ".:: OCCS Widget Wizard ::."
|
205
|
+
puts "\n"
|
206
|
+
puts "Please have a look at the Oracle Commerce Cloud official documentation for more info"
|
207
|
+
puts "https://goo.gl/i5d6us"
|
208
|
+
puts "\n"
|
209
|
+
print "Please enter the extension id: "
|
210
|
+
dev_id = gets.chomp
|
211
|
+
self.set_extension_id(dev_id)
|
212
|
+
puts "\n"
|
213
|
+
print "Please enter your developer id: "
|
214
|
+
dev_id = gets.chomp
|
215
|
+
self.set_developer_id(dev_id)
|
216
|
+
puts "\n"
|
217
|
+
print "Enter the developer name: "
|
218
|
+
dev_name = gets.chomp
|
219
|
+
self.set_created_by(dev_name)
|
220
|
+
puts "\n"
|
221
|
+
print "Enter the extension name: "
|
222
|
+
ext_name = gets.chomp
|
223
|
+
self.set_extension_name(ext_name)
|
224
|
+
puts "\n"
|
225
|
+
print "Enter the extension description: "
|
226
|
+
ext_desc = gets.chomp
|
227
|
+
self.set_description(ext_desc)
|
228
|
+
puts "\n"
|
229
|
+
|
230
|
+
begin
|
231
|
+
self.create_project_structure
|
232
|
+
puts "\n"
|
233
|
+
puts "Project '#{self.extension_name}' was successfully created at #{Dir.pwd}"
|
234
|
+
puts "\n"
|
235
|
+
rescue
|
236
|
+
puts "Sorry but there was an error creating your widget structure, please try again"
|
237
|
+
end
|
238
|
+
|
239
|
+
end
|
240
|
+
|
241
|
+
def initialize
|
242
|
+
self.get_user_input
|
243
|
+
end
|
244
|
+
|
245
|
+
private
|
246
|
+
def convert_to_json(string)
|
247
|
+
json = string.to_json
|
248
|
+
json_formatted = JSON.parse(json)
|
249
|
+
JSON.pretty_generate(json_formatted)
|
250
|
+
end
|
251
|
+
|
252
|
+
end
|
253
|
+
|
254
|
+
w = Wizard.new
|
metadata
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: occs-wizard
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Valerio D'Alessio - @valdal14
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-10-31 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description:
|
14
|
+
email: valdal14@gmail.com
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- lib/occs-wizard.rb
|
20
|
+
homepage: https://twitter.com/valdal14
|
21
|
+
licenses:
|
22
|
+
- MIT
|
23
|
+
metadata: {}
|
24
|
+
post_install_message:
|
25
|
+
rdoc_options: []
|
26
|
+
require_paths:
|
27
|
+
- lib
|
28
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
29
|
+
requirements:
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
34
|
+
requirements:
|
35
|
+
- - ">="
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
requirements: []
|
39
|
+
rubyforge_project:
|
40
|
+
rubygems_version: 2.5.2.3
|
41
|
+
signing_key:
|
42
|
+
specification_version: 4
|
43
|
+
summary: A wizard to create Oracle Commerce Cloud basic widget structure
|
44
|
+
test_files: []
|