ass_launcher 0.1.1.alpha → 0.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.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +69 -67
  3. data/Rakefile +19 -0
  4. data/ass_launcher.gemspec +8 -2
  5. data/bin/dev-helper +7 -0
  6. data/bin/lib/dev_helper/cli_def_report.rb +191 -0
  7. data/bin/lib/dev_helper/cli_def_snippets.rb +426 -0
  8. data/bin/lib/dev_helper/designer.rb +172 -0
  9. data/bin/lib/dev_helper.rb +59 -0
  10. data/examples/arguments_builder_example.rb +150 -0
  11. data/examples/binary_wrappers_example.rb +211 -0
  12. data/examples/connection_string_example.rb +59 -0
  13. data/examples/create_infobase_example.rb +45 -0
  14. data/examples/enterprise_ole_example.rb +238 -0
  15. data/examples/enterprise_out_example.rb +87 -0
  16. data/examples/enterprise_running_example.rb +103 -0
  17. data/examples/example_helper.rb +122 -0
  18. data/examples/templates/example_template.cf +0 -0
  19. data/examples/templates/example_template.v8i +9 -0
  20. data/examples/templates/hello.epf +0 -0
  21. data/examples/troubles/with_creteinfobase_example.rb +408 -0
  22. data/examples/troubles/with_running_1c_example.rb +212 -0
  23. data/examples/v8i_file_example.rb +72 -0
  24. data/examples/webclient_example.rb +67 -0
  25. data/lib/ass_launcher/api.rb +113 -0
  26. data/lib/ass_launcher/enterprise/binary_wrapper.rb +159 -144
  27. data/lib/ass_launcher/enterprise/cli/arguments_builder.rb +177 -16
  28. data/lib/ass_launcher/enterprise/cli/binary_matcher.rb +69 -0
  29. data/lib/ass_launcher/enterprise/cli/parameters.rb +297 -44
  30. data/lib/ass_launcher/enterprise/cli/spec_dsl/dsl_helpers.rb +111 -5
  31. data/lib/ass_launcher/enterprise/cli/spec_dsl.rb +102 -51
  32. data/lib/ass_launcher/enterprise/cli.rb +50 -90
  33. data/lib/ass_launcher/enterprise/cli_def/8.2.17.rb +317 -0
  34. data/lib/ass_launcher/enterprise/cli_def/8.2.18.rb +3 -0
  35. data/lib/ass_launcher/enterprise/cli_def/8.3.3.rb +90 -0
  36. data/lib/ass_launcher/enterprise/cli_def/8.3.4.rb +58 -0
  37. data/lib/ass_launcher/enterprise/cli_def/8.3.5.rb +21 -0
  38. data/lib/ass_launcher/enterprise/cli_def/8.3.6.rb +91 -0
  39. data/lib/ass_launcher/enterprise/cli_def/8.3.7.rb +34 -0
  40. data/lib/ass_launcher/enterprise/cli_def/8.3.8.rb +127 -0
  41. data/lib/ass_launcher/enterprise/cli_def/8.3.9.rb +131 -0
  42. data/lib/ass_launcher/enterprise/cli_def.rb +46 -0
  43. data/lib/ass_launcher/enterprise/cli_defs_loader.rb +36 -0
  44. data/lib/ass_launcher/enterprise/ole/ole_binaries.rb +9 -2
  45. data/lib/ass_launcher/enterprise/ole/win32ole.rb +1 -1
  46. data/lib/ass_launcher/enterprise/ole.rb +17 -1
  47. data/lib/ass_launcher/enterprise/web_client.rb +164 -0
  48. data/lib/ass_launcher/enterprise.rb +33 -6
  49. data/lib/ass_launcher/support/connection_string.rb +33 -8
  50. data/lib/ass_launcher/support/linux.rb +88 -0
  51. data/lib/ass_launcher/support/platforms.rb +42 -10
  52. data/lib/ass_launcher/support/shell.rb +33 -6
  53. data/lib/ass_launcher/support/v8i_file.rb +3 -1
  54. data/lib/ass_launcher/support/v8i_section.rb +88 -40
  55. data/lib/ass_launcher/support.rb +1 -0
  56. data/lib/ass_launcher/version.rb +8 -1
  57. data/lib/ass_launcher.rb +1 -0
  58. metadata +79 -17
  59. data/lib/ass_launcher/enterprise/cli/cli.spec +0 -256
  60. data/lib/ass_launcher/enterprise/web_clients.rb +0 -59
