apperol 0.0.2 → 0.0.3

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: 91a4bdc6aea992758e4cdc112eab66f5b7a9fb4a
4
- data.tar.gz: 680dd1c4cc9449cfce6a1befb765e6997402fbbd
3
+ metadata.gz: 212cef4edea40eee0f1b4489f04d831ca500d320
4
+ data.tar.gz: 6bb4f8faf965a79e2856f9ad62439726ce7b6220
5
5
  SHA512:
6
- metadata.gz: 819ddb160d318ba1219955f387c0580ba4024f62b33972aaf62f8f887d4de726e43afb44537b1492c0e321207539bd445f67e17d68e69848550b7eaccb3c5261
7
- data.tar.gz: dd90401ab6224e5ee517339359aec58c063be4570b1cd8d92bba4416367a1d6f7b031b05c4fab5367ac124bb712fa2eb4dc56e828b577ce68c419d1f0c11a49c
6
+ metadata.gz: 4492e1388a1373e8f359998366a0262ba3fe7cc8331545389d81705a77f65475a0e60c865b5dd13ca7c70d06fbf77dc2115904e5f1d095bf48077b21f17af21c
7
+ data.tar.gz: fd2dcad0f541185c7c2801d54215c141a100fa3e525c3ce02043200d1f7c28cba400353ec7804c8af8d461b5cda4a7425d844bdfe77be9fe810950ccb4f6d3ae
data/README.md CHANGED
@@ -29,10 +29,8 @@ Usage: apperol [options] [app_extension]
29
29
  -s, --stack stack Stack for app on heroku
30
30
  -b, --branch branch Branch to setup app from
31
31
  -r, --repo repo GitHub repository source
32
- -o, --org org GitHub org where the current repo is located
33
32
  -u, --user user GitHub user where the current repo is located
34
33
  -h, --help Displays Help
35
-
36
34
  ```
37
35
 
38
36
  ## Information
@@ -41,6 +39,11 @@ Usage: apperol [options] [app_extension]
41
39
  - Apperol CLI will have many options based on `env` part of the `app.json`
42
40
  - Apperol CLI uses heroku org by default, use `-r user/repo` to specify yours.
43
41
 
42
+ ## Lack of tests
43
+
44
+ I know it is bad but they will come before v1.0.0 .
45
+ If you dislike this, see next section.
46
+
44
47
  ## Contributing
45
48
 
46
49
  1. Fork it ( https://github.com/ys/apperol/fork )
@@ -0,0 +1,47 @@
1
+ module Apperol
2
+ class AppJson
3
+ def initialize(file_path = 'app.json')
4
+ @file_path = file_path
5
+ end
6
+
7
+ def env
8
+ __json__["env"].map do |key, definition|
9
+ AppJson::Env.new(key, definition)
10
+ end
11
+ end
12
+
13
+ def __json__
14
+ @__json__ ||= JSON.parse(File.read(@file_path))
15
+ end
16
+
17
+ class Env
18
+ attr_reader :key, :definition
19
+ def initialize(key, definition)
20
+ @key = key
21
+ @definition = definition
22
+ end
23
+
24
+ def value
25
+ definition.is_a?(String) ? definition : definition["value"]
26
+ end
27
+
28
+ def description
29
+ definition.is_a?(String) ? key : definition["description"]
30
+ end
31
+
32
+ def needs_value?
33
+ required? && !has_value?
34
+ end
35
+
36
+ def has_value?
37
+ !(value.nil? || value.strip.empty?)
38
+ end
39
+
40
+ def required?
41
+ definition.is_a?(String) ||
42
+ definition["required"].nil? ||
43
+ definition["required"]
44
+ end
45
+ end
46
+ end
47
+ end
data/lib/apperol/cli.rb CHANGED
@@ -6,6 +6,8 @@ require "optparse"
6
6
  require "netrc"
7
7
  require "spinning_cursor"
8
8
 
9
+ require_relative "app_json"
10
+
9
11
  module Apperol
10
12
  class CLI
11
13
  EX_USAGE = 64
@@ -15,16 +17,10 @@ module Apperol
15
17
 
16
18
  parser = OptionParser.new do|opts|
17
19
  opts.banner = "Usage: apperol [options] [app_extension]"
18
- app_json["env"].each do |key, definition|
19
- option_key_name = key.downcase.gsub("_", "-")
20
- option_key_key = key.downcase.to_sym
21
- # Set default
22
- value = definition.is_a?(String) ? definition : definition["value"]
23
- @options[option_key_key] = value
24
- required = definition.is_a?(String) || definition["required"].nil? || definition["required"] ? " required" : ""
25
- description = definition.is_a?(String) ? key : definition["description"]
26
- opts.on("--#{option_key_name} value", "#{description} (Default: '#{value}' #{required}) ") do |value|
27
- @options[option_key_key] = value
20
+ app_json.env.each do |env_value|
21
+ option_key_name = env_value.key.downcase.gsub("_", "-")
22
+ opts.on("--#{option_key_name} value", "#{env_value.description} (Default: '#{env_value.value}' #{env_value.required?}) ") do |value|
23
+ @options[env_value.key] = value
28
24
  end
29
25
  end
30
26
  opts.on("-p", "--personal", "Force app in personal apps instead of orgs") do
@@ -143,12 +139,13 @@ module Apperol
143
139
  overrides: { env: {}}
144
140
  }
145
141
  required_not_filled = []
146
- app_json["env"].each do |key, definition|
147
- value = @options[key.downcase.to_sym]
148
- if (definition["required"].nil? || definition["required"]) && value.strip.empty?
149
- required_not_filled << key
142
+ app_json.env.each do |env_value|
143
+ value = @options[env_value.key]
144
+ value_empty = value.nil? || value.strip.empty?
145
+ if env_value.needs_value? && value_empty
146
+ required_not_filled << env_value.key
150
147
  end
151
- payload[:overrides][:env][key] = value
148
+ payload[:overrides][:env][env_value.key] = value unless value_empty
152
149
  end
153
150
  unless required_not_filled.empty?
154
151
  $stderr.puts("error: Required fields not filled. Please specify them. #{required_not_filled}")
@@ -251,7 +248,7 @@ module Apperol
251
248
  $stderr.puts("No app.json file here")
252
249
  exit 1
253
250
  end
254
- @app_json ||= JSON.parse(File.read("app.json"))
251
+ @app_json ||= AppJson.new("app.json")
255
252
  end
256
253
  end
257
254
  end
@@ -1,3 +1,3 @@
1
1
  module Apperol
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apperol
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yannick
@@ -82,6 +82,7 @@ files:
82
82
  - apperol.gemspec
83
83
  - bin/apperol
84
84
  - lib/apperol.rb
85
+ - lib/apperol/app_json.rb
85
86
  - lib/apperol/cli.rb
86
87
  - lib/apperol/version.rb
87
88
  homepage: https://github.com/ys/apperol