asker-tool 2.2.0 → 2.2.4
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 +4 -4
- data/README.md +14 -15
- data/lib/asker/ai/concept_ai.rb +1 -1
- data/lib/asker/ai/stages/stage_b.rb +1 -10
- data/lib/asker/ai/stages/stage_d.rb +4 -10
- data/lib/asker/ai/stages/stage_f.rb +1 -20
- data/lib/asker/application.rb +6 -16
- data/lib/asker/check_input/check_haml_data.rb +264 -0
- data/lib/asker/check_input/check_table.rb +104 -0
- data/lib/asker/check_input.rb +51 -0
- data/lib/asker/cli.rb +32 -47
- data/lib/asker/data/code.rb +1 -15
- data/lib/asker/data/concept.rb +8 -7
- data/lib/asker/{project.rb → data/project_data.rb} +5 -23
- data/lib/asker/data/world.rb +4 -15
- data/lib/asker/displayer/concept_ai_displayer.rb +1 -0
- data/lib/asker/exporter/concept_ai_moodle_exporter.rb +3 -2
- data/lib/asker/exporter/concept_doc_exporter.rb +3 -6
- data/lib/asker/exporter/data_gift_exporter.rb +4 -2
- data/lib/asker/files/language/en/templates.yaml +1 -1
- data/lib/asker/files/language/es/templates.yaml +1 -1
- data/lib/asker/formatter/concept_doc_formatter.rb +0 -4
- data/lib/asker/loader/content_loader.rb +8 -10
- data/lib/asker/loader/directory_loader.rb +1 -8
- data/lib/asker/loader/file_loader.rb +1 -6
- data/lib/asker/loader/haml_loader.rb +9 -5
- data/lib/asker/loader/image_url_loader.rb +4 -6
- data/lib/asker/loader/input_loader.rb +5 -6
- data/lib/asker/loader/project_loader.rb +7 -8
- data/lib/asker/logger.rb +17 -15
- data/lib/asker/skeleton.rb +3 -3
- data/lib/asker/version.rb +9 -0
- data/lib/asker.rb +39 -38
- metadata +52 -7
- data/lib/asker/checker.rb +0 -453
@@ -1,8 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'yaml'
|
4
|
-
require_relative '../
|
5
|
-
require_relative '../logger'
|
4
|
+
require_relative '../data/project_data'
|
6
5
|
|
7
6
|
# Load params into Project class using arg input
|
8
7
|
# * load
|
@@ -16,7 +15,7 @@ module ProjectLoader
|
|
16
15
|
# @param args (String or Hash)
|
17
16
|
# rubocop:disable Metrics/MethodLength
|
18
17
|
def self.load(args)
|
19
|
-
project =
|
18
|
+
project = ProjectData.instance
|
20
19
|
|
21
20
|
if args.class == Hash
|
22
21
|
project.param.merge!(args)
|
@@ -30,7 +29,7 @@ module ProjectLoader
|
|
30
29
|
|
31
30
|
msg = '[ERROR] ProjectLoader:'
|
32
31
|
msg += "Configuration params format is <#{pArgs.class}>!"
|
33
|
-
|
32
|
+
puts Rainbow(msg).red
|
34
33
|
raise msg
|
35
34
|
end
|
36
35
|
# rubocop:enable Metrics/MethodLength
|
@@ -44,10 +43,10 @@ module ProjectLoader
|
|
44
43
|
# rubocop:disable Metrics/MethodLength
|
45
44
|
# rubocop:disable Metrics/AbcSize
|
46
45
|
def self.load_from_string(filepath)
|
47
|
-
project =
|
46
|
+
project = ProjectData.instance
|
48
47
|
unless File.exist?(filepath)
|
49
48
|
msg = Rainbow("[ERROR] #{filepath} not found!").red.bright
|
50
|
-
|
49
|
+
puts msg
|
51
50
|
exit 1
|
52
51
|
end
|
53
52
|
|
@@ -65,7 +64,7 @@ module ProjectLoader
|
|
65
64
|
|
66
65
|
# rubocop:disable Security/YAMLLoad
|
67
66
|
def self.load_from_yaml(arg)
|
68
|
-
project =
|
67
|
+
project = ProjectData.instance
|
69
68
|
project.param.merge!(YAML.load(File.open(arg)))
|
70
69
|
project.set(:configfilename, arg)
|
71
70
|
project.set(:projectdir, File.dirname(arg))
|
@@ -77,7 +76,7 @@ module ProjectLoader
|
|
77
76
|
# Error found and exit application.
|
78
77
|
def self.error_loading(arg)
|
79
78
|
msg = Rainbow("[ERROR] Loading... #{arg}").red.bright
|
80
|
-
|
79
|
+
puts msg
|
81
80
|
exit 1
|
82
81
|
end
|
83
82
|
end
|
data/lib/asker/logger.rb
CHANGED
@@ -1,44 +1,46 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'singleton'
|
4
|
-
require_relative '
|
4
|
+
require_relative 'version'
|
5
5
|
|
6
6
|
# Display and log project messages
|
7
7
|
class Logger
|
8
8
|
include Singleton
|
9
|
+
@attr_verbose = 'yes'
|
9
10
|
|
10
|
-
def
|
11
|
-
@
|
11
|
+
def set_verbose(value)
|
12
|
+
@attr_verbose = value
|
12
13
|
end
|
13
14
|
|
14
|
-
##
|
15
|
-
# Display and log text
|
16
15
|
def self.verbose(msg)
|
17
|
-
print msg if
|
16
|
+
print msg if @attr_verbose == 'yes'
|
18
17
|
@logfile&.write(msg)
|
19
18
|
end
|
20
19
|
|
21
|
-
##
|
22
|
-
# Display and log text line
|
23
20
|
def self.verboseln(msg)
|
24
21
|
verbose(msg + "\n")
|
25
22
|
end
|
26
23
|
|
24
|
+
def log(msg)
|
25
|
+
verbose(msg)
|
26
|
+
end
|
27
|
+
|
28
|
+
def logln(msg)
|
29
|
+
verboseln(msg)
|
30
|
+
end
|
27
31
|
##
|
28
32
|
# Create or reset logfile
|
29
|
-
def self.create(
|
30
|
-
@logfile = File.open(
|
33
|
+
def self.create(logpath, logname)
|
34
|
+
@logfile = File.open(logpath, 'w')
|
31
35
|
@logfile.write('=' * 50 + "\n")
|
32
|
-
@logfile.write("Created by : #{
|
33
|
-
@logfile.write(" (version #{
|
34
|
-
@logfile.write("File : #{
|
36
|
+
@logfile.write("Created by : #{Version::NAME}")
|
37
|
+
@logfile.write(" (version #{Version::VERSION})\n")
|
38
|
+
@logfile.write("File : #{logname}\n")
|
35
39
|
@logfile.write("Time : #{Time.new}\n")
|
36
40
|
@logfile.write("Author : David Vargas Ruiz\n")
|
37
41
|
@logfile.write('=' * 50 + "\n\n")
|
38
42
|
end
|
39
43
|
|
40
|
-
##
|
41
|
-
# Close Log file
|
42
44
|
def self.close
|
43
45
|
@logfile.close
|
44
46
|
end
|
data/lib/asker/skeleton.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'fileutils'
|
4
4
|
require 'rainbow'
|
5
|
-
require_relative '
|
5
|
+
require_relative 'version'
|
6
6
|
|
7
7
|
# Skeleton: create skeleton for asker input files
|
8
8
|
# * create
|
@@ -34,8 +34,8 @@ module Skeleton
|
|
34
34
|
# Create default configuration files
|
35
35
|
def self.create_configuration
|
36
36
|
puts "\n[INFO] Creating configuration files"
|
37
|
-
src = File.join(File.dirname(__FILE__), 'files',
|
38
|
-
dst = File.join(
|
37
|
+
src = File.join(File.dirname(__FILE__), 'files', Version::CONFIGFILE)
|
38
|
+
dst = File.join(Version::CONFIGFILE)
|
39
39
|
copyfile(src, dst)
|
40
40
|
end
|
41
41
|
|
data/lib/asker.rb
CHANGED
@@ -2,61 +2,65 @@
|
|
2
2
|
|
3
3
|
require 'rainbow'
|
4
4
|
|
5
|
+
require_relative 'asker/skeleton'
|
6
|
+
require_relative 'asker/check_input'
|
7
|
+
|
5
8
|
require_relative 'asker/displayer/concept_displayer'
|
6
9
|
require_relative 'asker/displayer/stats_displayer'
|
7
10
|
require_relative 'asker/exporter/output_file_exporter'
|
8
|
-
require_relative 'asker/loader/project_loader'
|
9
|
-
require_relative 'asker/loader/input_loader'
|
10
|
-
require_relative 'asker/checker'
|
11
11
|
require_relative 'asker/logger'
|
12
|
-
require_relative 'asker/skeleton'
|
13
12
|
|
14
|
-
|
15
|
-
|
13
|
+
require_relative 'asker/loader/project_loader'
|
14
|
+
require_relative 'asker/loader/input_loader'
|
16
15
|
class Asker
|
17
|
-
|
18
|
-
|
19
|
-
# @param dirpath (String)
|
20
|
-
def self.create_input(dirpath)
|
21
|
-
Skeleton.create_input(dirpath)
|
16
|
+
def self.init
|
17
|
+
Skeleton.create_configuration
|
22
18
|
end
|
23
19
|
|
24
|
-
|
25
|
-
|
26
|
-
def self.create_configuration
|
27
|
-
Skeleton.create_configuration
|
20
|
+
def self.new_input(dirpath)
|
21
|
+
Skeleton.create_input(dirpath)
|
28
22
|
end
|
29
23
|
|
30
|
-
##
|
31
|
-
# Checking input file syntax
|
32
|
-
# @param filepath (String)
|
33
24
|
def self.check(filepath)
|
34
|
-
|
25
|
+
CheckInput.new.file(filepath).check
|
35
26
|
end
|
36
27
|
|
37
|
-
##
|
38
|
-
# Start working
|
39
|
-
# @param filepath (String) HAML or XML filepath
|
40
28
|
def self.start(filepath)
|
41
|
-
|
29
|
+
project_data, data = load_input(filepath)
|
42
30
|
ConceptDisplayer.show(data[:concepts])
|
43
|
-
create_output(
|
31
|
+
create_output(project_data, data)
|
44
32
|
end
|
45
33
|
|
46
|
-
##
|
47
|
-
# Load input data
|
48
|
-
# @param args (Hash)
|
49
34
|
private_class_method def self.load_input(args)
|
50
|
-
|
51
|
-
|
52
|
-
|
35
|
+
init_project_data
|
36
|
+
project_data = ProjectLoader.load(args)
|
37
|
+
init_logger(project_data)
|
38
|
+
|
39
|
+
inputdirs = project_data.get(:inputdirs).split(',')
|
40
|
+
internet = Application.instance.config['global']['internet'] == 'yes'
|
41
|
+
data = InputLoader.load(inputdirs, internet)
|
42
|
+
[project_data, data]
|
43
|
+
end
|
44
|
+
|
45
|
+
private_class_method def self.init_project_data()
|
46
|
+
project_data = ProjectData.instance
|
47
|
+
outputdir = Application.instance.config['output']['folder']
|
48
|
+
project_data.set(:outputdir, outputdir)
|
49
|
+
|
50
|
+
formula_weights = Application.instance.config['ai']['formula_weights']
|
51
|
+
project_data.set(:weights, formula_weights)
|
52
|
+
end
|
53
|
+
|
54
|
+
private_class_method def self.init_logger(project_data)
|
55
|
+
# Create log file where to save log messages
|
56
|
+
Logger.create(project_data.get(:logpath),
|
57
|
+
project_data.get(:logname))
|
58
|
+
Logger.instance.set_verbose(Application.instance.config['verbose'])
|
59
|
+
Logger.verboseln '[INFO] Project open'
|
60
|
+
Logger.verboseln ' ├── inputdirs = ' + Rainbow(project_data.get(:inputdirs)).bright
|
61
|
+
Logger.verboseln ' └── process_file = ' + Rainbow(project_data.get(:process_file)).bright
|
53
62
|
end
|
54
63
|
|
55
|
-
##
|
56
|
-
# Create output files: Gift, YAML, TXT Doc
|
57
|
-
# rubocop:disable Metrics/AbcSize
|
58
|
-
# rubocop:disable Metrics/MethodLength
|
59
|
-
# rubocop:disable Metrics/PerceivedComplexity
|
60
64
|
private_class_method def self.create_output(project, data)
|
61
65
|
Logger.verboseln "\n[INFO] Creating output files"
|
62
66
|
m = ' ├── Gift questions file => '
|
@@ -94,7 +98,4 @@ class Asker
|
|
94
98
|
StatsDisplayer.show(data)
|
95
99
|
Logger.close
|
96
100
|
end
|
97
|
-
# rubocop:enable Metrics/AbcSize
|
98
|
-
# rubocop:enable Metrics/MethodLength
|
99
|
-
# rubocop:enable Metrics/PerceivedComplexity
|
100
101
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: asker-tool
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.
|
4
|
+
version: 2.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Vargas Ruiz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-02-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: haml
|
@@ -52,6 +52,34 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '3.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: colorize
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.8'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0.8'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rexml
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '3.2'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.2'
|
55
83
|
- !ruby/object:Gem::Dependency
|
56
84
|
name: terminal-table
|
57
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,6 +122,20 @@ dependencies:
|
|
94
122
|
- - "~>"
|
95
123
|
- !ruby/object:Gem::Version
|
96
124
|
version: '5.11'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: pry-byebug
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '3.9'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '3.9'
|
97
139
|
- !ruby/object:Gem::Dependency
|
98
140
|
name: rubocop
|
99
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -142,12 +184,15 @@ files:
|
|
142
184
|
- lib/asker/ai/stages/stage_s.rb
|
143
185
|
- lib/asker/ai/stages/stage_t.rb
|
144
186
|
- lib/asker/application.rb
|
145
|
-
- lib/asker/
|
187
|
+
- lib/asker/check_input.rb
|
188
|
+
- lib/asker/check_input/check_haml_data.rb
|
189
|
+
- lib/asker/check_input/check_table.rb
|
146
190
|
- lib/asker/cli.rb
|
147
191
|
- lib/asker/data/code.rb
|
148
192
|
- lib/asker/data/column.rb
|
149
193
|
- lib/asker/data/concept.rb
|
150
194
|
- lib/asker/data/data_field.rb
|
195
|
+
- lib/asker/data/project_data.rb
|
151
196
|
- lib/asker/data/row.rb
|
152
197
|
- lib/asker/data/table.rb
|
153
198
|
- lib/asker/data/template.rb
|
@@ -219,9 +264,9 @@ files:
|
|
219
264
|
- lib/asker/loader/input_loader.rb
|
220
265
|
- lib/asker/loader/project_loader.rb
|
221
266
|
- lib/asker/logger.rb
|
222
|
-
- lib/asker/project.rb
|
223
267
|
- lib/asker/skeleton.rb
|
224
|
-
|
268
|
+
- lib/asker/version.rb
|
269
|
+
homepage: https://github.com/teuton-software/asker/tree/v2.2#readme
|
225
270
|
licenses:
|
226
271
|
- GPL-3.0
|
227
272
|
metadata: {}
|
@@ -233,14 +278,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
233
278
|
requirements:
|
234
279
|
- - ">="
|
235
280
|
- !ruby/object:Gem::Version
|
236
|
-
version: 2.
|
281
|
+
version: 2.6.9
|
237
282
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
238
283
|
requirements:
|
239
284
|
- - ">="
|
240
285
|
- !ruby/object:Gem::Version
|
241
286
|
version: '0'
|
242
287
|
requirements: []
|
243
|
-
rubygems_version: 3.
|
288
|
+
rubygems_version: 3.1.6
|
244
289
|
signing_key:
|
245
290
|
specification_version: 4
|
246
291
|
summary: Asker generates questions from input definitions file.
|