@@ -25,7 +25,7 @@ module AssLauncher
25
25
  end
26
26
 
27
27
  def parameters
28
- @parameters ||= Parameters::ParametersList.new
28
+ @parameters ||= Parameters::AllParameters.new
29
29
  end
30
30
 
31
31
  attr_accessor :current_modes
@@ -44,21 +44,127 @@ module AssLauncher
44
44
  end
45
45
  private :current_parent
46
46
 
47
- def new_param(klass, name, desc, binary_matcher, **options, &block)
48
- p = klass.new(name, desc, binary_matcher, current_group,
47
+ def new_param(klass, name, desc, clients = [], options = {}, &block)
48
+ fail 'Group must be specifed' if current_group.nil?
49
+ fail 'Modes must be specifed' if current_modes.nil?
50
+ p = klass.new(name, desc,
51
+ new_binary_matcher(clients),
52
+ current_group,
49
53
  current_modes, current_parent, **options)
50
- return unless p.match?(binary_wrapper, run_mode)
51
- parameters << p
54
+ add_parameter(p)
52
55
  eval_sub_params(p, &block) if block_given?
53
56
  end
54
57
  private :new_param
55
58
 
59
+ def new_binary_matcher(clients)
60
+ return (inherid_binary_matcher || auto_binary_matcher) if\
61
+ clients.size == 0
62
+ BinaryMatcher.new(clients, from_current_version)
63
+ end
64
+ private :new_binary_matcher
65
+
66
+ def auto_binary_matcher
67
+ BinaryMatcher.auto(current_modes, from_current_version)
68
+ end
69
+ private :auto_binary_matcher
70
+
71
+ def inherid_binary_matcher
72
+ BinaryMatcher.new(current_parent.binary_matcher.clients,
73
+ from_current_version) if current_parent
74
+ end
75
+ private :inherid_binary_matcher
76
+
77
+ def change_param(name, &block)
78
+ p = get_parameter(name)
79
+ old_g = current_group
80
+ old_m = current_modes
81
+ self.current_group = p.group
82
+ self.current_modes = p.modes
83
+ eval_sub_params(p, &block) if block_given?
84
+ self.current_group = old_g
85
+ self.current_modes = old_m
86
+ end
87
+ private :change_param
88
+
89
+ def get_parameter(name)
90
+ p = parameters.find_for_version(name,
91
+ current_parent,
92
+ current_version)
93
+ fail "Parameter #{name} not found for #{current_version}." unless p
94
+ p
95
+ end
96
+ private :get_parameter
97
+
98
+ def add_parameter(p)
99
+ parameters.add p, current_version
100
+ end
101
+ private :add_parameter
102
+
103
+ # @return [nil]
104
+ def restrict_params(name, v)
105
+ get_parameters(name).each do |p|
106
+ p.restrict_from(v)
107
+ end
108
+ nil
109
+ end
110
+ private :restrict_params
111
+
112
+ def get_parameters(name)
113
+ p = parameters.find(name, current_parent)
114
+ fail "Parameter #{name} not found." if p.size == 0
115
+ p
116
+ end
117
+ private :get_parameters
118
+
56
119
  def eval_sub_params(p, &block)
57
120
  parents_stack.unshift p
58
121
  instance_eval(&block)
59
122
  parents_stack.shift
60
123
  end
61
124
  private :eval_sub_params
125
+
126
+ def enterprise_versions
127
+ @enterprise_versions ||= []
128
+ end
129
+
130
+ def add_enterprise_versions(v)
131
+ fail ArgumentError, 'Invalid version sequences. Expects version >'\
132
+ " #{current_version} but given #{v}" unless v > current_version
133
+ enterprise_versions << v
134
+ end
135
+ private :add_enterprise_versions
136
+
137
+ def reset_all
138
+ reset_group
139
+ reset_modes
140
+ end
141
+ private :reset_all
142
+
143
+ def reset_group
144
+ self.current_group = nil
145
+ end
146
+ private :reset_group
147
+
148
+ def reset_modes
149
+ self.current_modes = nil
150
+ end
151
+ private :reset_modes
152
+
153
+ def current_version
154
+ return Gem::Version.new('0') if enterprise_versions.last.nil?
155
+ enterprise_versions.last
156
+ end
157
+ private :current_version
158
+
159
+ def from_current_version
160
+ from_version current_version
161
+ end
162
+ private :from_current_version
163
+
164
+ def from_version(v)
165
+ Gem::Version::Requirement.new ">= #{v}"
166
+ end
167
+ private :from_version
62
168
  end
63
169
  end
64
170
  end
@@ -7,13 +7,14 @@ module AssLauncher
7
7
  # @api public
8
8
  module SpecDsl
9
9
  require 'ass_launcher/enterprise/cli/spec_dsl/dsl_helpers'
10
- require 'uri'
10
+ require 'addressable/uri'
11
11
  include DslHelpers
12
12
 
13
13
  # Define 1C:Enterprise version for defined CLI specifications
14
14
  # @param v [String] 1C:Enterprise verion string
15
- def enterprise_version(v = '0')
16
- @enterprise_version ||= Gem::Version.new(v)
15
+ def enterprise_version(v)
16
+ reset_all
17
+ add_enterprise_versions Gem::Version.new(v)
17
18
  end
18
19
 
19
20
  # Describe run modes specifications
@@ -35,28 +36,23 @@ module AssLauncher
35
36
  { desc: _t(desc), priority: priority }
36
37
  end
37
38
 
38
- # Binary matcher for 1C:Enterprise thick client for which CLI parameter
39
- # defined
40
- # @param v [String] version of 1C:Enterprise client
41
- # @return [Cli::BinaryMatcher]
42
- def thick_client(v = '>= 0')
43
- BinaryMatcher.new(:thick, v)
39
+
40
+ # Return 1C client identifier see {BinaryMatcher::ALL_CLIENTS}
41
+ # @return [Symbol] :thick
42
+ def thick
43
+ :thick
44
44
  end
45
45
 
46
- # Binary matcher for 1C:Enterprise thin client for which CLI parameter
47
- # defined
48
- # @param (see #thick_client)
49
- # @return (see #thick_client)
50
- def thin_client(v = '>= 0')
51
- BinaryMatcher.new(:thin, v)
46
+ # Return 1C client identifier see {BinaryMatcher::ALL_CLIENTS}
47
+ # @return [Symbol] :thin
48
+ def thin
49
+ :thin
52
50
  end
53
51
 
54
- # Binary matcher for 1C:Enterprise thin and thick clients for
55
- # which CLI parameter defined
56
- # @param (see #thick_client)
57
- # @return (see #thick_client)
58
- def all_client(v = '>= 0')
59
- BinaryMatcher.new(:all, v)
52
+ # Return 1C client identifier see {BinaryMatcher::ALL_CLIENTS}
53
+ # @return [Symbol] :web
54
+ def web
55
+ :web
60
56
  end
61
57
 
62
58
  # Block to define CLI parameters for run modes
@@ -64,11 +60,17 @@ module AssLauncher
64
60
  # @raise if passed invalid 1C:Enterprise run mode
65
61
  # @raise if call without block
66
62
  def mode(*modes, &block)
67
- fail "Undefined modes #{modes}" if (defined_modes & modes).size == 0
68
- fail 'method `mode` block required' unless block_given?
63
+ fail_if_wrong_modes modes
64
+ fail 'Block required' unless block_given?
69
65
  self.current_modes = modes
70
66
  instance_eval(&block)
67
+ reset_modes
68
+ end
69
+
70
+ def fail_if_wrong_modes(modes)
71
+ fail "Undefined modes #{modes}" if (defined_modes & modes).size == 0
71
72
  end
73
+ private :fail_if_wrong_modes
72
74
 
73
75
  # Block to grouping CLI parameters into parameters group.
74
76
  # Group must be defined as {#define_group}
@@ -76,13 +78,19 @@ module AssLauncher
76
78
  # @raise if passed undefined group
77
79
  # @raise if call without block
78
80
  def group(key, &block)
79
- fail "Undefined parameters group #{key}"\
80
- unless parameters_groups.key? key
81
- fail 'method `group` block required' unless block_given?
81
+ fail_if_wrong_group(key)
82
+ fail 'Block required' unless block_given?
82
83
  self.current_group = key
83
84
  instance_eval(&block)
85
+ reset_group
84
86
  end
85
87
 
88
+ def fail_if_wrong_group(key)
89
+ fail "Undefined parameters group #{key}" unless parameters_groups
90
+ .key? key
91
+ end
92
+ private :fail_if_wrong_group
93
+
86
94
  # Build switch or chose list for CLI parameters clases:
87
95
  # {Cli::Parameters::Switch} or {Cli::Parameters::Chose}
88
96
  # @param options [Hash] +:key+ is argument for CLI parameter, +value+ is
@@ -99,33 +107,57 @@ module AssLauncher
99
107
  # @param name [String] name of 1C:Enterprise CLI parameter
100
108
  # @param desc [String] description of 1C:Enterprise CLI parameter for
101
109
  # build help message
102
- # @param binary_matcher [Cli::BinaryMatcher] uses DSL:
103
- # {#thick_client}, {#thin_client} or {#all_client}. If +nil+ uses
104
- # {Cli::BinaryMatcher} for all 1C clients and all client's
105
- # verions like returns {#all_client} method
110
+ # @param clients [Array] uses DSL:
111
+ # {#thick}, {#thin} or {#web}. On default uses
112
+ # array for all 1C clients {BinaryMatcher::ALL_CLIENTS}
106
113
  # @param options (see Cli::Parameters::StringParam#initialize)
107
114
  # @return [Cli::Parameters::Path]
108
- def path(name, desc, binary_matcher = nil, **options, &block)
115
+ def path(name, desc, *clients, **options, &block)
109
116
  new_param(Parameters::Path, name, desc,
110
- binary_matcher, **options, &block)
117
+ clients, **options, &block)
118
+ end
119
+
120
+ # Path with exist validation.
121
+ # @see #path
122
+ # @param (see #path)
123
+ # @return (see #path)
124
+ def path_exist(name, desc, *clients, **options, &block)
125
+ path(name, desc, *clients, options.merge(must_be: :exist),
126
+ &block)
127
+ end
128
+
129
+ # Path with not exist validation.
130
+ # @see #path
131
+ # @param (see #path)
132
+ # @return (see #path)
133
+ def path_not_exist(name, desc, *clients, **options, &block)
134
+ path(name, desc, *clients,
135
+ options.merge(must_be: :not_exist),
136
+ &block)
137
+ end
138
+
139
+ # @return [Cli::Parameters::PathTwice]
140
+ def path_twice(name, desc, *clients, **options, &block)
141
+ new_param(Parameters::PathTwice, name, desc,
142
+ clients, **options, &block)
111
143
  end
