ass_maintainer-info_bases 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 95dd835223f6fc962a45aeb6a6f7907e25d805c3
|
4
|
+
data.tar.gz: e3148beb76453ec283e9ee1bc58e33c695dc288a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2df93dd0f5e85f297d3c5af71d86134e47e71f1b3c69f1005d777d0e196fafccd971a55529d0cc6b9d4e7823bbfd74c4c5be329354252fe20a43de63e6543942
|
7
|
+
data.tar.gz: fda580e493c02e258278e2582098f076403935453e0fe2887e9d97e9dacdbc88782fb00de1ab751b3727471aaa03e85a2ffd573d953fbd4d751622b1b71e7f1c
|
data/README.md
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
[![Gem Version](https://badge.fury.io/rb/ass_maintainer-info_bases.svg)](https://badge.fury.io/rb/ass_maintainer-info_bases)
|
1
2
|
# AssMaintainer::InfoBases
|
2
3
|
|
3
4
|
Gem provides [infobase](https://github.com/leoniv/ass_maintainer-info_base)
|
@@ -25,7 +26,9 @@ Or install it yourself as:
|
|
25
26
|
|
26
27
|
## Usage
|
27
28
|
|
28
|
-
### `TestInfoBase`
|
29
|
+
### `class AssMaintainer::InfoBases::TestInfoBase`
|
30
|
+
|
31
|
+
Class for testing 1C:Enterprise application.
|
29
32
|
|
30
33
|
```ruby
|
31
34
|
require 'ass_maintainer/info_bases/test_info_base'
|
@@ -46,6 +49,88 @@ Or install it yourself as:
|
|
46
49
|
|
47
50
|
```
|
48
51
|
|
52
|
+
### `class AssMaintainer::InfoBases::TmpInfoBase`
|
53
|
+
|
54
|
+
Temporary infobase. Proper for cases when require make temporary
|
55
|
+
1C application do anything and remove after.
|
56
|
+
Temporary infobase is file infobase always. It makes in temporary
|
57
|
+
directory.
|
58
|
+
|
59
|
+
#### Simple example.
|
60
|
+
|
61
|
+
Convers application xml source to `.cf` file
|
62
|
+
|
63
|
+
```ruby
|
64
|
+
require 'ass_maintainer/info_bases/tmp_info_base'
|
65
|
+
|
66
|
+
PLATFORM_REQUIRE = '~> 8.3.10.0'
|
67
|
+
|
68
|
+
src = File.expand_path('../app.src', __FILE__)
|
69
|
+
|
70
|
+
# Do in the block with auto remove infobase
|
71
|
+
AssMaintainer::InfoBases::TmpInfoBase.make_rm src,
|
72
|
+
platform_require: PLATFORM_REQUIRE do |ib|
|
73
|
+
ib.db_cfg.dump('tmp/app.cf')
|
74
|
+
end
|
75
|
+
|
76
|
+
# Or remove infobase manually
|
77
|
+
tmp_ib = AssMaintainer::InfoBases::TmpInfoBase
|
78
|
+
.new(src, platform_require: PLATFORM_REQUIRE)
|
79
|
+
tmp_ib.make
|
80
|
+
tmp_ib.db_cfg.dump('tmp/app.cf')
|
81
|
+
tmp_ib.rm!
|
82
|
+
|
83
|
+
# Or do with AssMaintainer::InfoBases::TmpInfoBase::Api
|
84
|
+
|
85
|
+
include AssMaintainer::InfoBases::TmpInfoBase::Api
|
86
|
+
|
87
|
+
with_tmp_ib src, platform_require: PLATFORM_REQUIRE do |ib|
|
88
|
+
ib.db_cfg.dump('tmp/app.cf')
|
89
|
+
end
|
90
|
+
|
91
|
+
```
|
92
|
+
|
93
|
+
#### More complex example.
|
94
|
+
|
95
|
+
Update application `.cf` file up to required version from update files `.cfu`
|
96
|
+
|
97
|
+
```ruby
|
98
|
+
require 'ass_maintainer/info_bases/tmp_info_base'
|
99
|
+
|
100
|
+
class Updater < AssMaintainer::InfoBases::TmpInfoBase
|
101
|
+
def update_to(cfu_file, force = false)
|
102
|
+
designer do
|
103
|
+
_UpdateCfg cfu_file do
|
104
|
+
_Force if force
|
105
|
+
end
|
106
|
+
end.run.wait.result.verify!
|
107
|
+
end
|
108
|
+
|
109
|
+
def self.execute(from_cf, cfu_files, cf_file, force = false)
|
110
|
+
make_rm from_cf do |ib|
|
111
|
+
cfu_files.each do |cfu|
|
112
|
+
ib.update_to(cfu, force)
|
113
|
+
end
|
114
|
+
ib.cfg.dump(cfu_file)
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
from_cf = File.join(templates_root, 'vendor', 'app', '0', '1cv8.cf')
|
120
|
+
cf_file = 'tmp/app.v3.cf'
|
121
|
+
|
122
|
+
templates_root = 'path/to/1c/updates'
|
123
|
+
cfu_files = ['1','2','3'].map do |v|
|
124
|
+
File.join(templates_root, 'vendor', 'app', v, '1cv8.cfu')
|
125
|
+
end
|
126
|
+
|
127
|
+
Updater.configure do |conf|
|
128
|
+
conf.platform_require = '~> 8.3.10.0'
|
129
|
+
end
|
130
|
+
|
131
|
+
Updater.execute(from_cf, cfu_files, cf_file)
|
132
|
+
```
|
133
|
+
|
49
134
|
## Development
|
50
135
|
|
51
136
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module AssMaintainer
|
2
2
|
module InfoBases
|
3
3
|
require 'ass_maintainer/info_base'
|
4
|
-
# Class for
|
4
|
+
# Class for testing 1C:Enterprise application.
|
5
5
|
# It like {https://github.com/leoniv/ass_maintainer-info_base
|
6
6
|
# AssMaintainer::InfoBase} but {#initialize} accepts two additional
|
7
7
|
# {OPTIONS}:
|
@@ -0,0 +1,137 @@
|
|
1
|
+
module AssMaintainer
|
2
|
+
module InfoBases
|
3
|
+
require 'ass_maintainer/info_bases/test_info_base'
|
4
|
+
require 'ass_maintainer/info_bases/support'
|
5
|
+
# Temporary infobase. Proper for cases when require make temporary
|
6
|
+
# 1C application do anything and remove after.
|
7
|
+
# Temporary infobase is file infobase always. It makes in temporary
|
8
|
+
# directory.
|
9
|
+
# @example Convert application xml source to +.cf+ file
|
10
|
+
# require 'ass_maintainer/info_bases/tmp_info_base'
|
11
|
+
#
|
12
|
+
# PLATFORM_REQUIRE = '~> 8.3.10.0'
|
13
|
+
#
|
14
|
+
# src = File.expand_path('../app.src', __FILE__)
|
15
|
+
#
|
16
|
+
# # Do in the block with auto remove infobase
|
17
|
+
# AssMaintainer::InfoBases::TmpInfoBase.make_rm src,
|
18
|
+
# platform_require: PLATFORM_REQUIRE do |ib|
|
19
|
+
# ib.db_cfg.dump('tmp/app.cf')
|
20
|
+
# end
|
21
|
+
#
|
22
|
+
# # Or remove infobase manually
|
23
|
+
# tmp_ib = AssMaintainer::InfoBases::TmpInfoBase
|
24
|
+
# .new(src, platform_require: PLATFORM_REQUIRE)
|
25
|
+
# tmp_ib.make
|
26
|
+
# tmp_ib.db_cfg.dump('tmp/app.cf')
|
27
|
+
# tmp_ib.rm!
|
28
|
+
#
|
29
|
+
# @example Update application +.cf+ file up to required version from update files +.cfu+
|
30
|
+
# require 'ass_maintainer/info_bases/tmp_info_base'
|
31
|
+
#
|
32
|
+
# class Updater < AssMaintainer::InfoBases::TmpInfoBase
|
33
|
+
# def update_to(cfu_file, force = false)
|
34
|
+
# designer do
|
35
|
+
# _UpdateCfg cfu_file do
|
36
|
+
# _Force if force
|
37
|
+
# end
|
38
|
+
# end.run.wait.result.verify!
|
39
|
+
# end
|
40
|
+
#
|
41
|
+
# def self.execute(from_cf, cfu_files, cf_file, force = false)
|
42
|
+
# make_rm from_cf do |ib|
|
43
|
+
# cfu_files.each do |cfu|
|
44
|
+
# ib.update_to(cfu, force)
|
45
|
+
# end
|
46
|
+
# ib.cfg.dump(cfu_file)
|
47
|
+
# end
|
48
|
+
# end
|
49
|
+
# end
|
50
|
+
#
|
51
|
+
# from_cf = File.join(templates_root, 'vendor', 'app', '0', '1cv8.cf')
|
52
|
+
# cf_file = 'tmp/app.v3.cf'
|
53
|
+
#
|
54
|
+
# templates_root = 'path/to/1c/updates'
|
55
|
+
# cfu_files = ['1','2','3'].map do |v|
|
56
|
+
# File.join(templates_root, 'vendor', 'app', v, '1cv8.cfu')
|
57
|
+
# end
|
58
|
+
#
|
59
|
+
# Updater.configure do |conf|
|
60
|
+
# conf.platform_require = '~> 8.3.10.0'
|
61
|
+
# end
|
62
|
+
#
|
63
|
+
# Updater.execute(from_cf, cfu_files, cf_file)
|
64
|
+
#
|
65
|
+
class TmpInfoBase < AssMaintainer::InfoBases::TestInfoBase
|
66
|
+
include Support::TmpPath
|
67
|
+
extend Support::TmpPath
|
68
|
+
|
69
|
+
# Mixin for convenience to use.
|
70
|
+
# @example Convert application xml source to +.cf+ file
|
71
|
+
# require 'ass_maintainer/info_bases/tmp_info_base'
|
72
|
+
#
|
73
|
+
# PLATFORM_REQUIRE = '~> 8.3.10.0'
|
74
|
+
#
|
75
|
+
# # Convert application xml source to .cf file
|
76
|
+
# src = File.expand_path('../app.src', __FILE__)
|
77
|
+
#
|
78
|
+
# include AssMaintainer::InfoBases::TmpInfoBase::Api
|
79
|
+
#
|
80
|
+
# with_tmp_ib src, platform_require: PLATFORM_REQUIRE do |ib|
|
81
|
+
# ib.db_cfg.dump('tmp/app.cf')
|
82
|
+
# end
|
83
|
+
module Api
|
84
|
+
# (see AssMaintainer::InfoBases::TestInfoBase.make_rm)
|
85
|
+
def with_tmp_ib(template = nil, **options, &block)
|
86
|
+
AssMaintainer::InfoBases::TmpInfoBase
|
87
|
+
.make_rm(template, **options, &block)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
# Make new tmp infoabse and yield it in block
|
92
|
+
# after block executing remove tmp infobase
|
93
|
+
def self.make_rm(template = nil, **options, &block)
|
94
|
+
fail 'Block require' unless block_given?
|
95
|
+
ib = new(template, **options)
|
96
|
+
ib.make
|
97
|
+
begin
|
98
|
+
yield ib
|
99
|
+
ensure
|
100
|
+
ib.rm!
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
def initialize(template = nil, **opts)
|
105
|
+
opts_ = opts.dup
|
106
|
+
opts_ = opts_.merge! template: template if template
|
107
|
+
super *ArgsBuilder.new.args, **opts_
|
108
|
+
end
|
109
|
+
|
110
|
+
def rm!(*_)
|
111
|
+
super :yes
|
112
|
+
end
|
113
|
+
|
114
|
+
# @api private
|
115
|
+
class ArgsBuilder
|
116
|
+
include Support::TmpPath
|
117
|
+
include AssLauncher::Api
|
118
|
+
def args
|
119
|
+
[ib_name, ib_connstr, false]
|
120
|
+
end
|
121
|
+
|
122
|
+
def ib_connstr
|
123
|
+
@ib_connstr ||= cs_file(file: ib_path)
|
124
|
+
end
|
125
|
+
|
126
|
+
def ib_name
|
127
|
+
@ib_name ||= File.basename(tmp_path('ib')).gsub('-','_')
|
128
|
+
end
|
129
|
+
|
130
|
+
def ib_path
|
131
|
+
@ib_path ||= File.join(Dir.tmpdir, ib_name)
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ass_maintainer-info_bases
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Leonid Vlasov
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-01-
|
11
|
+
date: 2018-01-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ass_maintainer-info_base
|
@@ -127,6 +127,7 @@ files:
|
|
127
127
|
- lib/ass_maintainer/info_bases.rb
|
128
128
|
- lib/ass_maintainer/info_bases/support.rb
|
129
129
|
- lib/ass_maintainer/info_bases/test_info_base.rb
|
130
|
+
- lib/ass_maintainer/info_bases/tmp_info_base.rb
|
130
131
|
- lib/ass_maintainer/info_bases/version.rb
|
131
132
|
homepage: https://github.com/leoniv/ass_maintainer-info_bases
|
132
133
|
licenses: []
|