flight_config 0.2.0 → 0.3.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/lib/flight_config/exceptions.rb +1 -0
- data/lib/flight_config/has_indices.rb +53 -0
- data/lib/flight_config/indexable.rb +75 -0
- data/lib/flight_config/updater.rb +1 -1
- data/lib/flight_config/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8526bfd920f7e1e74a43402bd85998d5bfd997ad8e65fcff50db35b2d1e82616
|
4
|
+
data.tar.gz: fcd21613b191a9cd3df1e84780f62677b47b18ee84f86d0d75a883d42c5e385b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 11b70976a739890020e3d266da4e3acf39d04fab07d0447efa56a6db1d3cd712e162276a6fd29a35bf3572e534fb249dc4dae1ec12f905fd4bb1905a1eb5e288
|
7
|
+
data.tar.gz: b8e468998c06fea296e29bb1bb70d3f94d1e9cc94906748bc0612b928946e8ce3e96ecb852cf00e1982e550588dcc1517b5abd8a5c742a46a9f3c97c45842adb
|
@@ -0,0 +1,53 @@
|
|
1
|
+
#==============================================================================
|
2
|
+
# Copyright (C) 2019-present Alces Flight Ltd.
|
3
|
+
#
|
4
|
+
# This file is part of FlightConfig.
|
5
|
+
#
|
6
|
+
# This program and the accompanying materials are made available under
|
7
|
+
# the terms of the Eclipse Public License 2.0 which is available at
|
8
|
+
# <https://www.eclipse.org/legal/epl-2.0>, or alternative license
|
9
|
+
# terms made available by Alces Flight Ltd - please direct inquiries
|
10
|
+
# about licensing to licensing@alces-flight.com.
|
11
|
+
#
|
12
|
+
# FlightConfig is distributed in the hope that it will be useful, but
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
|
14
|
+
# IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS
|
15
|
+
# OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A
|
16
|
+
# PARTICULAR PURPOSE. See the Eclipse Public License 2.0 for more
|
17
|
+
# details.
|
18
|
+
#
|
19
|
+
# You should have received a copy of the Eclipse Public License 2.0
|
20
|
+
# along with FlightConfig. If not, see:
|
21
|
+
#
|
22
|
+
# https://opensource.org/licenses/EPL-2.0
|
23
|
+
#
|
24
|
+
# For more information on FlightConfig, please visit:
|
25
|
+
# https://github.com/openflighthpc/flight_config
|
26
|
+
#==============================================================================
|
27
|
+
|
28
|
+
module FightConfig
|
29
|
+
module HasIndices
|
30
|
+
def included(base)
|
31
|
+
base.extend(ClassMethods)
|
32
|
+
end
|
33
|
+
|
34
|
+
module ClassMethods
|
35
|
+
def has_indices(klass, &b)
|
36
|
+
@indices ||= []
|
37
|
+
@indices << [klass, b]
|
38
|
+
end
|
39
|
+
|
40
|
+
def indices
|
41
|
+
@indices ||= []
|
42
|
+
base = (defined?(super) ? super : [])
|
43
|
+
[*base, *@indices]
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def generate_indices
|
48
|
+
self.class.indices.each do |klass, block|
|
49
|
+
instance_exec(klass.method(:create_or_update), &block)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
#==============================================================================
|
2
|
+
# Copyright (C) 2019-present Alces Flight Ltd.
|
3
|
+
#
|
4
|
+
# This file is part of FlightConfig.
|
5
|
+
#
|
6
|
+
# This program and the accompanying materials are made available under
|
7
|
+
# the terms of the Eclipse Public License 2.0 which is available at
|
8
|
+
# <https://www.eclipse.org/legal/epl-2.0>, or alternative license
|
9
|
+
# terms made available by Alces Flight Ltd - please direct inquiries
|
10
|
+
# about licensing to licensing@alces-flight.com.
|
11
|
+
#
|
12
|
+
# FlightConfig is distributed in the hope that it will be useful, but
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
|
14
|
+
# IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS
|
15
|
+
# OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A
|
16
|
+
# PARTICULAR PURPOSE. See the Eclipse Public License 2.0 for more
|
17
|
+
# details.
|
18
|
+
#
|
19
|
+
# You should have received a copy of the Eclipse Public License 2.0
|
20
|
+
# along with FlightConfig. If not, see:
|
21
|
+
#
|
22
|
+
# https://opensource.org/licenses/EPL-2.0
|
23
|
+
#
|
24
|
+
# For more information on FlightConfig, please visit:
|
25
|
+
# https://github.com/openflighthpc/flight_config
|
26
|
+
#==============================================================================
|
27
|
+
|
28
|
+
require 'flight_config/reader'
|
29
|
+
require 'flight_config/globber'
|
30
|
+
|
31
|
+
module FlightConfig
|
32
|
+
module Indexable
|
33
|
+
include FlightConfig::Reader
|
34
|
+
include FlightConfig::Globber
|
35
|
+
|
36
|
+
def self.included(base)
|
37
|
+
base.extend(ClassMethods)
|
38
|
+
end
|
39
|
+
|
40
|
+
module ClassMethods
|
41
|
+
include FlightConfig::Reader::ClassMethods
|
42
|
+
|
43
|
+
def glob_read(*a)
|
44
|
+
super.reject do |index|
|
45
|
+
next if index.valid?
|
46
|
+
FileUtils.rm_f path
|
47
|
+
true
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def create_or_update(*a)
|
52
|
+
new!(*a, read_mode: true) do |index|
|
53
|
+
Core.log(index, "Generating index")
|
54
|
+
FileUtils.mkdir_p File.dirname(index.path)
|
55
|
+
FileUtils.touch index.path
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def valid?
|
61
|
+
raise NotImplementedError
|
62
|
+
end
|
63
|
+
|
64
|
+
def __data__
|
65
|
+
@__data__ ||= begin
|
66
|
+
if __read_mode__ && !valid?
|
67
|
+
FlightConfig::Core.log(self, 'Removing index')
|
68
|
+
FileUtils.rm_f path
|
69
|
+
raise InvalidIndex, 'Failed to load index as it is invalid'
|
70
|
+
end
|
71
|
+
{}
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -74,7 +74,7 @@ module FlightConfig
|
|
74
74
|
mode = File.exists?(_path(*a))
|
75
75
|
new!(*a, read_mode: mode) do |config|
|
76
76
|
Updater.create_or_update(config, action: 'create_or_update', &b)
|
77
|
-
end
|
77
|
+
end.tap { |c| c.generate_indices if c.respond_to?(:generate_indices) }
|
78
78
|
end
|
79
79
|
|
80
80
|
def create(*a, &b)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flight_config
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alces Flight Ltd
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-09-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: tty-config
|
@@ -117,6 +117,8 @@ files:
|
|
117
117
|
- lib/flight_config/deleter.rb
|
118
118
|
- lib/flight_config/exceptions.rb
|
119
119
|
- lib/flight_config/globber.rb
|
120
|
+
- lib/flight_config/has_indices.rb
|
121
|
+
- lib/flight_config/indexable.rb
|
120
122
|
- lib/flight_config/links.rb
|
121
123
|
- lib/flight_config/log.rb
|
122
124
|
- lib/flight_config/patches/tty_config.rb
|