112
144
 
113
145
  # Define {Cli::Parameters::StringParam} parameter and him subparameters.
114
146
  # Subparameters defines in the block.
115
147
  # @param (see #path)
116
148
  # @return [Cli::Parameters::StringParam]
117
- def string(name, desc, binary_matcher = nil, **options, &block)
149
+ def string(name, desc, *clients, **options, &block)
118
150
  new_param(Parameters::StringParam, name, desc,
119
- binary_matcher, **options, &block)
151
+ clients, **options, &block)
120
152
  end
121
153
 
122
154
  # Define {Cli::Parameters::Flag} parameter and him subparameters.
123
155
  # Subparameters defines in the block.
124
156
  # @param (see #path)
125
157
  # @return [Cli::Parameters::Flag]
126
- def flag(name, desc, binary_matcher = nil, **options, &block)
158
+ def flag(name, desc, *clients, **options, &block)
127
159
  new_param(Parameters::Flag, name, desc,
128
- binary_matcher, **options, &block)
160
+ clients, **options, &block)
129
161
  end
130
162
 
131
163
  # Define {Cli::Parameters::Switch} parameter and him subparameters.
@@ -133,9 +165,9 @@ module AssLauncher
133
165
  # @note use helper {#switch_list} for build +:switch_list+ option
