dotenv_to_ci 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/dotenv_to_ci.rb +79 -0
  3. metadata +78 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: ed499f22f887b98118af85fb7d02ee45bb6c6919
4
+ data.tar.gz: ad52456a5fd285cf5384f79905c419457ed644b1
5
+ SHA512:
6
+ metadata.gz: f083d94dd39b60fd8fae90cccaffb0bf052ed5286c58b1e4740e02e8354bee79404e05d6e9cb2f09e0325e7eb43c9b64150065fb087f6e91513dbc5fc6e761a9
7
+ data.tar.gz: efcdab0c23310d1fc5c1d67d4040371edcb093ea6ccdb6e55bf0fb598639018ee42474cd47bd9c1292fef7b68cda5271b089dc6e9ad4ebf27e8e3073183c8ba5
@@ -0,0 +1,79 @@
1
+ require 'dotenv'
2
+ require 'json'
3
+ require 'rest-client'
4
+
5
+ class DotenvToCI
6
+
7
+ attr_accessor :dotenvs
8
+ attr_accessor :provider
9
+ attr_accessor :token
10
+ attr_accessor :vcs
11
+ attr_accessor :username
12
+ attr_accessor :project
13
+ attr_accessor :verbose
14
+
15
+ def initialize(options)
16
+ @dotenvs = options[:dotenvs]
17
+ @provider = options[:provider]
18
+ @token = options[:token]
19
+ @vcs = options[:vcs]
20
+ @username = options[:username]
21
+ @project = options[:project]
22
+ @verbose = options[:verbose]
23
+
24
+ load_from_env
25
+
26
+ if verbose
27
+ puts "Config: #{@token}"
28
+ end
29
+ end
30
+
31
+ def load_from_env
32
+ if @provider == "circleci"
33
+ @token ||= ENV["CIRCLECI_TOKEN"]
34
+ end
35
+ end
36
+
37
+ def run!
38
+ verify_options!
39
+ envs = parse_envs(@dotenvs)
40
+ send_to_circleci(envs)
41
+ end
42
+
43
+ def verify_options!
44
+
45
+ end
46
+
47
+ def parse_envs(dotenv_paths)
48
+ envs = Dotenv.parse(dotenv_paths)
49
+
50
+ if verbose
51
+ puts "ENVS: #{envs}"
52
+ end
53
+
54
+ return envs
55
+ end
56
+
57
+ def send_to_circleci(envs)
58
+ envs.each do |k,v|
59
+ payload = {
60
+ name: k,
61
+ value: v
62
+ }
63
+
64
+ if verbose
65
+ puts "Setting: #{payload}"
66
+ end
67
+
68
+ resp = RestClient::Request.execute(
69
+ method: :post,
70
+ url: "https://circleci.com/api/v1.1/project/#{vcs}/#{username}/#{project}/envvar?circle-token=#{@token}",
71
+ payload: payload.to_json,
72
+ headers: { 'Content-Type' => 'application/json' }
73
+ )
74
+ end
75
+
76
+ puts "Successfully added: #{envs.keys.join(', ')}"
77
+ end
78
+
79
+ end
metadata ADDED
@@ -0,0 +1,78 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dotenv_to_ci
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Josh Holtz
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-05-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: dotenv
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 2.1.1
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: 3.0.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 2.1.1
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: 3.0.0
33
+ - !ruby/object:Gem::Dependency
34
+ name: rest-client
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: 1.8.0
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 1.8.0
47
+ description: Set dotenv values in your CI provider
48
+ email: me@joshholtz.com
49
+ executables: []
50
+ extensions: []
51
+ extra_rdoc_files: []
52
+ files:
53
+ - lib/dotenv_to_ci.rb
54
+ homepage: https://github.com/joshdholtz/dotenv_to_ci
55
+ licenses:
56
+ - MIT
57
+ metadata: {}
58
+ post_install_message:
59
+ rdoc_options: []
60
+ require_paths:
61
+ - lib
62
+ required_ruby_version: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ required_rubygems_version: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ requirements: []
73
+ rubyforge_project:
74
+ rubygems_version: 2.5.2.3
75
+ signing_key:
76
+ specification_version: 4
77
+ summary: dotenv to CI env
78
+ test_files: []