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.
- checksums.yaml +4 -4
- data/README.md +69 -67
- data/Rakefile +19 -0
- data/ass_launcher.gemspec +8 -2
- data/bin/dev-helper +7 -0
- data/bin/lib/dev_helper/cli_def_report.rb +191 -0
- data/bin/lib/dev_helper/cli_def_snippets.rb +426 -0
- data/bin/lib/dev_helper/designer.rb +172 -0
- data/bin/lib/dev_helper.rb +59 -0
- data/examples/arguments_builder_example.rb +150 -0
- data/examples/binary_wrappers_example.rb +211 -0
- data/examples/connection_string_example.rb +59 -0
- data/examples/create_infobase_example.rb +45 -0
- data/examples/enterprise_ole_example.rb +238 -0
- data/examples/enterprise_out_example.rb +87 -0
- data/examples/enterprise_running_example.rb +103 -0
- data/examples/example_helper.rb +122 -0
- data/examples/templates/example_template.cf +0 -0
- data/examples/templates/example_template.v8i +9 -0
- data/examples/templates/hello.epf +0 -0
- data/examples/troubles/with_creteinfobase_example.rb +408 -0
- data/examples/troubles/with_running_1c_example.rb +212 -0
- data/examples/v8i_file_example.rb +72 -0
- data/examples/webclient_example.rb +67 -0
- data/lib/ass_launcher/api.rb +113 -0
- data/lib/ass_launcher/enterprise/binary_wrapper.rb +159 -144
- data/lib/ass_launcher/enterprise/cli/arguments_builder.rb +177 -16
- data/lib/ass_launcher/enterprise/cli/binary_matcher.rb +69 -0
- data/lib/ass_launcher/enterprise/cli/parameters.rb +297 -44
- data/lib/ass_launcher/enterprise/cli/spec_dsl/dsl_helpers.rb +111 -5
- data/lib/ass_launcher/enterprise/cli/spec_dsl.rb +102 -51
- data/lib/ass_launcher/enterprise/cli.rb +50 -90
- data/lib/ass_launcher/enterprise/cli_def/8.2.17.rb +317 -0
- data/lib/ass_launcher/enterprise/cli_def/8.2.18.rb +3 -0
- data/lib/ass_launcher/enterprise/cli_def/8.3.3.rb +90 -0
- data/lib/ass_launcher/enterprise/cli_def/8.3.4.rb +58 -0
- data/lib/ass_launcher/enterprise/cli_def/8.3.5.rb +21 -0
- data/lib/ass_launcher/enterprise/cli_def/8.3.6.rb +91 -0
- data/lib/ass_launcher/enterprise/cli_def/8.3.7.rb +34 -0
- data/lib/ass_launcher/enterprise/cli_def/8.3.8.rb +127 -0
- data/lib/ass_launcher/enterprise/cli_def/8.3.9.rb +131 -0
- data/lib/ass_launcher/enterprise/cli_def.rb +46 -0
- data/lib/ass_launcher/enterprise/cli_defs_loader.rb +36 -0
- data/lib/ass_launcher/enterprise/ole/ole_binaries.rb +9 -2
- data/lib/ass_launcher/enterprise/ole/win32ole.rb +1 -1
- data/lib/ass_launcher/enterprise/ole.rb +17 -1
- data/lib/ass_launcher/enterprise/web_client.rb +164 -0
- data/lib/ass_launcher/enterprise.rb +33 -6
- data/lib/ass_launcher/support/connection_string.rb +33 -8
- data/lib/ass_launcher/support/linux.rb +88 -0
- data/lib/ass_launcher/support/platforms.rb +42 -10
- data/lib/ass_launcher/support/shell.rb +33 -6
- data/lib/ass_launcher/support/v8i_file.rb +3 -1
- data/lib/ass_launcher/support/v8i_section.rb +88 -40
- data/lib/ass_launcher/support.rb +1 -0
- data/lib/ass_launcher/version.rb +8 -1
- data/lib/ass_launcher.rb +1 -0
- metadata +79 -17
- data/lib/ass_launcher/enterprise/cli/cli.spec +0 -256
- 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::
|
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,
|
48
|
-
|
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
|
-
|
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
|
16
|
-
|
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
|
-
|
39
|
-
#
|
40
|
-
# @
|
41
|
-
|
42
|
-
|
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
|
-
#
|
47
|
-
#
|
48
|
-
|
49
|
-
|
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
|
-
#
|
55
|
-
#
|
56
|
-
|
57
|
-
|
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
|
-
|
68
|
-
fail '
|
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
|
-
|
80
|
-
|
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
|
103
|
-
# {#
|
104
|
-
#
|
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,
|
115
|
+
def path(name, desc, *clients, **options, &block)
|
109
116
|
new_param(Parameters::Path, name, desc,
|
110
|
-
|
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,
|
149
|
+
def string(name, desc, *clients, **options, &block)
|
118
150
|
new_param(Parameters::StringParam, name, desc,
|
119
|
-
|
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,
|
158
|
+
def flag(name, desc, *clients, **options, &block)
|
127
159
|
new_param(Parameters::Flag, name, desc,
|
128
|
-
|
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,
|
168
|
+
def switch(name, desc, *clients, **options, &block)
|
137
169
|
new_param(Parameters::Switch, name, desc,
|
138
|
-
|
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,
|
178
|
+
def chose(name, desc, *clients, **options, &block)
|
147
179
|
new_param(Parameters::Chose, name, desc,
|
148
|
-
|
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,
|
188
|
+
def url(name, desc, *clients, **options, &block)
|
157
189
|
options[:value_validator] = url_value_validator(name)
|
158
|
-
string(name, desc,
|
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
|
-
|
196
|
+
uri = Addressable::URI.parse(value)
|
197
|
+
fail 'Host is nil' if uri.host.nil?
|
198
|
+
rescue Exception => e
|
166
199
|
raise ArgumentError,
|
167
|
-
|
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,
|
212
|
+
def num(name, desc, *clients, **options, &block)
|
180
213
|
options[:value_validator] = num_value_validator(name)
|
181
|
-
string(name, desc,
|
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 [
|
203
|
-
def skip(name, desc = ''
|
204
|
-
|
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
|
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
|
23
|
+
# @param klass [BinaryWrapper::ThinClient, BinaryWrapper::ThickClient,
|
24
|
+
# WebClient]
|
28
25
|
# @return [Array<Symbol>]
|
29
|
-
def self.defined_modes_for(
|
30
|
-
return [DEFINED_MODES[1]] if
|
31
|
-
return DEFINED_MODES
|
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
|
-
#
|
35
|
-
# for
|
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
|
-
|
39
|
+
# see +binary_wrapper+ parameter for {#initialize}
|
40
|
+
attr_reader :binary_wrapper
|
41
|
+
alias_method :current_binary_wrapper, :binary_wrapper
|
72
42
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
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
|
-
#
|
87
|
-
#
|
88
|
-
#
|
89
|
-
# @param run_mode
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
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
|
-
|
102
|
-
|
59
|
+
# @return [CliDef]
|
60
|
+
def self.cli_def
|
61
|
+
@cli_def ||= load_cli_def
|
103
62
|
end
|
104
|
-
end
|
105
63
|
|
106
|
-
|
107
|
-
|
108
|
-
|
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
|
115
|
-
|
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
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
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
|
-
|
126
|
-
|
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
|