134
166
  # @param (see #path)
135
167
  # @return [Cli::Parameters::Switch]
136
- def switch(name, desc, binary_matcher = nil, **options, &block)
168
+ def switch(name, desc, *clients, **options, &block)
137
169
  new_param(Parameters::Switch, name, desc,
138
- binary_matcher, **options, &block)
170
+ clients, options, &block)
139
171
  end
140
172
 
141
173
  # Define {Cli::Parameters::Chose} parameter and him subparameters.
@@ -143,9 +175,9 @@ module AssLauncher
143
175
  # @note use helper {#chose_list} for build +:chose_list+ option
144
176
  # @param (see #path)
145
177
  # @return [Cli::Parameters::Chose]
146
- def chose(name, desc, binary_matcher = nil, **options, &block)
178
+ def chose(name, desc, *clients, **options, &block)
147
179
  new_param(Parameters::Chose, name, desc,
148
- binary_matcher, **options, &block)
180
+ clients, options, &block)
149
181
  end
150
182
 
151
183
  # Define {Cli::Parameters::StringParam} parameter suitable for
@@ -153,18 +185,19 @@ module AssLauncher
153
185
  # @note It initialize +:value_validator+ option with +Proc+
154
186
  # @param (see #path)
155
187
  # @return [Cli::Parameters::StringParam]
