grably 0.0.2 → 0.0.3
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/grably.rb +1 -8
- data/lib/grably/cli.rb +4 -4
- data/lib/grably/core/configuration.rb +51 -5
- data/lib/grably/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bf9742abda95d9380b462abfc4bb89378731258c0be527b2a3423088496232e0
|
4
|
+
data.tar.gz: 7861cf271dac8f6ca0bbec669fa25c4ca5b76bf9b3b88d2428abddd40a796b36
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fd7ba5ea17f663a65e15ed6b7bde8c1711d019e02fc33d6631254e8d081a86f98a66d127abefdedcea7d98b8a2d8a335628cc30af3dd902edff16fdcd376a6ae
|
7
|
+
data.tar.gz: 45de64bc16029816e57839a7aa7a49db3a2b09da54f8dd5176f97cc3729741264ad178b24d17dbeee8ee6d548e85599f3d5c7ea8e048e47f2bd6a0425cfd30fa
|
data/lib/grably.rb
CHANGED
@@ -14,11 +14,6 @@ module Grably
|
|
14
14
|
'/_/ \____/_/ \__,_/_.___/_/\__, (_) |' \
|
15
15
|
' /____/ |'.tr('|', "\n")
|
16
16
|
|
17
|
-
# Key where required profile is placed.
|
18
|
-
# To load grably with profile `foo,bar` one need to
|
19
|
-
# run `rake mp=foo,bar task1, task2, ... taskN`
|
20
|
-
ENV_PROFILE_KEY = 'mp'.freeze
|
21
|
-
|
22
17
|
def config
|
23
18
|
Grably.config
|
24
19
|
end
|
@@ -31,9 +26,7 @@ module Grably
|
|
31
26
|
class << self
|
32
27
|
attr_reader :config
|
33
28
|
def init
|
34
|
-
|
35
|
-
puts 'Loding profile ' + profile.join('/')
|
36
|
-
@config = Grably::Core::Configuration.load(profile)
|
29
|
+
@config = Grably::Core::Configuration.load
|
37
30
|
end
|
38
31
|
|
39
32
|
def server
|
data/lib/grably/cli.rb
CHANGED
@@ -3,7 +3,7 @@ require 'rake'
|
|
3
3
|
require 'yaml'
|
4
4
|
|
5
5
|
require_relative 'version'
|
6
|
-
|
6
|
+
require_relative 'core/configuration'
|
7
7
|
module Grably
|
8
8
|
# Grably CLI tool. Gives access to basic grably commands. Allowing to fetch
|
9
9
|
# basic infromation about build configuration, grably version and much more
|
@@ -12,8 +12,8 @@ module Grably
|
|
12
12
|
map %w(--version -v) => :version
|
13
13
|
map %w(x) => :exec
|
14
14
|
|
15
|
-
desc 'exec ...TASKS', 'Execute build tasks'
|
16
15
|
option :profile, type: :string, default: 'default', aliases: :'-p', banner: '<profile>'
|
16
|
+
desc 'exec ...TASKS', 'Execute build tasks'
|
17
17
|
def exec(*tasks)
|
18
18
|
Rake.application.run(tasks + ["mp=#{options[:profile]}"])
|
19
19
|
end
|
@@ -26,11 +26,11 @@ module Grably
|
|
26
26
|
Rake.application.run(args)
|
27
27
|
end
|
28
28
|
|
29
|
+
option :profile, type: :string, aliases: :'-p', banner: '<profile>'
|
29
30
|
desc 'config', 'Pretty print current configuration'
|
30
|
-
option :profile, type: :string, default: 'default', aliases: :'-p', banner: '<profile>'
|
31
31
|
def config
|
32
32
|
app = Rake.application
|
33
|
-
|
33
|
+
ENV[Grably::ENV_PROFILE_KEY] = options[:profile]
|
34
34
|
app.load_rakefile
|
35
35
|
Grably.config.pretty_print
|
36
36
|
end
|
@@ -10,6 +10,14 @@ module Grably
|
|
10
10
|
# We use jac for configuration
|
11
11
|
# @see https://github.com/vizor-games/jac
|
12
12
|
module Configuration
|
13
|
+
# Key where required profile is placed.
|
14
|
+
# To load grably with profile `foo,bar` one need to
|
15
|
+
# run `rake mp=foo,bar task1, task2, ... taskN`
|
16
|
+
ENV_PROFILE_KEY = 'mp'.freeze
|
17
|
+
|
18
|
+
# Key where binary configuration stored if any
|
19
|
+
ENV_BINCONFIG_KEY = 'BIN_CONFIG'.freeze
|
20
|
+
|
13
21
|
# Default configuration file names
|
14
22
|
CONFIGURATION_FILES = %w(grably.yml grably.user.yml grably.override.yml).freeze
|
15
23
|
|
@@ -21,17 +29,55 @@ module Grably
|
|
21
29
|
# names to read
|
22
30
|
# @return [OpenStruct] instance which contains all resolved profile fields
|
23
31
|
def read(profile, *streams)
|
24
|
-
Jac::Configuration.read(profile, *streams)
|
32
|
+
obj = Jac::Configuration.read(profile, *streams)
|
33
|
+
obj.extend(self)
|
34
|
+
obj
|
25
35
|
end
|
26
36
|
|
27
37
|
# Read configuration from configuration files.
|
28
38
|
# @praram [String or Array] profile which should be loaded
|
29
39
|
# @param [String] dir base directory path for provided files may be nil
|
30
40
|
# @return [OpenStruct] resolved profile values
|
31
|
-
def load(
|
32
|
-
|
33
|
-
|
34
|
-
|
41
|
+
def load(dir: nil, profile: [])
|
42
|
+
profile += (ENV[ENV_PROFILE_KEY] || 'default').split(',')
|
43
|
+
puts 'Loding profile ' + profile.join('/')
|
44
|
+
read(profile, *load_configuration_streams(dir))
|
45
|
+
end
|
46
|
+
|
47
|
+
def load_configuration_streams(dir)
|
48
|
+
# Read all known files
|
49
|
+
streams = CONFIGURATION_FILES
|
50
|
+
.map { |f| [dir ? File.join(Dir.pwd, f) : f, f] }
|
51
|
+
.select { |path, _name| File.exist?(path) }
|
52
|
+
.map { |path, name| [IO.read(path), name] }
|
53
|
+
|
54
|
+
streams << bin_config if bin_config?
|
55
|
+
streams
|
56
|
+
end
|
57
|
+
|
58
|
+
# Reads binary configuration as YAML configuration stream so it could
|
59
|
+
# be merged with other streams
|
60
|
+
def bin_config
|
61
|
+
data = hex_to_string ENV[ENV_BINCONFIG_KEY]
|
62
|
+
# Data will be walid YAML string. Trick is ident its contend and
|
63
|
+
# attach to ^top profile
|
64
|
+
[
|
65
|
+
"^top:\n" + data.split("\n").map { |x| ' ' + x }.join("\n"),
|
66
|
+
ENV_BINCONFIG_KEY
|
67
|
+
]
|
68
|
+
end
|
69
|
+
|
70
|
+
# Converts hex string representation to plain string
|
71
|
+
# @see https://en.wikipedia.org/wiki/Hexadecimal
|
72
|
+
def hex_to_string(str)
|
73
|
+
str.each_char.each_slice(2).inject('') do |acc, elem|
|
74
|
+
acc + elem.map(&:chr).inject(&:+).hex.chr
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
# Tells if binary configuration is provided
|
79
|
+
def bin_config?
|
80
|
+
ENV[ENV_BINCONFIG_KEY]
|
35
81
|
end
|
36
82
|
end
|
37
83
|
end
|
data/lib/grably/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: grably
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ilya Arkhanhelsky
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.1.
|
47
|
+
version: 0.1.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.1.
|
54
|
+
version: 0.1.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|