vagrant-trellis-cert 0.1.1 → 0.2.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
  SHA1:
3
- metadata.gz: 83c5d83e4f63c1bebebccd223cdeb9473032f6e1
4
- data.tar.gz: 5365bd3d4b5ca48ccc97f93ca9610543b51dd33d
3
+ metadata.gz: 9d90d1bac3313e8d29841f7aff663d3cf740f01f
4
+ data.tar.gz: 8ffc7bc412d84e1097c8e850db92fe24377475c0
5
5
  SHA512:
6
- metadata.gz: 7ac107653c0b6aebe6c2685b8d86b800c851a27ae5641a1c61e8ac148e60372606beb4b7e4a4593a9c62859f14c72a00d45ab795b7d748978f61bbc6ea57748f
7
- data.tar.gz: 485da83d584efa3110155687db91b0624713f78b1edabe08fdc7cecbc25eea0225fa540a25a20b4f7269a13d343b07e5f4feebde0d06f261ba0096c8b1572308
6
+ metadata.gz: 0b07752816d8b7e5392708a486002d6a4ad78c3a8f0b3a966200b2910d785d9a20e7772264624f84549363c62a97c2caf22cf89e2a2cd8c09bef35fbe534576e
7
+ data.tar.gz: d48928d6ed153726b14c6910ea50a4228d3164726483198ffe9757630cf42f319c928c6c89c22a23faa578f1d40fa270619edc828ad8cd644d5ea640221461d3
@@ -1,2 +1,2 @@
1
1
  unreleased=true