156
- def url(name, desc, binary_matcher = nil, **options, &block)
188
+ def url(name, desc, *clients, **options, &block)
157
189
  options[:value_validator] = url_value_validator(name)
158
- string(name, desc, binary_matcher, **options, &block)
190
+ string(name, desc, *clients, **options, &block)
159
191
  end
160
192
 
161
193
  def url_value_validator(n)
162
194
  proc do |value|
163
195
  begin
164
- URI(value)
165
- rescue
196
+ uri = Addressable::URI.parse(value)
197
+ fail 'Host is nil' if uri.host.nil?
198
+ rescue Exception => e
166
199
  raise ArgumentError,
167
- "Invalid URL for parameter `#{n}': `#{value}'"
200
+ "Invalid URL for parameter `#{n}': `#{value}' #{e.message}"
168
201
  end
169
202
  value
170
203
  end
@@ -176,9 +209,9 @@ module AssLauncher
176
209
  # @note It initialize +:value_validator+ option with +Proc+
177
210
  # @param (see #path)
178
211
  # @return [Cli::Parameters::StringParam]
179
- def num(name, desc, binary_matcher = nil, **options, &block)
212
+ def num(name, desc, *clients, **options, &block)
180
213
  options[:value_validator] = num_value_validator(name)
181
- string(name, desc, binary_matcher, **options, &block)
214
+ string(name, desc, *clients, **options, &block)
182
215
  end
183
216
 
184
217
  def num_value_validator(n)
@@ -194,14 +227,32 @@ module AssLauncher
194
227
  end
195
228
  private :num_value_validator
196
229
 
230
+ # Restrict already specified parameter +name+
231
+ # recursively with all subparameters
232
+ # @param name (see #path)
233
+ # @return (see DslHelpers#restrict_params)
234
+ def restrict(name)
235
+ restrict_params(name, current_version)
236
+ end
237
+
238
+ # Change specifications of subparameters for already
239
+ # specified parameter +name+
240
+ def change(name, &block)
241
+ change_param name, &block
242
+ end
243
+
197
244
  # Stub for skipped parameter. Many 1C:Enterprise CLI parameters is not
198
245
  # imprtant for describe in {Cli::CliSpec}. For define it fact, you can
