home-dotenv 0.0.1

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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/home-dotenv.rb +31 -0
  3. metadata +86 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 310537c2f78ebc086bc9a2a33d0ddf96ebdd354a
4
+ data.tar.gz: fbe0ad63c194157227fc1edcacf73ddb7db15c16
5
+ SHA512:
6
+ metadata.gz: f3a278a4bb9904d5398cec836ad421dab21d3af5cab58a909d82328c78b561d08721adfec06f1e712ca15921be24b3ccc865552f4d89bcc3bec82cba8728333b
7
+ data.tar.gz: b7d716ac81545153088bbb195514b49fab8a722cbeed576e5b904cb103527262b4a7164a6d5fcb0464a7d098916fab1e22d87a7c98e603e13e0f65a5136ba761
@@ -0,0 +1,31 @@
1
+ # USAGE: HomeDotenv.parse
2
+ class HomeDotenv
3
+ # With a ~/.env
4
+ #
5
+ # SECRET_KEY=so-secret-really
6
+ #
7
+ # HOME_ENV = HomeDotenv.parse
8
+ # puts HOME_ENV[:SECRET_KEY]
9
+ def self.parse(filename = nil)
10
+ Hash[*read_lines(filename).map { |l| parse_line(l) }.flatten]
11
+ end
12
+
13
+ class << self
14
+ private
15
+
16
+ def read_lines(filename = nil)
17
+ filename ||= Dir.home + '/.env'
18
+ lines = File.read(filename).split("\n")
19
+ lines.reject!(&:empty?)
20
+ lines.reject! { |l| l[0] == '#' }
21
+ lines.reject! { |l| !l.include?('=') || l.split('=').first.to_s == '' }
22
+ lines
23
+ end
24
+
25
+ def parse_line(line)
26
+ key = line.split('=').first.to_sym
27
+ value = line.split('=')[1..-1].join('=')
28
+ [key, value]
29
+ end
30
+ end
31
+ end
metadata ADDED
@@ -0,0 +1,86 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: home-dotenv
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Dorian Marié
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-02-25 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: |
14
+ # `home-dotenv`
15
+
16
+ ## Instalation
17
+
18
+ ``ruby
19
+ gem install home-dotenv
20
+
21
+ # or in a Gemfile
22
+ gem 'home-dotenv'
23
+ ```
24
+
25
+ ## Explanation
26
+
27
+ So, you have scripts run on your system and you have config variables for those
28
+ scripts (keys, usernames, passwords, hostnames, etc).
29
+
30
+ A unified way to access those globals would be nice instead of hard-coding them
31
+ or passing them as parameters.
32
+
33
+ So, now you can put all your variables in ~/.env like so:
34
+
35
+ ```
36
+ SUPER_SECRET_PASSWORD=i-definitely-don-t-want-people-to-see-this
37
+ AWS_KEY=abcdefgh
38
+ SECRET_HOST=https://private.secret.com
39
+ ```
40
+
41
+ Then, in your scripts:
42
+
43
+ ```
44
+ require 'home-dotenv'
45
+ HOME_ENV = HomeDotenv.parse
46
+
47
+ require 'open-uri'
48
+ open(HOME_HOME[:SECRET_HOST]).read
49
+ ```
50
+
51
+ Parsing rules:
52
+
53
+ - if the line is empty or starts by "#" (comment), ignore
54
+ - otherwise, string before the first "=" is key, after that it's the value
55
+ - result is a hash indexed by symbol, e.g. HOME_ENV[:AWS_KEY]
56
+ email: dorian@doma.io
57
+ executables: []
58
+ extensions: []
59
+ extra_rdoc_files: []
60
+ files:
61
+ - lib/home-dotenv.rb
62
+ homepage: https://github.com/Dorian/home-dotenv
63
+ licenses:
64
+ - MIT
65
+ metadata: {}
66
+ post_install_message:
67
+ rdoc_options: []
68
+ require_paths:
69
+ - lib
70
+ required_ruby_version: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ required_rubygems_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ requirements: []
81
+ rubyforge_project:
82
+ rubygems_version: 2.6.8
83
+ signing_key:
84
+ specification_version: 4
85
+ summary: Load ~/.env variables
86
+ test_files: []