2
- future-release=v0.1.1
2
+ future-release=v0.2.0
data/.hound.yml ADDED
@@ -0,0 +1,4 @@
1
+ fail_on_violations: true
2
+
3
+ ruby:
4
+ config_file: .rubocop.yml
@@ -0,0 +1,137 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.2
3
+ # RuboCop has a bunch of cops enabled by default. This setting tells RuboCop
4
+ # to ignore them, so only the ones explicitly set in this file are enabled.
5
+ DisabledByDefault: true
6
+ Exclude:
7
+ - '**/templates/**/*'
8
+ - '**/vendor/**/*'
9
+ - 'actionpack/lib/action_dispatch/journey/parser.rb'
10
+
11
+ # Prefer &&/|| over and/or.
12
+ Style/AndOr:
13
+ Enabled: true
14
+
15
+ # Do not use braces for hash literals when they are the last argument of a
16
+ # method call.
17
+ Style/BracesAroundHashParameters:
18
+ Enabled: true
19
+ EnforcedStyle: context_dependent
20
+
21
+ # Align `when` with `case`.
22
+ Layout/CaseIndentation:
23
+ Enabled: true
24
+
25
+ # Align comments with method definitions.
26
+ Layout/CommentIndentation:
27
+ Enabled: true
28
+
29
+ Layout/EmptyLineAfterMagicComment:
30
+ Enabled: true
31
+
32
+ # In a regular class definition, no empty lines around the body.
33
+ Layout/EmptyLinesAroundClassBody:
34
+ Enabled: true
35
+
36
+ # In a regular method definition, no empty lines around the body.
37
+ Layout/EmptyLinesAroundMethodBody:
38
+ Enabled: true
39
+
40
+ # In a regular module definition, no empty lines around the body.
41
+ Layout/EmptyLinesAroundModuleBody:
42
+ Enabled: true
43
+
44
+ Layout/FirstParameterIndentation:
45
+ Enabled: true
46
+
47
+ # Use Ruby >= 1.9 syntax for hashes. Prefer { a: :b } over { :a => :b }.
48
+ Style/HashSyntax:
49
+ Enabled: true
50
+
51
+ # Method definitions after `private` or `protected` isolated calls need one
52
+ # extra level of indentation.
53
+ Layout/IndentationConsistency:
54
+ Enabled: true
55
+ EnforcedStyle: rails
56
+
57
+ # Two spaces, no tabs (for indentation).
58
+ Layout/IndentationWidth:
59
+ Enabled: true
60
+
61
+ Layout/SpaceAfterColon:
62
+ Enabled: true
63
+
64
+ Layout/SpaceAfterComma:
65
+ Enabled: true
66
+
67
+ Layout/SpaceAroundEqualsInParameterDefault:
68
+ Enabled: true
69
+
70
+ Layout/SpaceAroundKeyword:
71
+ Enabled: true
72
+
73
+ Layout/SpaceAroundOperators:
74
+ Enabled: true
75
+
76
+ Layout/SpaceBeforeFirstArg:
77
+ Enabled: true
78
+
79
+ # Defining a method with parameters needs parentheses.
80
+ Style/MethodDefParentheses:
81
+ Enabled: true
82
+
83
+ Style/FrozenStringLiteralComment:
84
+ Enabled: true
85
+ EnforcedStyle: always
86
+ Exclude:
87
+ - 'actionview/test/**/*.builder'
88
+ - 'actionview/test/**/*.ruby'
89
+ - 'actionpack/test/**/*.builder'
90
+ - 'actionpack/test/**/*.ruby'
91
+ - 'activestorage/db/migrate/**/*.rb'
92
+
93
+ # Use `foo {}` not `foo{}`.
94
+ Layout/SpaceBeforeBlockBraces:
95
+ Enabled: true
96
+
97
+ # Use `foo { bar }` not `foo {bar}`.
98
+ Layout/SpaceInsideBlockBraces:
99
+ Enabled: true
100
+
101
+ # Use `{ a: 1 }` not `{a:1}`.
102
+ Layout/SpaceInsideHashLiteralBraces:
103
+ Enabled: true
104
+
105
+ Layout/SpaceInsideParens:
106
+ Enabled: true
107
+
108
+ # Check quotes usage according to lint rule below.
109
+ Style/StringLiterals:
110
+ Enabled: true
111
+ EnforcedStyle: double_quotes
112
+
113
+ # Detect hard tabs, no hard tabs.
114
+ Layout/Tab:
115
+ Enabled: true
116
+
117
+ # Blank lines should not have any spaces.
118
+ Layout/TrailingBlankLines:
119
+ Enabled: true
120
+
121
+ # No trailing whitespace.
122
+ Layout/TrailingWhitespace:
123
+ Enabled: true
124
+
125
+ # Use quotes for string literals when they are enough.
126
+ Style/UnneededPercentQ:
127
+ Enabled: true
128
+
129
+ # Align `end` with the matching keyword or starting expression except for
130
+ # assignments, where it should be aligned with the LHS.
131
+ Lint/EndAlignment:
132
+ Enabled: true
133
+ EnforcedStyleAlignWith: variable
134
+
135
+ # Use my_method(my_arg) not my_method( my_arg ) or my_method my_arg.
136
+ Lint/RequireParentheses:
137
+ Enabled: true
data/.rubocop.yml CHANGED
@@ -1,2 +1,11 @@
1
1
  inherit_from:
2
- - https://raw.githubusercontent.com/rails/rails/master/.rubocop.yml
2
+ - .rubocop.rails.yml
3
+
4
+ AllCops:
5
+ TargetRubyVersion: 2.3
6
+
7
+ Layout/IndentationConsistency:
8
+ EnforcedStyle: normal
9
+
10
+ Metrics/LineLength:
11
+ Max: 156
data/CHANGELOG.md CHANGED
@@ -1,10 +1,28 @@
1
1
  # Change Log
2
2
 