199
246
  # use this method.
200
- # @todo may be registring skipped parameter for worning?
201
247
  # @param (see #path)
202
- # @return [nil]
203
- def skip(name, desc = '', binary_matcher = nil, **options, &block)
204
- # nop
248
+ # @return [Cli::Parameters::Skip]
249
+ def skip(name, desc = '')
250
+ p = Parameters::Skip.new(name, desc,
251
+ new_binary_matcher([:skip]),
252
+ :skip,
253
+ [:skip], current_parent)
254
+ add_parameter p
255
+ p
205
256
  end
206
257
  end # SpecDsl
207
258
  end
@@ -1,12 +1,6 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module AssLauncher
4
- class Configuration
5
- # 1C Enterprise cli specifications text written on Cli::SpecDsl
6
- def platform_cli_spec
7
- @platform_cli_spec ||= Enterprise::Cli::CliSpec.load
8
- end
9
- end
10
4
  module Enterprise
11
5
  # @api private
12
6
  # 1C:Enterprise cli api wrapper
@@ -14,117 +8,83 @@ module AssLauncher
14
8
  require 'ass_launcher/enterprise/cli/arguments_builder'
15
9
  require 'ass_launcher/enterprise/cli/parameters'
16
10
  require 'ass_launcher/enterprise/cli/spec_dsl'
11
+ require 'ass_launcher/enterprise/cli/binary_matcher'
17
12
 
18
- # Run modes defined for 1C Enterprise binary client
13
+ # Run modes defined for 1C Enterprise clients
19
14
  DEFINED_MODES = [
20
15
  :createinfobase,
21
16
  :enterprise,
22
- :designer
17
+ :designer,
18
+ :webclient
23
19
  ].freeze
24
20
 
25
21
  # Return suitable run_mode see {DEFINED_MODES} for
26
22
  # 1c client
27
- # @param cl [BinaryWrapper::ThinClient, BinaryWrapper::ThickClient]
23
+ # @param klass [BinaryWrapper::ThinClient, BinaryWrapper::ThickClient,
24
+ # WebClient]
28
25
  # @return [Array<Symbol>]
29
- def self.defined_modes_for(cl)
30
- return [DEFINED_MODES[1]] if cl.instance_of? BinaryWrapper::ThinClient
31
- return DEFINED_MODES if cl.instance_of? BinaryWrapper::ThickClient
26
+ def self.defined_modes_for(klass)
27
+ return [DEFINED_MODES[1]] if klass == BinaryWrapper::ThinClient
28
+ return DEFINED_MODES - [:webclient]\
29
+ if klass == BinaryWrapper::ThickClient
30
+ return [DEFINED_MODES.last] if klass == WebClient
32
31
  end
33
32
 
34
- # Load and 1C Enterprise cli specifications
35
- # for buld cli api and cli api help
33
+ # 1C Enterprise cli specifications
34
+ # for {BinaryWrapper::ThinClient}, {BinaryWrapper::ThickClient}
35
+ # or for {WebClient}
36
+ # @api public
36
37
  class CliSpec
37
- def self.loader(binary, run_mode)
38
- Class.new do
39
- include AssLauncher::Enterprise::Cli::SpecDsl
40
- attr_reader :run_mode, :binary_wrapper
41
- def initialize(binary_wrapper, run_mode)
42
- @binary_wrapper = binary_wrapper
43
- @run_mode = run_mode
44
- end
45
- end.new(binary, run_mode)
46
- end
47
- private_class_method :loader
48
-
49
- # @api private
50
- # @todo In future, may be, should extract +cli.spec+ and use
51
- # configurable +cli.spec+ path
52
- def self.load
53
- spec = File.read(File.expand_path('../cli/cli.spec',__FILE__))
54
- end
55
-
56
- # Max 1C Enterprise version
57
- # for which defined parameters
58
- # @return [Gem::Version]
59
- attr_reader :enterprise_version
60
- # Defined 1C Enterprise cli parameters
61
- # @return [Parameters::ParamtersList]
62
- attr_reader :parameters
63
- # 1C Enterprise run modes descriptions for build cli api help
64
- # @return (see Cli::SpecDsl#described_modes)
65
- attr_reader :run_modes
66
- # Description for 1C Enterprise cli parameters group for group
67
- # parameters in cli help
68
- # @return (see Cli::SpecDsl#described_modes)
69
- attr_reader :groups
70
38
 
