dim-toolkit 2.1.1 → 2.2.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 +4 -4
- data/bin/dim +9 -9
- data/lib/dim/commands/check.rb +13 -13
- data/lib/dim/commands/export.rb +145 -145
- data/lib/dim/commands/format.rb +196 -198
- data/lib/dim/commands/stats.rb +64 -64
- data/lib/dim/consistency.rb +157 -187
- data/lib/dim/dimmain.rb +28 -28
- data/lib/dim/encoding.rb +4 -4
- data/lib/dim/exit_helper.rb +23 -23
- data/lib/dim/exporter/csv.rb +24 -25
- data/lib/dim/exporter/exporterInterface.rb +37 -37
- data/lib/dim/exporter/json.rb +30 -32
- data/lib/dim/exporter/rst.rb +142 -142
- data/lib/dim/ext/psych.rb +63 -63
- data/lib/dim/ext/string.rb +85 -85
- data/lib/dim/globals.rb +12 -12
- data/lib/dim/helpers/attribute_helper.rb +126 -126
- data/lib/dim/helpers/file_helper.rb +25 -25
- data/lib/dim/loader.rb +561 -581
- data/lib/dim/options.rb +116 -116
- data/lib/dim/requirement.rb +217 -236
- data/lib/dim/ver.rb +7 -7
- data/lib/dim.rb +1 -1
- data/license.txt +205 -205
- data/version.txt +1 -1
- metadata +4 -4
data/lib/dim/options.rb
CHANGED
@@ -1,116 +1,116 @@
|
|
1
|
-
require 'optparse'
|
2
|
-
|
3
|
-
require_relative 'globals'
|
4
|
-
require_relative 'exit_helper'
|
5
|
-
|
6
|
-
module Dim
|
7
|
-
class Options
|
8
|
-
MAX_COUNT = 10
|
9
|
-
|
10
|
-
def self.reset
|
11
|
-
OPTIONS[:filter] = ''
|
12
|
-
OPTIONS[:title] = 'Requirements - Draft'
|
13
|
-
OPTIONS[:folder] = nil
|
14
|
-
OPTIONS[:input] = nil
|
15
|
-
OPTIONS[:attributes] = nil
|
16
|
-
OPTIONS[:config] = nil
|
17
|
-
OPTIONS[:allow_missing] = false
|
18
|
-
OPTIONS[:output_format] = 'in-place'
|
19
|
-
OPTIONS[:type] = nil
|
20
|
-
OPTIONS[:no_check_enclosed] = false
|
21
|
-
OPTIONS[:silent] = nil
|
22
|
-
end
|
23
|
-
reset
|
24
|
-
|
25
|
-
def self.parse(args = ARGV)
|
26
|
-
op = OptionParser.new do |opts|
|
27
|
-
opts.banner = "Usage: dim.rb <#{SUBCOMMANDS.keys.join('|')}> [options]"
|
28
|
-
opts.separator "\nGeneral options:"
|
29
|
-
opts.on('-h', '--help', 'prints this help') do
|
30
|
-
Dim::ExitHelper.exit(code: 0, msg: opts)
|
31
|
-
end
|
32
|
-
opts.on('-v', '--version', 'prints version') do
|
33
|
-
Dim::ExitHelper.exit(code: 0, msg: Dim::Ver.sion)
|
34
|
-
end
|
35
|
-
opts.on('-l', '--license', 'prints license') do
|
36
|
-
Dim::ExitHelper.exit(code: 0, msg: File.read(File.dirname(__FILE__) + '/../../license.txt'))
|
37
|
-
end
|
38
|
-
|
39
|
-
opts.separator "\nFor check, export, stats, format:"
|
40
|
-
opts.on('-i FILENAME', '--input FILENAME', 'input file or config') do |i|
|
41
|
-
OPTIONS[:input] = i.gsub('\\', '/')
|
42
|
-
end
|
43
|
-
opts.on('-a FILENAME', '--attributes FILENAME', 'file for custom attributes') do |i|
|
44
|
-
OPTIONS[:attributes] = i.gsub('\\', '/')
|
45
|
-
end
|
46
|
-
opts.on('--allow-missing', 'Missing references are ignored') do |_m|
|
47
|
-
OPTIONS[:allow_missing] = true
|
48
|
-
end
|
49
|
-
opts.on('--no-check-enclosed', 'Skip enclosed file check') do |_|
|
50
|
-
OPTIONS[:no_check_enclosed] = true
|
51
|
-
end
|
52
|
-
opts.on('--silent', 'Silent information log') do |_|
|
53
|
-
OPTIONS[:silent] = true
|
54
|
-
end
|
55
|
-
|
56
|
-
opts.separator "\nFor export:"
|
57
|
-
opts.on('--filter FILTER', 'searches for this string in all fields with enums') do |p|
|
58
|
-
OPTIONS[:filter] = p
|
59
|
-
end
|
60
|
-
|
61
|
-
opts.separator "\nFor export:"
|
62
|
-
opts.on('-o FOLDER', '--output FOLDER', 'output folder') do |p|
|
63
|
-
OPTIONS[:folder] = p
|
64
|
-
end
|
65
|
-
opts.on('-f FORMAT', '--format FORMAT', 'output format',
|
66
|
-
"allowed values: #{EXPORTER.keys.join(', ')}") do |p|
|
67
|
-
OPTIONS[:type] =
|
68
|
-
p
|
69
|
-
end
|
70
|
-
|
71
|
-
opts.separator "\nFor format:"
|
72
|
-
opts.on('--output-format FORMAT', 'in-place (default): files will be changed if not already formatted correctly',
|
73
|
-
'extra: output is written into "<original filename>.formatted"',
|
74
|
-
'check-only: no changes to files',
|
75
|
-
'stdout: For IDE format support; will work with STDIN/STDOUT; no file input required') do |p|
|
76
|
-
OPTIONS[:output_format] = p
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
begin
|
81
|
-
op.parse!(args)
|
82
|
-
rescue OptionParser::InvalidOption => e
|
83
|
-
Dim::ExitHelper.exit(code: 1, msg: e.message)
|
84
|
-
end
|
85
|
-
|
86
|
-
Dim::ExitHelper.exit(code: 1, msg: op) if args.empty? || !SUBCOMMANDS.keys.include?(args[0])
|
87
|
-
OPTIONS[:subcommand] = args[0]
|
88
|
-
|
89
|
-
Dim::ExitHelper.exit(code: 1, msg: 'no input file specified.') if OPTIONS[:input].nil? && OPTIONS[:output_format] != 'stdout'
|
90
|
-
|
91
|
-
if OPTIONS[:subcommand] == 'export'
|
92
|
-
Dim::ExitHelper.exit(code: 1, msg: 'specify output folder') if OPTIONS[:folder].nil?
|
93
|
-
if OPTIONS[:type].nil?
|
94
|
-
Dim::ExitHelper.exit(code: 1, msg: "export format not specified, must be one of: #{EXPORTER.keys.join(', ')}")
|
95
|
-
end
|
96
|
-
unless EXPORTER.keys.include?(OPTIONS[:type])
|
97
|
-
Dim::ExitHelper.exit(code: 1, msg: "export format must be one of: #{EXPORTER.keys.join(', ')}")
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
if OPTIONS[:output_format] == 'stdout'
|
102
|
-
OPTIONS[:silent] = true
|
103
|
-
OPTIONS[:no_check_enclosed] = true
|
104
|
-
OPTIONS[:allow_missing] = true
|
105
|
-
end
|
106
|
-
|
107
|
-
if OPTIONS[:subcommand] == 'format'
|
108
|
-
OPTIONS[:allow_missing] = true
|
109
|
-
|
110
|
-
return if %w[in-place extra check-only stdout].include?(OPTIONS[:output_format])
|
111
|
-
|
112
|
-
Dim::ExitHelper.exit(code: 1, msg: 'output-format must be in-place, extra or check-only')
|
113
|
-
end
|
114
|
-
end
|
115
|
-
end
|
116
|
-
end
|
1
|
+
require 'optparse'
|
2
|
+
|
3
|
+
require_relative 'globals'
|
4
|
+
require_relative 'exit_helper'
|
5
|
+
|
6
|
+
module Dim
|
7
|
+
class Options
|
8
|
+
MAX_COUNT = 10
|
9
|
+
|
10
|
+
def self.reset
|
11
|
+
OPTIONS[:filter] = ''
|
12
|
+
OPTIONS[:title] = 'Requirements - Draft'
|
13
|
+
OPTIONS[:folder] = nil
|
14
|
+
OPTIONS[:input] = nil
|
15
|
+
OPTIONS[:attributes] = nil
|
16
|
+
OPTIONS[:config] = nil
|
17
|
+
OPTIONS[:allow_missing] = false
|
18
|
+
OPTIONS[:output_format] = 'in-place'
|
19
|
+
OPTIONS[:type] = nil
|
20
|
+
OPTIONS[:no_check_enclosed] = false
|
21
|
+
OPTIONS[:silent] = nil
|
22
|
+
end
|
23
|
+
reset
|
24
|
+
|
25
|
+
def self.parse(args = ARGV)
|
26
|
+
op = OptionParser.new do |opts|
|
27
|
+
opts.banner = "Usage: dim.rb <#{SUBCOMMANDS.keys.join('|')}> [options]"
|
28
|
+
opts.separator "\nGeneral options:"
|
29
|
+
opts.on('-h', '--help', 'prints this help') do
|
30
|
+
Dim::ExitHelper.exit(code: 0, msg: opts)
|
31
|
+
end
|
32
|
+
opts.on('-v', '--version', 'prints version') do
|
33
|
+
Dim::ExitHelper.exit(code: 0, msg: Dim::Ver.sion)
|
34
|
+
end
|
35
|
+
opts.on('-l', '--license', 'prints license') do
|
36
|
+
Dim::ExitHelper.exit(code: 0, msg: File.read(File.dirname(__FILE__) + '/../../license.txt'))
|
37
|
+
end
|
38
|
+
|
39
|
+
opts.separator "\nFor check, export, stats, format:"
|
40
|
+
opts.on('-i FILENAME', '--input FILENAME', 'input file or config') do |i|
|
41
|
+
OPTIONS[:input] = i.gsub('\\', '/')
|
42
|
+
end
|
43
|
+
opts.on('-a FILENAME', '--attributes FILENAME', 'file for custom attributes') do |i|
|
44
|
+
OPTIONS[:attributes] = i.gsub('\\', '/')
|
45
|
+
end
|
46
|
+
opts.on('--allow-missing', 'Missing references are ignored') do |_m|
|
47
|
+
OPTIONS[:allow_missing] = true
|
48
|
+
end
|
49
|
+
opts.on('--no-check-enclosed', 'Skip enclosed file check') do |_|
|
50
|
+
OPTIONS[:no_check_enclosed] = true
|
51
|
+
end
|
52
|
+
opts.on('--silent', 'Silent information log') do |_|
|
53
|
+
OPTIONS[:silent] = true
|
54
|
+
end
|
55
|
+
|
56
|
+
opts.separator "\nFor export:"
|
57
|
+
opts.on('--filter FILTER', 'searches for this string in all fields with enums') do |p|
|
58
|
+
OPTIONS[:filter] = p
|
59
|
+
end
|
60
|
+
|
61
|
+
opts.separator "\nFor export:"
|
62
|
+
opts.on('-o FOLDER', '--output FOLDER', 'output folder') do |p|
|
63
|
+
OPTIONS[:folder] = p
|
64
|
+
end
|
65
|
+
opts.on('-f FORMAT', '--format FORMAT', 'output format',
|
66
|
+
"allowed values: #{EXPORTER.keys.join(', ')}") do |p|
|
67
|
+
OPTIONS[:type] =
|
68
|
+
p
|
69
|
+
end
|
70
|
+
|
71
|
+
opts.separator "\nFor format:"
|
72
|
+
opts.on('--output-format FORMAT', 'in-place (default): files will be changed if not already formatted correctly',
|
73
|
+
'extra: output is written into "<original filename>.formatted"',
|
74
|
+
'check-only: no changes to files',
|
75
|
+
'stdout: For IDE format support; will work with STDIN/STDOUT; no file input required') do |p|
|
76
|
+
OPTIONS[:output_format] = p
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
begin
|
81
|
+
op.parse!(args)
|
82
|
+
rescue OptionParser::InvalidOption => e
|
83
|
+
Dim::ExitHelper.exit(code: 1, msg: e.message)
|
84
|
+
end
|
85
|
+
|
86
|
+
Dim::ExitHelper.exit(code: 1, msg: op) if args.empty? || !SUBCOMMANDS.keys.include?(args[0])
|
87
|
+
OPTIONS[:subcommand] = args[0]
|
88
|
+
|
89
|
+
Dim::ExitHelper.exit(code: 1, msg: 'no input file specified.') if OPTIONS[:input].nil? && OPTIONS[:output_format] != 'stdout'
|
90
|
+
|
91
|
+
if OPTIONS[:subcommand] == 'export'
|
92
|
+
Dim::ExitHelper.exit(code: 1, msg: 'specify output folder') if OPTIONS[:folder].nil?
|
93
|
+
if OPTIONS[:type].nil?
|
94
|
+
Dim::ExitHelper.exit(code: 1, msg: "export format not specified, must be one of: #{EXPORTER.keys.join(', ')}")
|
95
|
+
end
|
96
|
+
unless EXPORTER.keys.include?(OPTIONS[:type])
|
97
|
+
Dim::ExitHelper.exit(code: 1, msg: "export format must be one of: #{EXPORTER.keys.join(', ')}")
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
if OPTIONS[:output_format] == 'stdout'
|
102
|
+
OPTIONS[:silent] = true
|
103
|
+
OPTIONS[:no_check_enclosed] = true
|
104
|
+
OPTIONS[:allow_missing] = true
|
105
|
+
end
|
106
|
+
|
107
|
+
if OPTIONS[:subcommand] == 'format'
|
108
|
+
OPTIONS[:allow_missing] = true
|
109
|
+
|
110
|
+
return if %w[in-place extra check-only stdout].include?(OPTIONS[:output_format])
|
111
|
+
|
112
|
+
Dim::ExitHelper.exit(code: 1, msg: 'output-format must be in-place, extra or check-only')
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|