ass_launcher 0.1.1.alpha → 0.2.0

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