3
+ ## [v0.2.0](https://github.com/TypistTech/vagrant-trellis-cert/tree/v0.2.0) (2017-09-14)
4
+ [Full Changelog](https://github.com/TypistTech/vagrant-trellis-cert/compare/v0.1.1...v0.2.0)
5
+
6
+ **Closed issues:**
7
+
8
+ - Early return with `--help` [\#8](https://github.com/TypistTech/vagrant-trellis-cert/issues/8)
9
+ - Fail fast on windows [\#7](https://github.com/TypistTech/vagrant-trellis-cert/issues/7)
10
+
11
+ **Merged pull requests:**
12
+
13
+ - Make rubocop happy [\#17](https://github.com/TypistTech/vagrant-trellis-cert/pull/17) ([TangRufus](https://github.com/TangRufus))
14
+ - Early quit if not on macOS [\#16](https://github.com/TypistTech/vagrant-trellis-cert/pull/16) ([TangRufus](https://github.com/TangRufus))
15
+ - Extract `trust` subcommand and lots of refactor [\#15](https://github.com/TypistTech/vagrant-trellis-cert/pull/15) ([TangRufus](https://github.com/TangRufus))
16
+ - Use rubygem naming convention [\#12](https://github.com/TypistTech/vagrant-trellis-cert/pull/12) ([TangRufus](https://github.com/TangRufus))
17
+ - Add Hound config [\#11](https://github.com/TypistTech/vagrant-trellis-cert/pull/11) ([TangRufus](https://github.com/TangRufus))
18
+ - Load vagrant source during development [\#9](https://github.com/TypistTech/vagrant-trellis-cert/pull/9) ([TangRufus](https://github.com/TangRufus))
19
+
3
20
  ## [v0.1.1](https://github.com/TypistTech/vagrant-trellis-cert/tree/v0.1.1) (2017-09-12)
4
21
  [Full Changelog](https://github.com/TypistTech/vagrant-trellis-cert/compare/v0.1.0...v0.1.1)
5
22
 
6
23
  **Merged pull requests:**
7
24
 
25
+ - Version bump 0.1.1 [\#6](https://github.com/TypistTech/vagrant-trellis-cert/pull/6) ([TangRufus](https://github.com/TangRufus))
8
26
  - Fix: Uninitialized constant [\#5](https://github.com/TypistTech/vagrant-trellis-cert/pull/5) ([TangRufus](https://github.com/TangRufus))
9
27
 
10
28
  ## [v0.1.0](https://github.com/TypistTech/vagrant-trellis-cert/tree/v0.1.0) (2017-09-12)
data/Gemfile CHANGED
@@ -1,15 +1,30 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  source "https://rubygems.org"
4
-
5
4
  git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
6
5
 
6
+ # To make `$ bundle exec vagrant` works
7
+ embedded_directories = %w[/Applications/Vagrant/embedded /opt/vagrant/embedded]
8
+ embedded_directories.each do |path|
9
+ ENV["VAGRANT_INSTALLER_EMBEDDED_DIR"] = path if File.directory?(path)
10
+ end
11
+
12
+ unless ENV.key?("VAGRANT_INSTALLER_EMBEDDED_DIR")
13
+ $stderr.puts "Couldn't find a packaged install of vagrant, and we need this"
14
+ $stderr.puts "in order to make use of the RubyEncoder libraries."
15
+ $stderr.puts "I looked in:"
16
+ embedded_locations.each do |path|
17
+ $stderr.puts " #{path}"
18
+ end
19
+ end
20
+
7
21
  group :development do
8
- gem "bundler", "~> 1.15"
9
- gem "rake", "~> 12.1"
10
- gem "rubocop", "~> 0.49"
22
+ # We depend on Vagrant for development, but we don't add it as a
23
+ # gem dependency because we expect to be installed within the
24
+ # Vagrant environment itself using `vagrant plugin`.
25
+ gem "vagrant", github: "mitchellh/vagrant"
11
26
  end
12
27
 
13
28
  group :plugins do
14
- gem "vagrant-trellis-cert", path: "."
29
+ gemspec
15
30
  end
data/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
  [![Donate via PayPal](https://img.shields.io/badge/Donate-PayPal-blue.svg)](https://www.typist.tech/donate/vagrant-trellis-cert/)
8
8
  [![Hire Typist Tech](https://img.shields.io/badge/Hire-Typist%20Tech-ff69b4.svg)](https://www.typist.tech/contact/)
9
9
 
10
- Trust all Trellis self-signed certificates with single command
10
+ Trust Trellis self-signed certificates with single command
11
11
 
12
12
  <!-- START doctoc generated TOC please keep comment here to allow auto update -->
13
13
  <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
@@ -38,19 +38,23 @@ $ vagrant plugin install vagrant-trellis-cert
38
38
  ## Usage
39
39
 
40
40
  ```bash
41
- # Trust all certificates on a Trellis vagrant VM
42
- $ vagrant trellis-cert [--path <path>]
41
+ # Trust Trellis certificates on a Trellis vagrant VM
42
+ #
43
+ # Usage: vagrant trellis-cert trust [options]
44
+ #
45
+ # -p, --path PATH Path to the Trellis root
46
+ # -h, --help Print this help
43
47
 
44
- # Example: Running at Trellis root
45
- $ vagrant trellis-cert
48
+ # Example: Running at Trellis root (same level with ansible.cfg)
49
+ $ vagrant trellis-cert trust
46
50
 
47
51
  # Example: Specify Trellis root
48
- $ vagrant trellis-cert --path /path/to/trellis
52
+ $ vagrant trellis-cert trust --path /path/to/trellis
49
53
  ```
50
54
 
51
55
  ## Going super lazy
52
56
 
53
- If the [vagrant-triggers](https://github.com/emyl/vagrant-triggers) plugin is installed, we can run the command on Vagrant state changes like `vagrant up` and `vagrant reload`. Add these line into Trellis' `Vagrantfile`:
57
+ If the [vagrant-triggers](https://github.com/emyl/vagrant-triggers) plugin is installed, we can run the command on Vagrant state changes like `vagrant provision`. Add these lines into Trellis' `Vagrantfile`:
54
58
 
55
59
  ```ruby
56
60
  # Vagrantfile
@@ -58,21 +62,11 @@ If the [vagrant-triggers](https://github.com/emyl/vagrant-triggers) plugin is in
58
62
  # Some lines of code...
59
63
 
60
64
  Vagrant.configure('2') do |config|
61
-
62
65
  # Some more lines of code later...
63
66
 
64
- config.trigger.after :up, :stdout => true do
65
- run "vagrant trellis-cert"
66
- end
67
-
68
67
  config.trigger.after :provision, :stdout => true do
69
- run "vagrant trellis-cert"
68
+ run "vagrant trellis-cert trust"
70
69
  end
71
-
72
- config.trigger.after :reload, :stdout => true do
73
- run "vagrant trellis-cert"
74
- end
75
-
76
70
  end
77
71
  ```
78
72
 
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "vagrant_trellis_cert/identity"
4
- require "vagrant_trellis_cert/plugin"
3
+ require "vagrant_plugins/trellis_cert/identity"
4
+ require "vagrant_plugins/trellis_cert/plugin"
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "optparse"
4
+ require "vagrant"
5
+
6
+ module VagrantPlugins
7
+ module TrellisCert
8
+ module Commands
9
+ class Root < Vagrant.plugin("2", :command)
10
+ def self.synopsis
11
+ "trust Trellis self-signed certificates"
12
+ end
13
+
14
+ def initialize(argv, env)
15
+ super
16
+
17
+ @main_args, @sub_command, @sub_args = split_main_and_subcommand(argv)
18
+
19
+ @subcommands = Vagrant::Registry.new
20
+
21
+ @subcommands.register(:trust) do
22
+ require_relative "trust"
23
+ Trust
24
+ end
25
+ end
26
+
27
+ def execute
28
+ return help if (@main_args & %w[-h --help]).any?
29
+
30
+ command_class = @subcommands.get(@sub_command&.to_sym)
31
+ return help unless command_class
32
+
33
+ # Initialize and execute the command class
34
+ command_class.new(@sub_args, @env).execute
35
+ end
36
+
37
+ private
38
+
39
+ def help
40
+ option_parser = OptionParser.new do |opts|
41
+ opts.banner = "Usage: vagrant trellis-cert <command> [<args>]"
42
+ opts.separator ""
43
+ opts.separator "Available subcommands:"
44
+
45
+ @subcommands.keys.sort.each do |key|
46
+ opts.separator " #{key}"
47
+ end
48
+
49
+ opts.separator ""
50
+ opts.separator "For help on any individual command run 'vagrant trellis-cert COMMAND -h'"
51
+ end
52
+
53
+ @env.ui.info(option_parser.help, prefix: false)
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,83 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "fileutils"
4
+ require "optparse"
5
+ require "vagrant"
6
+ require "vagrant_plugins/trellis_cert/trellis"
7
+
8
+ module VagrantPlugins
9
+ module TrellisCert
10
+ module Commands
11
+ class Trust < Vagrant.plugin("2", :command)
12
+ def execute
13
+ check_platform!
14
+
15
+ options = {}
16
+ parse_options(option_parser(options: options))
17
+ path = options[:path] || "."
18
+
19
+ tmp_dir = File.join(@env.tmp_path, Identity.name)
20
+ FileUtils.mkdir_p(tmp_dir)
21
+ begin
22
+ results = hosts(path: path).group_by { |host| trust(host: host, tmp_dir: tmp_dir) }
23
+
24
+ print_success_messages_for(successes: results.dig(true))
25
+ print_error_messages_for(failures: results.dig(false))
26
+ ensure
27
+ FileUtils.rm_rf(tmp_dir)
28
+ end
29
+
30
+ exit_code_for(results: results)
31
+ end
32
+
33
+ private
34
+
35
+ def check_platform!
36
+ return if Vagrant::Util::Platform.darwin?
37
+ fail Vagrant::Errors::CLIInvalidUsage.new(help: "vagrant-trellis-cert only works on macOS. Pull requests are welcome.")
38
+ end
39
+
40
+ def option_parser(options:)
41
+ OptionParser.new do |opts|
42
+ opts.banner = "Usage: vagrant trellis-cert trust [options]"
43
+ opts.separator ""
44
+
45
+ opts.on("-p", "--path PATH", String, "Path to the Trellis root") do |path|
46
+ options[:path] = path
47
+ end
48
+
49
+ opts.on("-h", "--help", "Print this help") do
50
+ @env.ui.info(opts)
51
+ exit
52
+ end
53
+ end
54
+ end
55
+
56
+ def hosts(path:)
57
+ @hosts ||= Trellis.new(path: path).canonicals
58
+ end
59
+
60
+ def trust(host:, tmp_dir:)
61
+ system("openssl s_client -showcerts -connect #{host}:443 </dev/null 2>/dev/null | openssl x509 -outform PEM > #{tmp_dir}/#{host}.pem 2>/dev/null")
62
+ system("security add-trusted-cert -k ~/Library/Keychains/login.keychain #{tmp_dir}/#{host}.pem >/dev/null 2>/dev/null")
63
+ end
64
+
65
+ def print_success_messages_for(successes:)
66
+ successes&.each do |host|
67
+ @env.ui.success("#{host} certificate imported successfully")
68
+ end
69
+ end
70
+
71
+ def print_error_messages_for(failures:)
72
+ failures&.each do |host|
73
+ @env.ui.error("#{host} certificate import failed")
74
+ end
75
+ end
76
+
77
+ def exit_code_for(results:)
78
+ results.dig(false).nil? ? 0 : 1
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module VagrantPlugins
4
+ module TrellisCert
5
+ module Identity
6
+ def self.name
7
+ "vagrant-trellis-cert"
8
+ end
9
+
10
+ def self.version
11
+ "0.2.0"
12
+ end
13
+
14
+ def self.description
15
+ "Trust all Trellis self-signed certificates with single command"
16
+ end
17
+
18
+ def self.summary
19
+ description
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "vagrant"
4
+
5
+ module VagrantPlugins
6
+ module TrellisCert
7
+ class Plugin < Vagrant.plugin("2")
8
+ name Identity.name
9
+
10
+ description Identity.description
11
+
12
+ command "trellis-cert" do
13
+ require_relative "commands/root"
14
+ Commands::Root
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "vagrant"
4
+ require "yaml"
5
+
6
+ module VagrantPlugins
7
+ module TrellisCert
8
+ class Trellis
9
+ def initialize(path:)
10
+ @path = path
11
+ end
12
+
13
+ def canonicals
14
+ malformed = site_hosts.any? do |host|
15
+ !host.is_a?(Hash) || !host.key?("canonical")
16
+ end
17
+ fail_with(message: site_hosts_example) if malformed
18
+
19
+ site_hosts.map { |host| host["canonical"] }
20
+ end
21
+
22
+ private
23
+
24
+ def site_hosts
25
+ wordpress_sites.flat_map { |(_name, site)| site["site_hosts"] }
26
+ end
27
+
28
+ def wordpress_sites
29
+ unless File.exist?(config_file)
30
+ message = "#{config_file} was not found. Perhaps `--path` is missing or incorrect."
31
+ fail_with(message: message)
32
+ end
33
+
34
+ YAML.load_file(config_file)["wordpress_sites"].tap do |sites|
35
+ fail_with(message: "No sites found in #{config_file}.") if sites.to_h.empty?
36
+ end
37
+ end
38
+
39
+ def config_file
40
+ File.join(@path, "group_vars", "development", "wordpress_sites.yml")
41
+ end
42
+
43
+ def site_hosts_example
44
+ template = File.join(@path, "roles/common/templates/site_hosts.j2")
45
+ File.read(template).sub!("{{ env }}", "development").gsub!(/com$/, "dev")
46
+ end
47
+
48
+ def fail_with(message:)
49
+ fail Vagrant::Errors::VagrantError.new, message
50
+ end
51
+ end
52
+ end
53
+ end
@@ -1,32 +1,29 @@
1
- # coding: utf-8
2
1
  # frozen_string_literal: true
3
2
 
4
3
  lib = File.expand_path("../lib", __FILE__)
5
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
6
- require "vagrant_trellis_cert/identity"
5
+ require "vagrant_plugins/trellis_cert/identity.rb"
7
6
 
8
7
  Gem::Specification.new do |spec|
9
- spec.name = VagrantTrellisCert::Identity.name
10
- spec.version = VagrantTrellisCert::Identity.version
8
+ spec.name = VagrantPlugins::TrellisCert::Identity.name
9
+ spec.version = VagrantPlugins::TrellisCert::Identity.version
11
10
  spec.authors = ["Tang Rufus", "Typist Tech"]
12
11
  spec.email = ["tangrufus@gmail.com", "vagrant-trellis-cert@typist.tech"]
13
12
 
14
- spec.summary = "Trust all Trellis self-signed certificates with single command"
13
+ spec.summary = VagrantPlugins::TrellisCert::Identity.summary
15
14
  spec.homepage = "https://www.typist.tech/projects/vagrant-trellis-cert"
16
15
  spec.license = "MIT"
17
16
 
17
+ spec.required_ruby_version = ">= 2.3.0"
18
18
 
19
- spec.files = `git ls-files -z`.split("\x0").reject do |f|
19
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
20
20
  f.match(%r{^(test|spec|features)/})
21
21
  end
22
22
  spec.bindir = "exe"
23
23
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
24
  spec.require_paths = ["lib"]
25
25
 
26
- spec.required_ruby_version = "~> 2.2", "< 2.4"
27
- spec.required_rubygems_version = ">= 1.3.6"
28
-
29
26
  spec.add_development_dependency "bundler", "~> 1.15"
30
- spec.add_development_dependency "rake", "~> 10.0"
27
+ spec.add_development_dependency "rake", "~> 12.0"
31
28
  spec.add_development_dependency "rubocop", "~> 0.49"
32
29
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-trellis-cert
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tang Rufus
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2017-09-12 00:00:00.000000000 Z
12
+ date: 2017-09-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -31,14 +31,14 @@ dependencies:
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '10.0'
34
+ version: '12.0'
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '10.0'
41
+ version: '12.0'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: rubocop
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -63,6 +63,8 @@ extra_rdoc_files: []
63
63
  files:
64
64
  - ".github_changelog_generator"
65
65
  - ".gitignore"
66
+ - ".hound.yml"
67
+ - ".rubocop.rails.yml"
66
68
  - ".rubocop.yml"
67
69
  - CHANGELOG.md
68
70
  - CODE_OF_CONDUCT.md
@@ -71,9 +73,11 @@ files:
71
73
  - README.md
72
74
  - Rakefile
73
75
  - lib/vagrant-trellis-cert.rb
74
- - lib/vagrant_trellis_cert/command.rb
75
- - lib/vagrant_trellis_cert/identity.rb
76
- - lib/vagrant_trellis_cert/plugin.rb
76
+ - lib/vagrant_plugins/trellis_cert/commands/root.rb
77
+ - lib/vagrant_plugins/trellis_cert/commands/trust.rb
78
+ - lib/vagrant_plugins/trellis_cert/identity.rb
79
+ - lib/vagrant_plugins/trellis_cert/plugin.rb
80
+ - lib/vagrant_plugins/trellis_cert/trellis.rb
77
81
  - vagrant-trellis-cert.gemspec
78
82
  homepage: https://www.typist.tech/projects/vagrant-trellis-cert
79
83
  licenses:
@@ -85,17 +89,14 @@ require_paths:
85
89
  - lib
86
90
  required_ruby_version: !ruby/object:Gem::Requirement
87
91
  requirements:
88
- - - "~>"
89
- - !ruby/object:Gem::Version
90
- version: '2.2'
91
- - - "<"
92
+ - - ">="
92
93
  - !ruby/object:Gem::Version
93
- version: '2.4'
94
+ version: 2.3.0
94
95
  required_rubygems_version: !ruby/object:Gem::Requirement
95
96
  requirements:
96
97
  - - ">="
97
98
  - !ruby/object:Gem::Version
98
- version: 1.3.6
99
+ version: '0'
99
100
  requirements: []
100
101
  rubyforge_project:
101
102
  rubygems_version: 2.5.2
@@ -1,84 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "fileutils"
4
- require "yaml"
5
-
6
- module VagrantTrellisCert
7
- class Command < Vagrant.plugin("2", :command)
8
- def self.synopsis
9
- "trust all Trellis self-signed certificates"
10
- end
11
-
12
- def execute
13
- options = {}
14
- opts = OptionParser.new do |o|
15
- o.banner = "Usage: vagrant trellis-cert [--path <path>]"
16
- o.separator ""
17
- o.version = VagrantTrellisCert::Identity.version
18
- o.program_name = "vagrant trellis-cert"
19
-
20
- o.on("--path <path>", String, "Path to the Trellis root") do |path|
21
- options[:path] = path
22
- end
23
- end
24
- argv = parse_options(opts)
25
-
26
- @path = options[:path] || "."
27
-
28
- FileUtils.rm_rf(tmp_path)
29
- FileUtils.mkdir_p(tmp_path)
30
-
31
- canonical_hosts.each do |host|
32
- system("openssl s_client -showcerts -connect #{host}:443 </dev/null 2>/dev/null | openssl x509 -outform PEM > #{tmp_path}/#{host}.pem 2>/dev/null")
33
- end
34
-
35
- canonical_hosts.each do |host|
36
- success = system("security add-trusted-cert -k ~/Library/Keychains/login.keychain #{tmp_path}/#{host}.pem >/dev/null 2>/dev/null")
37
-
38
- if success
39
- @env.ui.success("#{host} certificate imported successfully")
40
- else
41
- @env.ui.error("#{host} certificate import failed")
42
- end
43
- end
44
-
45
- FileUtils.rm_rf(tmp_path)
46
- end
47
-
48
- def canonical_hosts
49
- site_hosts.map do |host|
50
- if !host.is_a?(Hash) || !host.has_key?("canonical")
51
- fail_with_message File.read(File.join(@path, "roles/common/templates/site_hosts.j2")).sub!("{{ env }}", "development").gsub!(/com$/, "dev")
52
- end
53
-
54
- host.fetch("canonical")
55
- end
56
- end
57
-
58
- def site_hosts
59
- sites.flat_map { |(_name, site)| site["site_hosts"] }
60
- end
61
-
62
- def sites
63
- unless File.exists?(config_file)
64
- fail_with_message "#{config_file} was not found. Please run `$ vagrant trellis-cert` with `--path` option"
65
- end
66
-
67
- YAML.load_file(config_file)["wordpress_sites"].tap do |sites|
68
- fail_with_message "No sites found in #{config_file}." if sites.to_h.empty?
69
- end
70
- end
71
-
72
- def config_file
73
- File.join(@path, "group_vars", "development", "wordpress_sites.yml")
74
- end
75
-
76
- def fail_with_message(msg)
77
- fail Vagrant::Errors::VagrantError.new, msg
78
- end
79
-
80
- def tmp_path
81
- "#{@env.tmp_path}/#{VagrantTrellisCert::Identity.name}"
82
- end
83
- end
84
- end
@@ -1,14 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module VagrantTrellisCert
4
- # Gem identity information.
5
- module Identity
6
- def self.name
7
- "vagrant-trellis-cert"
8
- end
9
-
10
- def self.version
11
- "0.1.1"
12
- end
13
- end
14
- end
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module VagrantTrellisCert
4
- class Plugin < Vagrant.plugin("2")
5
- name Identity.name
6
-
7
- command "trellis-cert" do
8
- require_relative "command"
9
- Command
10
- end
11
- end
12
- end