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.
@@ -1,8 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'yaml'
4
- require_relative '../project'
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 = Project.instance
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
- Logger.verboseln Rainbow(msg).red
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 = Project.instance
46
+ project = ProjectData.instance
48
47
  unless File.exist?(filepath)
49
48
  msg = Rainbow("[ERROR] #{filepath} not found!").red.bright
50
- Logger.verboseln msg
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 = Project.instance
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
- Logger.verboseln msg
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 'application'
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 initialize
11
- @logfile = null
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 Application.instance.config['global']['verbose'] == 'yes'
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(project)
30
- @logfile = File.open(project.get(:logpath), 'w')
33
+ def self.create(logpath, logname)
34
+ @logfile = File.open(logpath, 'w')
31
35
  @logfile.write('=' * 50 + "\n")
32
- @logfile.write("Created by : #{Application::NAME}")
33
- @logfile.write(" (version #{Application::VERSION})\n")
34
- @logfile.write("File : #{project.get(:logname)}\n")
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
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'fileutils'
4
4
  require 'rainbow'
5
- require_relative 'application'
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', Application::CONFIGFILE)
38
- dst = File.join(Application::CONFIGFILE)
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
 
@@ -0,0 +1,9 @@
1
+
2
+ # Global parameters
3
+ module Version
4
+ VERSION = '2.2.4'
5
+ NAME = 'asker'
6
+ GEM = 'asker-tool'
7
+ CONFIGFILE = 'asker.ini'
8
+ HOMEPAGE = "https://github.com/teuton-software/#{NAME}/tree/v2.2\#readme"
9
+ end
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
- # Asker main class
13
+ require_relative 'asker/loader/project_loader'
14
+ require_relative 'asker/loader/input_loader'
16
15
  class Asker
17
- ##
18
- # Create asker input demo files
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
- # Create asker configuration files
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
- Checker.check(filepath)
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
- project, data = load_input(filepath)
29
+ project_data, data = load_input(filepath)
42
30
  ConceptDisplayer.show(data[:concepts])
43
- create_output(project, data)
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
- project = ProjectLoader.load(args)
51
- data = InputLoader.load(project.get(:inputdirs).split(','))
52
- [project, data]
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.0
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: 2021-12-21 00:00:00.000000000 Z
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/checker.rb
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
- homepage: https://github.com/dvarrui/asker/tree/v2.2
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.5.0
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.2.32
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.