71
- attr_reader :current_run_mode
39
+ # see +binary_wrapper+ parameter for {#initialize}
40
+ attr_reader :binary_wrapper
41
+ alias_method :current_binary_wrapper, :binary_wrapper
72
42
 
73
- attr_reader :current_binary_wrapper
74
-
75
- # @api private
76
- def initialize(parameters, modes, groups,
77
- enterprise_version, binary_wrapper, run_mode)
78
- @run_modes = modes.select { |k, v| binary_wrapper.run_modes.include? k }
79
- @groups = groups
80
- @enterprise_version = enterprise_version
81
- @current_run_mode = run_mode
82
- @current_binary_wrapper = binary_wrapper
83
- @parameters = parameters
43
+ # @param binary_wrapper
44
+ # (see Cli::Parameters::AllParameters#to_parameters_list)
45
+ def initialize(binary_wrapper)
46
+ @binary_wrapper = binary_wrapper
84
47
  end
85
48
 
86
- # Build suitable cli specifications for 1C Enterprise binary type,
87
- # version and run mode
88
- # @param binary [BinaryWrapper::ThinClient, BinaryWrapper::ThickClient]
89
- # @param run_mode [Symbol] see {Cli::DEFINED_MODES}
90
- def self.for(binary, run_mode)
91
- l = loader(binary, run_mode)
92
- l.instance_eval(AssLauncher.config.platform_cli_spec)
93
- new(l.parameters,
94
- l.described_modes,
95
- l.parameters_groups,
96
- l.enterprise_version,
97
- binary,
98
- run_mode)
49
+ # Return parameters specified for
50
+ # 1C:Enterprise client wrappend into {#binary_wrapper}
51
+ # for given +run_mode+
52
+ # @param run_mode (see
53
+ # Cli::Parameters::AllParameters#to_parameters_list)
54
+ # @return [Cli::Parameters::ParametersList]
55
+ def parameters(run_mode)
56
+ cli_def.parameters.to_parameters_list(binary_wrapper, run_mode)
99
57
  end
100
58
 
101
- def usage(run_mode = nil)
102
- raise NotImplementedError
59
+ # @return [CliDef]
60
+ def self.cli_def
61
+ @cli_def ||= load_cli_def
103
62
  end
104
- end
105
63
 
106
- # @api private
107
- class BinaryMatcher
108
- attr_reader :client, :requirement
109
- def initialize(client = :all, version = '>= 0')
110
- @client = client.to_sym
111
- @requirement = Gem::Requirement.new version
64
+ # (see .cli_def)
65
+ def cli_def
66
+ self.class.cli_def
112
67
  end
113
68
 
114
- def match?(binary_wrapper)
115
- match_client?(binary_wrapper) && match_version?(binary_wrapper)
69
+ def self.load_cli_def
70
+ require 'ass_launcher/enterprise/cli_def'
71
+ CliDef
116
72
  end
73
+ private_class_method :load_cli_def
117
74
 
118
- private
119
- def match_client?(bw)
120
- return true if client == :all
121
- client == bw.class.name.split('::').last.
122
- to_s.downcase.gsub(/client$/,'').to_sym
75
+ # Build suitable cli specifications for 1C Enterprise binary type,
76
+ # version and run mode
77
+ # @param (see #initialize)
78
+ def self.for(binary_wrapper)
79
+ new(binary_wrapper)
123
80
  end
124
81
 
125
- def match_version?(bw)
126
- requirement.satisfied_by? bw.version
82
+ # :nocov:
83
+ # @todo Implemets this
84
+ def usage(run_mode = nil)
85
+ raise NotImplementedError
127
86
  end
87
+ # :nocov:
128
88
  end
129
89
  end
130
90
  end