carthage_cache 0.1.4 → 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/exe/carthage_cache +2 -7
- data/lib/carthage_cache.rb +5 -3
- data/lib/carthage_cache/archiver.rb +2 -2
- data/lib/carthage_cache/configuration.rb +100 -0
- data/lib/carthage_cache/configurator.rb +19 -25
- data/lib/carthage_cache/configurator_wizard.rb +37 -0
- data/lib/carthage_cache/repository.rb +1 -3
- data/lib/carthage_cache/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 651775418076478a9fcb6ee5ba6f309b30a4a69a
|
4
|
+
data.tar.gz: 873fd418cf0782056954992dfdf7820a8c48f86d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3b22d9d6a9281e1b568bba3daad57bbbe4b0b04c0e8437b08580c7b880d76acab6f2ff3cd40659f11a483992fad8d642a9742f5d7bc67d7c1f6dc83372f44518
|
7
|
+
data.tar.gz: 66a2de4ef7c86a3abdb0139342aea9666895969b089483ae7ae06b8f549a65e82ee96cef9639899854ee7adcfe6928979001e09e2e26662e0c83dfd0d2eead45
|
data/exe/carthage_cache
CHANGED
@@ -65,13 +65,8 @@ command :config do |c|
|
|
65
65
|
c.description = "Generates a '#{CarthageCache::Configurator::CONFIG_FILE_NAME}' config file."
|
66
66
|
c.action do |args, options|
|
67
67
|
configurator = CarthageCache::Configurator.new(args.first || ".")
|
68
|
-
|
69
|
-
config
|
70
|
-
config[:aws_s3_client_options] = {}
|
71
|
-
config[:aws_s3_client_options][:region] = ask "What is the Amazon S3 region?"
|
72
|
-
config[:aws_s3_client_options][:access_key_id] = password "What is the AWS access key?"
|
73
|
-
config[:aws_s3_client_options][:secret_access_key] = password " What is the AWS secret access key?"
|
74
|
-
config.delete_if { |k,v| k == :bucket_name && v == "" }
|
68
|
+
wizard = CarthageCache::ConfiguratorWizard.new(method(:ask), method(:password))
|
69
|
+
config = wizard.start
|
75
70
|
configurator.save_config(config)
|
76
71
|
end
|
77
72
|
end
|
data/lib/carthage_cache.rb
CHANGED
@@ -7,7 +7,9 @@ require "carthage_cache/carthage_resolved_file"
|
|
7
7
|
require "carthage_cache/project"
|
8
8
|
require "carthage_cache/repository"
|
9
9
|
require "carthage_cache/terminal"
|
10
|
+
require "carthage_cache/configuration"
|
10
11
|
require "carthage_cache/configurator"
|
12
|
+
require "carthage_cache/configurator_wizard"
|
11
13
|
|
12
14
|
module CarthageCache
|
13
15
|
|
@@ -19,13 +21,13 @@ module CarthageCache
|
|
19
21
|
attr_reader :archiver
|
20
22
|
attr_reader :repository
|
21
23
|
attr_reader :project
|
22
|
-
attr_reader :
|
24
|
+
attr_reader :config
|
23
25
|
|
24
26
|
def initialize(project_path, verbose, config)
|
25
27
|
@terminal = Terminal.new(verbose)
|
26
28
|
@archiver = Archiver.new
|
27
|
-
@
|
28
|
-
@repository = Repository.new(
|
29
|
+
@config = Configurator.new(project_path, config).config
|
30
|
+
@repository = Repository.new(@config.bucket_name, @config.hash_object[:aws_s3_client_options])
|
29
31
|
@project = Project.new(project_path, CACHE_DIR_NAME, terminal)
|
30
32
|
end
|
31
33
|
|
@@ -0,0 +1,100 @@
|
|
1
|
+
require "yaml"
|
2
|
+
|
3
|
+
module CarthageCache
|
4
|
+
|
5
|
+
class Configuration
|
6
|
+
|
7
|
+
def self.supported_keys
|
8
|
+
@supported_keys ||= []
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.config_key(name)
|
12
|
+
supported_keys << name
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.valid?(config)
|
16
|
+
config[:bucket_name] &&
|
17
|
+
config.has_key?(:aws_s3_client_options) &&
|
18
|
+
config[:aws_s3_client_options][:region] &&
|
19
|
+
config[:aws_s3_client_options][:access_key_id] &&
|
20
|
+
config[:aws_s3_client_options][:secret_access_key]
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.parse(str)
|
24
|
+
config = YAML.load(str)
|
25
|
+
raise "Invalid configuration" unless valid?(config)
|
26
|
+
new(config)
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.default
|
30
|
+
@default ||= Configuration.new({
|
31
|
+
aws_s3_client_options: {
|
32
|
+
region: ENV['AWS_REGION'],
|
33
|
+
access_key_id: ENV['AWS_ACCESS_KEY_ID'],
|
34
|
+
secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']
|
35
|
+
}
|
36
|
+
})
|
37
|
+
end
|
38
|
+
|
39
|
+
config_key :bucket_name
|
40
|
+
config_key :aws_region
|
41
|
+
config_key :aws_access_key_id
|
42
|
+
config_key :aws_secret_access_key
|
43
|
+
|
44
|
+
attr_reader :hash_object
|
45
|
+
|
46
|
+
def initialize(hash_object = {})
|
47
|
+
@hash_object = hash_object
|
48
|
+
end
|
49
|
+
|
50
|
+
def to_yaml
|
51
|
+
hash_object.to_yaml
|
52
|
+
end
|
53
|
+
|
54
|
+
def valid?
|
55
|
+
self.class.valid?(hash_object)
|
56
|
+
end
|
57
|
+
|
58
|
+
def merge(c)
|
59
|
+
if c.is_a?(Hash)
|
60
|
+
@hash_object = hash_object.merge(c)
|
61
|
+
else
|
62
|
+
@hash_object = hash_object.merge(c.hash_object)
|
63
|
+
end
|
64
|
+
self
|
65
|
+
end
|
66
|
+
|
67
|
+
def method_missing(method_sym, *arguments, &block)
|
68
|
+
method_name = method_sym.to_s
|
69
|
+
key = method_name.chomp("=")
|
70
|
+
return super if !self.class.supported_keys.include?(key.to_sym)
|
71
|
+
config, key = extract_config_and_key(key)
|
72
|
+
|
73
|
+
if method_name.end_with?("=")
|
74
|
+
config[key] = arguments.first
|
75
|
+
else
|
76
|
+
config[key]
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def respond_to?(method_sym, include_private = false)
|
81
|
+
if self.class.supported_keys.include?(method_sym)
|
82
|
+
true
|
83
|
+
else
|
84
|
+
super
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
private
|
89
|
+
|
90
|
+
def extract_config_and_key(method_name)
|
91
|
+
if method_name =~ /^aws_(.*)$/
|
92
|
+
[hash_object[:aws_s3_client_options] ||= {}, $1.to_sym]
|
93
|
+
else
|
94
|
+
[hash_object, method_name.to_sym]
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
@@ -11,7 +11,7 @@ module CarthageCache
|
|
11
11
|
|
12
12
|
def initialize(project_path, base_config = {})
|
13
13
|
@config_file_path = File.join(project_path, CONFIG_FILE_NAME)
|
14
|
-
@base_config =
|
14
|
+
@base_config = merge_config(base_config)
|
15
15
|
end
|
16
16
|
|
17
17
|
def config
|
@@ -19,9 +19,8 @@ module CarthageCache
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def save_config(config)
|
22
|
-
|
23
|
-
|
24
|
-
end
|
22
|
+
raise "Invalid configuration" unless config.valid?
|
23
|
+
File.open(config_file_path, 'w') { |f| f.write config.to_yaml }
|
25
24
|
end
|
26
25
|
|
27
26
|
private
|
@@ -32,35 +31,30 @@ module CarthageCache
|
|
32
31
|
|
33
32
|
def load_config
|
34
33
|
if config_file_exist?
|
35
|
-
config =
|
36
|
-
raise "Invalid config file" unless valid?(config)
|
34
|
+
config = Configuration.parse(File.read(config_file_path))
|
37
35
|
config.merge(base_config)
|
38
36
|
else
|
39
37
|
base_config
|
40
38
|
end
|
41
39
|
end
|
42
40
|
|
43
|
-
def
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
41
|
+
def remove_nil_keys(hash)
|
42
|
+
hash.inject({}) do |new_hash, (k,v)|
|
43
|
+
unless v.nil? || (v.respond_to?(:empty?) && v.empty?)
|
44
|
+
if v.class == Hash
|
45
|
+
cleaned_hashed = remove_nil_keys(v)
|
46
|
+
new_hash[k] = cleaned_hashed unless cleaned_hashed.empty?
|
47
|
+
else
|
48
|
+
new_hash[k] = v
|
49
|
+
end
|
50
|
+
end
|
51
|
+
new_hash
|
52
|
+
end
|
54
53
|
end
|
55
54
|
|
56
|
-
def
|
57
|
-
|
58
|
-
|
59
|
-
}
|
60
|
-
config[:aws_s3_client_options][:region] = ENV['AWS_REGION'] if ENV['AWS_REGION']
|
61
|
-
config[:aws_s3_client_options][:access_key_id] = ENV['AWS_ACCESS_KEY_ID'] if ENV['AWS_ACCESS_KEY_ID']
|
62
|
-
config[:aws_s3_client_options][:secret_access_key] = ENV['AWS_SECRET_ACCESS_KEY'] if ENV['AWS_SECRET_ACCESS_KEY']
|
63
|
-
config.delete_if { |k, v| k == :aws_s3_client_options && v.empty? }
|
55
|
+
def merge_config(config)
|
56
|
+
new_config = Configuration.default.hash_object.merge(config)
|
57
|
+
Configuration.new(remove_nil_keys(new_config))
|
64
58
|
end
|
65
59
|
|
66
60
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module CarthageCache
|
2
|
+
|
3
|
+
class ConfiguratorWizard
|
4
|
+
|
5
|
+
def initialize(ask_proc, password_proc)
|
6
|
+
@ask_proc = ask_proc
|
7
|
+
@password_proc = password_proc
|
8
|
+
end
|
9
|
+
|
10
|
+
def start
|
11
|
+
config = Configuration.new
|
12
|
+
config.bucket_name = ask("What is the Amazon S3 bucket name?", ENV["CARTHAGE_CACHE_DEFAULT_BUCKET_NAME"])
|
13
|
+
config.aws_region = ask("What is the Amazon S3 region?")
|
14
|
+
config.aws_access_key_id = password("What is the AWS access key?")
|
15
|
+
config.aws_secret_access_key = password(" What is the AWS secret access key?")
|
16
|
+
config
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def ask(message, default_value = nil)
|
22
|
+
message = "#{message} [#{default_value}]" if default_value
|
23
|
+
answer = @ask_proc.call(message)
|
24
|
+
if answer.empty?
|
25
|
+
default_value
|
26
|
+
else
|
27
|
+
answer
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def password(message)
|
32
|
+
@password_proc.call(message)
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
@@ -4,14 +4,12 @@ module CarthageCache
|
|
4
4
|
|
5
5
|
class Repository
|
6
6
|
|
7
|
-
DEFAULT_BUCKET_NAME = "carthage-cache"
|
8
|
-
|
9
7
|
attr_reader :client
|
10
8
|
attr_reader :bucket_name
|
11
9
|
|
12
10
|
def initialize(bucket_name, client_options = {})
|
13
11
|
@client = ::Aws::S3::Client.new(client_options)
|
14
|
-
@bucket_name = bucket_name
|
12
|
+
@bucket_name = bucket_name
|
15
13
|
end
|
16
14
|
|
17
15
|
def archive_exist?(archive_filename)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: carthage_cache
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Guido Marucci Blas
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -123,7 +123,9 @@ files:
|
|
123
123
|
- lib/carthage_cache/archive_installer.rb
|
124
124
|
- lib/carthage_cache/archiver.rb
|
125
125
|
- lib/carthage_cache/carthage_resolved_file.rb
|
126
|
+
- lib/carthage_cache/configuration.rb
|
126
127
|
- lib/carthage_cache/configurator.rb
|
128
|
+
- lib/carthage_cache/configurator_wizard.rb
|
127
129
|
- lib/carthage_cache/description.rb
|
128
130
|
- lib/carthage_cache/project.rb
|
129
131
|
- lib/carthage_cache/repository.rb
|