dotenv-sync 0.0.1 → 0.0.2
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/.gitignore +43 -1
- data/README.md +10 -5
- data/docs/dotenv-sync.png +0 -0
- data/lib/dotenv/sync/command_line.rb +8 -0
- data/lib/dotenv/sync/syncer.rb +22 -3
- data/lib/dotenv/sync/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e1e441e6e49904c9d2666f7cd8adf95849076005
|
|
4
|
+
data.tar.gz: d77ebd70e530109d051d8bbd7e9ce5b9867dd80a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 42357a7d1e303fc001327885ebc4002562a7a39f4474f13625da7b6e26b293dab16edc35259d57463f299c39a0e54255c14ff591fa434fb6a2650d207e470697
|
|
7
|
+
data.tar.gz: 296c1f0ac1558d11893e268f7c3e571b2f34ab4d3fc15553f1c6ff42ed30fe747dbe68c9e521c2964efbb1a15088ca7dbf5c9d05475968e632e443959f41461c
|
data/.gitignore
CHANGED
|
@@ -120,4 +120,46 @@
|
|
|
120
120
|
/var/folders/gt/k34d1gd555vcr5x0wtz5gf_r0000gn/T/20160704-23542-x5q8i
|
|
121
121
|
# Dotenv syncing
|
|
122
122
|
/var/folders/gt/k34d1gd555vcr5x0wtz5gf_r0000gn/T/20160704-23542-pxcwjq
|
|
123
|
-
/var/folders/gt/k34d1gd555vcr5x0wtz5gf_r0000gn/T/20160704-23542-jexlno
|
|
123
|
+
/var/folders/gt/k34d1gd555vcr5x0wtz5gf_r0000gn/T/20160704-23542-jexlno
|
|
124
|
+
# Dotenv syncing
|
|
125
|
+
/var/folders/gt/k34d1gd555vcr5x0wtz5gf_r0000gn/T/20160717-2867-1ac2bnv
|
|
126
|
+
# Dotenv syncing
|
|
127
|
+
/var/folders/gt/k34d1gd555vcr5x0wtz5gf_r0000gn/T/20160717-2867-wrb7sd
|
|
128
|
+
/var/folders/gt/k34d1gd555vcr5x0wtz5gf_r0000gn/T/20160717-2867-1g1t8m3
|
|
129
|
+
# Dotenv syncing
|
|
130
|
+
/var/folders/gt/k34d1gd555vcr5x0wtz5gf_r0000gn/T/20160717-2867-9svacm
|
|
131
|
+
/var/folders/gt/k34d1gd555vcr5x0wtz5gf_r0000gn/T/20160717-2867-1u4m03v
|
|
132
|
+
# Dotenv syncing
|
|
133
|
+
/var/folders/gt/k34d1gd555vcr5x0wtz5gf_r0000gn/T/20160717-2867-jlhqdj
|
|
134
|
+
/var/folders/gt/k34d1gd555vcr5x0wtz5gf_r0000gn/T/20160717-2867-1a3kcuu
|
|
135
|
+
# Dotenv syncing
|
|
136
|
+
/var/folders/gt/k34d1gd555vcr5x0wtz5gf_r0000gn/T/20160717-2867-1fn9k45
|
|
137
|
+
/var/folders/gt/k34d1gd555vcr5x0wtz5gf_r0000gn/T/20160717-2867-oqf5fr
|
|
138
|
+
# Dotenv syncing
|
|
139
|
+
/var/folders/gt/k34d1gd555vcr5x0wtz5gf_r0000gn/T/20160717-2909-i1qw1
|
|
140
|
+
# Dotenv syncing
|
|
141
|
+
/var/folders/gt/k34d1gd555vcr5x0wtz5gf_r0000gn/T/20160717-2909-14uyd56
|
|
142
|
+
/var/folders/gt/k34d1gd555vcr5x0wtz5gf_r0000gn/T/20160717-2909-eg0ogd
|
|
143
|
+
# Dotenv syncing
|
|
144
|
+
/var/folders/gt/k34d1gd555vcr5x0wtz5gf_r0000gn/T/20160717-2909-alvi48
|
|
145
|
+
/var/folders/gt/k34d1gd555vcr5x0wtz5gf_r0000gn/T/20160717-2909-87aai8
|
|
146
|
+
# Dotenv syncing
|
|
147
|
+
/var/folders/gt/k34d1gd555vcr5x0wtz5gf_r0000gn/T/20160717-2909-1v5dyt
|
|
148
|
+
/var/folders/gt/k34d1gd555vcr5x0wtz5gf_r0000gn/T/20160717-2909-e8jgjb
|
|
149
|
+
# Dotenv syncing
|
|
150
|
+
/var/folders/gt/k34d1gd555vcr5x0wtz5gf_r0000gn/T/20160717-2909-1t8qkgv
|
|
151
|
+
/var/folders/gt/k34d1gd555vcr5x0wtz5gf_r0000gn/T/20160717-2909-di8x5t
|
|
152
|
+
# Dotenv syncing
|
|
153
|
+
/var/folders/gt/k34d1gd555vcr5x0wtz5gf_r0000gn/T/20160717-2925-15tu0cv
|
|
154
|
+
# Dotenv syncing
|
|
155
|
+
/var/folders/gt/k34d1gd555vcr5x0wtz5gf_r0000gn/T/20160717-2925-1oh539b
|
|
156
|
+
/var/folders/gt/k34d1gd555vcr5x0wtz5gf_r0000gn/T/20160717-2925-g3nhyd
|
|
157
|
+
# Dotenv syncing
|
|
158
|
+
/var/folders/gt/k34d1gd555vcr5x0wtz5gf_r0000gn/T/20160717-2925-llt3nb
|
|
159
|
+
/var/folders/gt/k34d1gd555vcr5x0wtz5gf_r0000gn/T/20160717-2925-1memalx
|
|
160
|
+
# Dotenv syncing
|
|
161
|
+
/var/folders/gt/k34d1gd555vcr5x0wtz5gf_r0000gn/T/20160717-2925-1o3evp1
|
|
162
|
+
/var/folders/gt/k34d1gd555vcr5x0wtz5gf_r0000gn/T/20160717-2925-nzud1j
|
|
163
|
+
# Dotenv syncing
|
|
164
|
+
/var/folders/gt/k34d1gd555vcr5x0wtz5gf_r0000gn/T/20160717-2925-1f53g9s
|
|
165
|
+
/var/folders/gt/k34d1gd555vcr5x0wtz5gf_r0000gn/T/20160717-2925-4ncar9
|
data/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
#
|
|
1
|
+
# dotenv-sync
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
dotenv-sync is a small utility that lets you sync `.env` secrets in your repo.
|
|
4
4
|
|
|
5
5
|
This assumes you use [dotenv](https://github.com/bkeepers/dotenv) to manage and load your environment variables locally and relies on the fact that _dotenv_ supports environment specific dotenv files.
|
|
6
6
|
|
|
@@ -12,10 +12,14 @@ dotenv-sync assumes you have two seperate files:
|
|
|
12
12
|
.env.local - contatins only the secrets and is not shared on git directly
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
This gem then uses a shared secret keyfile
|
|
15
|
+
This gem then uses a shared secret keyfile `.env-key` __which should not be commited__,
|
|
16
16
|
to encrypt and decrypt the `.env.local` file and share it in the repo as `.env-encrypted`.
|
|
17
17
|
|
|
18
|
-
You can use _1Password for teams_ or _Vault_ for sharing your secret
|
|
18
|
+
You can use _1Password for teams_ or _Vault_ for sharing your secret keyfile.
|
|
19
|
+
|
|
20
|
+
### Overview
|
|
21
|
+

|
|
22
|
+
|
|
19
23
|
|
|
20
24
|
## Installation
|
|
21
25
|
|
|
@@ -41,6 +45,7 @@ Dotenv-sync provides a command line file with several commands to run.
|
|
|
41
45
|
dotenv-sync [command] # Runs the command while loading the env variables from .env (based on the dotenv gem)
|
|
42
46
|
dotenv-sync generate_key # Generate a new key file
|
|
43
47
|
dotenv-sync pull # Update your .env.local file from the encrypted version
|
|
48
|
+
dotenv-sync merge # Update your .env.local file from the encrypted version (retains local changes)
|
|
44
49
|
dotenv-sync push # Update the encrypted file from your version of .env.local
|
|
45
50
|
dotenv-sync sort [DOTENV_FILE=.env] # Sorts your .env file
|
|
46
51
|
dotenv-sync help [COMMAND] # Describe available commands or one specific command
|
|
@@ -50,7 +55,7 @@ dotenv-sync help [COMMAND] # Describe available commands or one specif
|
|
|
50
55
|
When initializing a new project you need to run `dotenv-sync generate_key` followed by `dotenv-sync push` to create the key which should be securely shared and the `.env-encrypted` file which can be commited.
|
|
51
56
|
|
|
52
57
|
### Subsequent uses
|
|
53
|
-
If you're updating `.env.local` and want to share a change run `dotenv-sync push` and commit the
|
|
58
|
+
If you're updating `.env.local` and want to share a change run `dotenv-sync push` and then commit the changed `.env-encrypted` file.
|
|
54
59
|
|
|
55
60
|
If you're pulling a change from git and see that `.env-encypted` changed run `dotenv-sync pull` to update your local `.env.local`
|
|
56
61
|
|
|
Binary file
|
|
@@ -38,6 +38,14 @@ module Dotenv
|
|
|
38
38
|
Syncer.new(options).pull
|
|
39
39
|
end
|
|
40
40
|
|
|
41
|
+
option :key, desc: "The keyfile", default: Syncer::DEFAULT_KEY_FILE, aliases: :k
|
|
42
|
+
option :encrypted, desc: "The shared encrypted file", default: Syncer::DEFAULT_ENCRYPTED_FILE, aliases: :e
|
|
43
|
+
option :secret, desc: "The private secret file", default: Syncer::DEFAULT_SECRET_FILE, aliases: :s
|
|
44
|
+
desc "merge", "Update your .env.local file from the encrypted version (preserving local changes)"
|
|
45
|
+
def merge
|
|
46
|
+
Syncer.new(options).merge
|
|
47
|
+
end
|
|
48
|
+
|
|
41
49
|
option :key, desc: "The keyfile", default: Syncer::DEFAULT_KEY_FILE, aliases: :k
|
|
42
50
|
option :encrypted, desc: "The shared encrypted file", default: Syncer::DEFAULT_ENCRYPTED_FILE, aliases: :e
|
|
43
51
|
option :secret, desc: "The private secret file", default: Syncer::DEFAULT_SECRET_FILE, aliases: :s
|
data/lib/dotenv/sync/syncer.rb
CHANGED
|
@@ -43,6 +43,28 @@ module Dotenv
|
|
|
43
43
|
end
|
|
44
44
|
|
|
45
45
|
def pull
|
|
46
|
+
data = load_data
|
|
47
|
+
write(@secret_filename, data)
|
|
48
|
+
puts "Successfully decrypted #{@secret_filename}"
|
|
49
|
+
data
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def merge
|
|
53
|
+
existing_data = read(@secret_filename)
|
|
54
|
+
merged_data = merge_lines(load_data, existing_data)
|
|
55
|
+
write(@secret_filename, merged_data)
|
|
56
|
+
puts "Successfully merged #{@secret_filename}"
|
|
57
|
+
merged_data
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def merge_lines(left, right)
|
|
61
|
+
left_lines = left.lines.map(&:strip)
|
|
62
|
+
right_lines = right.lines.map(&:strip)
|
|
63
|
+
merged = left_lines + (right_lines - left_lines)
|
|
64
|
+
sort_lines(merged)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def load_data
|
|
46
68
|
validate_file! @encrypted_filename
|
|
47
69
|
key = read_key!
|
|
48
70
|
data = read_64 @encrypted_filename
|
|
@@ -51,9 +73,6 @@ module Dotenv
|
|
|
51
73
|
cipher.iv = iv
|
|
52
74
|
cipher.key = key
|
|
53
75
|
data = cipher.update(encrypted) + cipher.final
|
|
54
|
-
write(@secret_filename, data)
|
|
55
|
-
puts "Successfully decrypted #{@secret_filename}"
|
|
56
|
-
data
|
|
57
76
|
end
|
|
58
77
|
|
|
59
78
|
def sort(filename)
|
data/lib/dotenv/sync/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dotenv-sync
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- yonbergman
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2016-07-
|
|
11
|
+
date: 2016-07-17 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rspec
|
|
@@ -85,6 +85,7 @@ files:
|
|
|
85
85
|
- bin/console
|
|
86
86
|
- bin/dotenv-sync
|
|
87
87
|
- bin/setup
|
|
88
|
+
- docs/dotenv-sync.png
|
|
88
89
|
- dotenv-sync.gemspec
|
|
89
90
|
- lib/dotenv/sync.rb
|
|
90
91
|
- lib/dotenv/sync/command_line.rb
|