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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/occs-wizard.rb +254 -0
  3. metadata +44 -0
@@ -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
@@ -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: []