diffcrypt 0.2.0 → 0.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: edd41bfcd4f86767e1d8b98d4c161c38983962e273a6e5b486c0f6465f159d80
4
- data.tar.gz: fecb2bda4f1f7cbd53fea2fd333f723bd3c1ac9e8c206930c6783795a6260d10
3
+ metadata.gz: 6055430f063cb4f1c161ca44b65e2d3a0a15d134546152c2e9e0b39486737f08
4
+ data.tar.gz: 4332842bbef701c1b775e1de410391f07e5bf477318727e0412afb29d0ba00a5
5
5
  SHA512:
6
- metadata.gz: 7fe1aedc3eec0f98370479a8a813e15a9458213e70d49345ae90234cead04e47b880a602af54ff8d43a1a6e4d54e7bef4a2955eb3f88fde68762bb08de16a555
7
- data.tar.gz: 6a020043e24b13d22414de6f810bde69bb578adc0041d34e33c8f3d220d68903ed8b3726bc7302138fbdc00ebfe8c2e7a59bca4e776519a3d898fc4cd4d51845
6
+ metadata.gz: 5d9b0a443e3d2521ba45385a57522d289fad5c9fa88707e5d6272ac0b23dcc4ee8dee9fc6c1831794468399917dccf95747ab0ac5c391c40ebcb991bbc7ebb22
7
+ data.tar.gz: '038974890091043cec270fb775b94705522445c1185fe07856d5558cbb970d96cfc86dfedfba8081f83a6ccc593e863b32df08f59a3916dc0a1c6e1fa4ceaf45'
@@ -0,0 +1,45 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+
9
+
10
+ ## [0.3.0] - 2020-06-30
11
+
12
+ ## Added
13
+
14
+ - CLI: Use diffcrypt from command line of any project without requiring ruby integration
15
+ - CLI: `diffcrypt encrypt` Directly encrypt any file and output the contents
16
+ - CLI: `diffcrypt decrypt` Directly decrypt any file and output the contents
17
+
18
+
19
+
20
+ ## [0.2.0] - 2020-06-28
21
+
22
+ ### Added
23
+
24
+ - Store client, cipher and checksum in file metadata
25
+
26
+ ### Fixed
27
+
28
+ - Only attenpt to decrypt original content if it exists
29
+
30
+
31
+
32
+ ## [0.1.1] - 2020-06-28
33
+
34
+ ### Fixed
35
+
36
+ - Converting rails native credentials files would fail on first run
37
+
38
+
39
+
40
+ ## [0.1.0] - 2020-06-28
41
+
42
+ ### Added
43
+
44
+ - First release!
45
+ - Rails support via monkey patch
data/README.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Diffcrypt
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/diffcrypt.svg)](https://rubygems.org/gems/diffcrypt)
4
+ [![CircleCI](https://circleci.com/gh/marcqualie/diffcrypt.svg?style=svg)](https://circleci.com/gh/marcqualie/diffcrypt)
5
+
6
+
3
7
  Diffable encrypted files that you can safely commit into your repo.
4
8
 
5
9
 
@@ -16,7 +20,7 @@ And then execute:
16
20
 
17
21
  $ bundle install
18
22
 
19
- Or install it yourself as:
23
+ Or install it globally (to use the CLI from any project):
20
24
 
21
25
  $ gem install diffcrypt
22
26
 
@@ -24,8 +28,24 @@ Or install it yourself as:
24
28
 
25
29
  ## Usage
26
30
 
31
+ There are a few ways to use the library, depending on how advanced your use case is.
32
+
27
33
 
28
- ### Encrypt existing file
34
+ ### CLI
35
+
36
+ The easiest way to get started is to use the CLI.
37
+
38
+ ```shell
39
+ diffcrypt decrypt -k $(cat test/fixtures/master.key) test/fixtures/example.yml.enc
40
+ diffcrypt encrypt -k $(cat test/fixtures/master.key) test/fixtures/example.yml
41
+ ```
42
+
43
+
44
+ ### Ruby
45
+
46
+ A direct API is exposed so `Diffcrypt::Encryptor` can be used in any ruby project.
47
+
48
+ **NOTE:** This API may change any time until v1.0
29
49
 
30
50
  ```ruby
31
51
  encryptor = Diffcrypt::Encryptor.new('99e1f86b9e61f24c56ff4108dd415091')
@@ -34,18 +54,16 @@ encrypted = encryptor.encrypt(yaml)
34
54
  File.write('tmp/example.yml.enc', encrypted)
35
55
  ```
36
56
 
37
- ### Decrypt a file
38
-
39
57
  ```ruby
40
58
  encryptor = Diffcrypt::Encryptor.new('99e1f86b9e61f24c56ff4108dd415091')
41
59
  yaml = File.read('test/fixtures/example.yml.enc')
42
60
  config = YAML.safe_load(encryptor.decrypt(yaml))
43
61
  ```
44
62
 
45
- ### Rails
63
+ ### Ruby on Rails
46
64
 
47
65
  Currently there is not native support for rails, but ActiveSupport can be monkeypatched to override
48
- the built in encrypter.
66
+ the built in encrypter. All existing `rails credentials:edit` also work with this method.
49
67
 
50
68
  ```ruby
51
69
  require 'diffcrypt/rails/encrypted_configuration'
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'thor'
5
+
6
+ require_relative '../lib/diffcrypt/cli'
7
+
8
+ Diffcrypt::CLI.start(ARGV)
@@ -25,9 +25,10 @@ Gem::Specification.new do |spec|
25
25
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
26
26
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
27
27
  end
28
- spec.bindir = 'exe'
29
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
+ spec.bindir = 'bin'
29
+ spec.executables = %w[diffcrypt]
30
30
  spec.require_paths = ['lib']
31
31
 
32
32
  spec.add_runtime_dependency 'activesupport', '~> 6.0.0'
33
+ spec.add_runtime_dependency 'thor', '~> 1.0.1'
33
34
  end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative './encryptor'
4
+ require_relative './version'
5
+
6
+ module Diffcrypt
7
+ class CLI < Thor
8
+ desc 'decrypt <path>', 'Decrypt a file'
9
+ method_option :key, aliases: %i[k], required: true
10
+ def decrypt(path)
11
+ ensure_file_exists(path)
12
+ contents = File.read(path)
13
+ puts encryptor.decrypt(contents)
14
+ end
15
+
16
+ desc 'encrypt <path>', 'Encrypt a file'
17
+ method_option :key, aliases: %i[k], required: true
18
+ def encrypt(path)
19
+ ensure_file_exists(path)
20
+ contents = File.read(path)
21
+ puts encryptor.encrypt(contents)
22
+ end
23
+
24
+ desc 'version', 'Show client version'
25
+ def version
26
+ say Diffcrypt::VERSION
27
+ end
28
+
29
+ no_commands do
30
+ def key
31
+ options[:key]
32
+ end
33
+
34
+ def encryptor
35
+ @encryptor ||= Encryptor.new(key)
36
+ end
37
+
38
+ def ensure_file_exists(path)
39
+ abort('[ERROR] File does not exist') unless File.exist?(path)
40
+ end
41
+ end
42
+ end
43
+ end
@@ -8,6 +8,8 @@ require 'yaml'
8
8
 
9
9
  require 'active_support/message_encryptor'
10
10
 
11
+ require_relative './version'
12
+
11
13
  module Diffcrypt
12
14
  class Encryptor
13
15
  CIPHER = 'aes-128-gcm'
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Diffcrypt
4
- VERSION = '0.2.0'
4
+ VERSION = '0.3.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: diffcrypt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marc Qualie
8
8
  autorequire:
9
- bindir: exe
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-28 00:00:00.000000000 Z
11
+ date: 2020-06-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -24,11 +24,26 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 6.0.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: thor
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 1.0.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 1.0.1
27
41
  description: Diffable encrypted configuration files that can be safely committed into
28
42
  a git repository
29
43
  email:
30
44
  - marc@marcqualie.com
31
- executables: []
45
+ executables:
46
+ - diffcrypt
32
47
  extensions: []
33
48
  extra_rdoc_files: []
34
49
  files:
@@ -36,14 +51,17 @@ files:
36
51
  - ".github/dependabot.yml"
37
52
  - ".gitignore"
38
53
  - ".rubocop.yml"
54
+ - CHANGELOG.md
39
55
  - Gemfile
40
56
  - LICENSE.txt
41
57
  - README.md
42
58
  - Rakefile
43
59
  - bin/console
60
+ - bin/diffcrypt
44
61
  - bin/setup
45
62
  - diffcrypt.gemspec
46
63
  - lib/diffcrypt.rb
64
+ - lib/diffcrypt/cli.rb
47
65
  - lib/diffcrypt/encryptor.rb
48
66
  - lib/diffcrypt/rails/encrypted_configuration.rb
49
67
  - lib/diffcrypt/version.rb