asker-tool 2.2.0 → 2.2.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -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.