vagrant-dotvm 0.34.0 → 0.35.1.pre
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/CHANGELOG.md +3 -0
- data/CONTRIBUTING.md +9 -0
- data/Gemfile +4 -2
- data/README.md +3 -22
- data/Rakefile +1 -2
- data/lib/vagrant-dotvm/config/abstractconfig.rb +9 -2
- data/lib/vagrant-dotvm/config/host.rb +1 -0
- data/lib/vagrant-dotvm/config/instance.rb +1 -1
- data/lib/vagrant-dotvm/config/invalidconfigerror.rb +1 -0
- data/lib/vagrant-dotvm/config/machine.rb +5 -4
- data/lib/vagrant-dotvm/config/network.rb +3 -2
- data/lib/vagrant-dotvm/config/option.rb +1 -0
- data/lib/vagrant-dotvm/config/optionssetter.rb +2 -2
- data/lib/vagrant-dotvm/config/project.rb +1 -1
- data/lib/vagrant-dotvm/config/route.rb +1 -0
- data/lib/vagrant-dotvm/dotvm.rb +17 -21
- data/lib/vagrant-dotvm/injector/abstractinjector.rb +7 -4
- data/lib/vagrant-dotvm/injector/authorizedkey.rb +7 -2
- data/lib/vagrant-dotvm/injector/host.rb +7 -2
- data/lib/vagrant-dotvm/injector/instance.rb +7 -2
- data/lib/vagrant-dotvm/injector/machine.rb +64 -32
- data/lib/vagrant-dotvm/injector/network.rb +7 -2
- data/lib/vagrant-dotvm/injector/project.rb +7 -2
- data/lib/vagrant-dotvm/injector/provision.rb +9 -5
- data/lib/vagrant-dotvm/injector/route.rb +7 -2
- data/lib/vagrant-dotvm/injector/sharedfolder.rb +13 -4
- data/lib/vagrant-dotvm/paths.rb +1 -0
- data/lib/vagrant-dotvm/plugin.rb +0 -2
- data/lib/vagrant-dotvm/replacer.rb +14 -12
- data/lib/vagrant-dotvm/version.rb +1 -1
- data/vagrant-dotvm.gemspec +9 -9
- metadata +6 -5
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 3dab3eb77f8227efb87c30af0591e3e7013bbaa1
         | 
| 4 | 
            +
              data.tar.gz: 9cd913f4d0d329db63f9c903972e472676d23e01
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 7bc0a27d27b0d5e01e875546b4151d0046e0419849271b143edc30953b36560f6ad0045dcdbadbe12857af84a762434631ba36b804d33e425c74ff05b906e1e6
         | 
| 7 | 
            +
              data.tar.gz: a13b24e90c97ae5025752107696636a4e8f8a2a2b52f3030f9b6d348bb4f73780e087fec28c765a3eedbaab18b1fb0f9bbee9c045bcb4ae1f17d7aff12859b5c
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    
    
        data/CONTRIBUTING.md
    ADDED
    
    | @@ -0,0 +1,9 @@ | |
| 1 | 
            +
            # Contribution rules
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            * Follow [Community-driven Ruby Style Guide](https://github.com/bbatsov/ruby-style-guide)
         | 
| 4 | 
            +
            * Check style using [Rubocop](https://github.com/bbatsov/rubocop) before sending pull request
         | 
| 5 | 
            +
            * Don't send multiple unrelated functionalities in one pull request
         | 
| 6 | 
            +
            * Don't use micro optimisations which are hard to read
         | 
| 7 | 
            +
            * Your code will be published under [MIT license](LICENSE.txt)
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            By sending pull request you confirm that you agree with above rules.
         | 
    
        data/Gemfile
    CHANGED
    
    | @@ -1,10 +1,12 @@ | |
| 1 1 | 
             
            source 'https://rubygems.org'
         | 
| 2 2 |  | 
| 3 3 | 
             
            group :development do
         | 
| 4 | 
            -
              gem 'vagrant', | 
| 4 | 
            +
              gem 'vagrant',
         | 
| 5 | 
            +
                  git: 'git://github.com/mitchellh/vagrant.git'
         | 
| 5 6 | 
             
            end
         | 
| 6 7 |  | 
| 7 8 | 
             
            group :plugins do
         | 
| 8 9 | 
             
              gemspec
         | 
| 9 | 
            -
              gem 'vagrant-group', | 
| 10 | 
            +
              gem 'vagrant-group',
         | 
| 11 | 
            +
                  git: 'git://github.com/krzysztof-magosa/vagrant-group.git'
         | 
| 10 12 | 
             
            end
         | 
    
        data/README.md
    CHANGED
    
    | @@ -1,7 +1,6 @@ | |
| 1 1 | 
             
            # DotVm
         | 
| 2 2 |  | 
| 3 3 | 
             
            [](https://codeclimate.com/github/vagrant-dotvm/vagrant-dotvm)
         | 
| 4 | 
            -
            [](https://scrutinizer-ci.com/g/krzysztof-magosa/vagrant-dotvm/?branch=master)
         | 
| 5 4 | 
             
            [](http://badge.fury.io/rb/vagrant-dotvm)
         | 
| 6 5 |  | 
| 7 6 | 
             
            ## What is that?
         | 
| @@ -25,33 +24,15 @@ Then create Vagrantfile like that: | |
| 25 24 | 
             
            require 'vagrant-dotvm'
         | 
| 26 25 |  | 
| 27 26 | 
             
            Vagrant.configure(2) do |config|
         | 
| 28 | 
            -
               | 
| 29 | 
            -
              # directory as Vagrantfile.
         | 
| 30 | 
            -
              config_path = File.dirname(File.expand_path(__FILE__)) + "/config"
         | 
| 31 | 
            -
              dotvm = VagrantPlugins::Dotvm::Dotvm.new config_path
         | 
| 27 | 
            +
              dotvm = VagrantPlugins::Dotvm::Dotvm.new __dir__
         | 
| 32 28 | 
             
              dotvm.inject(config)
         | 
| 33 29 | 
             
            end
         | 
| 34 30 | 
             
            ```
         | 
| 35 31 |  | 
| 36 32 | 
             
            Prepare directory for storing your projects:
         | 
| 37 33 | 
             
            ```
         | 
| 38 | 
            -
            $ mkdir  | 
| 34 | 
            +
            $ mkdir projects
         | 
| 39 35 | 
             
            ```
         | 
| 40 36 |  | 
| 41 | 
            -
            ## How to configure machine
         | 
| 42 | 
            -
            You need to create folder named after your project in `config/projects`.
         | 
| 43 | 
            -
            In this folder you can create as many YAML files as you want.
         | 
| 44 | 
            -
            In each one you are able to define multiple machines.
         | 
| 45 | 
            -
             | 
| 46 | 
            -
            Please refer to [example](/examples) to see possible options.
         | 
| 47 | 
            -
             | 
| 48 | 
            -
            ## Available variables
         | 
| 49 | 
            -
            You can use variables inside of config values.
         | 
| 50 | 
            -
            Environment variables are accessible by using env prefix, e.g. `%env.LOGNAME%`.  
         | 
| 51 | 
            -
             | 
| 52 | 
            -
            Predefined variables:  
         | 
| 53 | 
            -
            * `%project.host%` - points to project directory on host
         | 
| 54 | 
            -
            * `%project.guest%` - points to project directory on guest
         | 
| 55 | 
            -
             | 
| 56 37 | 
             
            ## More information
         | 
| 57 | 
            -
            For more information please follow to [wiki](https://github.com/ | 
| 38 | 
            +
            For more information please follow to [wiki](https://github.com/vagrant-dotvm/vagrant-dotvm/wiki/Getting-started).
         | 
    
        data/Rakefile
    CHANGED
    
    | @@ -1,2 +1 @@ | |
| 1 | 
            -
            require  | 
| 2 | 
            -
             | 
| 1 | 
            +
            require 'bundler/gem_tasks'
         | 
| @@ -7,13 +7,20 @@ module VagrantPlugins | |
| 7 7 | 
             
                    # @param data [Hash] Hash with data
         | 
| 8 8 | 
             
                    def populate(data)
         | 
| 9 9 | 
             
                      data.each do |key, value|
         | 
| 10 | 
            -
                         | 
| 10 | 
            +
                        unless respond_to? "#{key}="
         | 
| 11 | 
            +
                          fail(
         | 
| 12 | 
            +
                            InvalidConfigError.new,
         | 
| 13 | 
            +
                            "Invalid configuration option: #{key}."
         | 
| 14 | 
            +
                          )
         | 
| 15 | 
            +
                        end
         | 
| 16 | 
            +
             | 
| 11 17 | 
             
                        send("#{key}=", value)
         | 
| 12 18 | 
             
                      end
         | 
| 13 19 | 
             
                    end
         | 
| 14 20 |  | 
| 15 21 | 
             
                    def ensure_type(value, type, name = '')
         | 
| 16 | 
            -
                       | 
| 22 | 
            +
                      return true if value.is_a?(type) || value.is_a?(NilClass)
         | 
| 23 | 
            +
                      fail InvalidConfigError.new, "'#{name}' must be #{type.name}."
         | 
| 17 24 | 
             
                    end
         | 
| 18 25 |  | 
| 19 26 | 
             
                    # Converts array of hashes into array of specialized objects.
         | 
| @@ -1,11 +1,12 @@ | |
| 1 1 | 
             
            module VagrantPlugins
         | 
| 2 2 | 
             
              module Dotvm
         | 
| 3 3 | 
             
                module Config
         | 
| 4 | 
            +
                  # Stores machine configuration
         | 
| 4 5 | 
             
                  class Machine < AbstractConfig
         | 
| 5 6 | 
             
                    include OptionsSetter
         | 
| 6 7 |  | 
| 7 8 | 
             
                    OPTIONS_CATEGORIES = [
         | 
| 8 | 
            -
                      :virtualbox | 
| 9 | 
            +
                      :virtualbox
         | 
| 9 10 | 
             
                    ]
         | 
| 10 11 |  | 
| 11 12 | 
             
                    attr_reader :parent
         | 
| @@ -53,7 +54,7 @@ module VagrantPlugins | |
| 53 54 |  | 
| 54 55 | 
             
                    def usable_port_range=(value)
         | 
| 55 56 | 
             
                      m = value.scan(/^(\d+)\.\.(\d+)$/)
         | 
| 56 | 
            -
                       | 
| 57 | 
            +
                      fail InvalidConfigError.new, 'Invalid usable_port_range, it must be in A..B format.' if m.length == 0
         | 
| 57 58 | 
             
                      @usable_port_range = Range.new(m[0][0].to_i, m[0][1].to_i)
         | 
| 58 59 | 
             
                    end
         | 
| 59 60 |  | 
| @@ -95,18 +96,18 @@ module VagrantPlugins | |
| 95 96 | 
             
                      ensure_type shared_folders, Array, 'shared_folders'
         | 
| 96 97 | 
             
                      @shared_folders = convert_array(shared_folders, SharedFolder.name)
         | 
| 97 98 |  | 
| 99 | 
            +
                      # Mount DotVM project directory
         | 
| 98 100 | 
             
                      settings = {
         | 
| 99 101 | 
             
                        'host'     => @parent.variables['host.project_dir'],
         | 
| 100 102 | 
             
                        'guest'    => @parent.variables['guest.project_dir'],
         | 
| 101 103 | 
             
                        'disabled' => false,
         | 
| 102 104 | 
             
                        'create'   => false,
         | 
| 103 | 
            -
                        'type'     => nil | 
| 105 | 
            +
                        'type'     => nil
         | 
| 104 106 | 
             
                      }
         | 
| 105 107 | 
             
                      item = SharedFolder.new
         | 
| 106 108 | 
             
                      item.populate settings
         | 
| 107 109 | 
             
                      @shared_folders << item
         | 
| 108 110 | 
             
                    end
         | 
| 109 | 
            -
             | 
| 110 111 | 
             
                  end
         | 
| 111 112 | 
             
                end
         | 
| 112 113 | 
             
              end
         | 
| @@ -1,6 +1,7 @@ | |
| 1 1 | 
             
            module VagrantPlugins
         | 
| 2 2 | 
             
              module Dotvm
         | 
| 3 3 | 
             
                module Config
         | 
| 4 | 
            +
                  # Stores network configuration
         | 
| 4 5 | 
             
                  class Network < AbstractConfig
         | 
| 5 6 | 
             
                    attr_reader :net
         | 
| 6 7 | 
             
                    attr_accessor :type
         | 
| @@ -17,7 +18,7 @@ module VagrantPlugins | |
| 17 18 | 
             
                    attr_accessor :auto_config
         | 
| 18 19 |  | 
| 19 20 | 
             
                    def initialize
         | 
| 20 | 
            -
                      @net | 
| 21 | 
            +
                      @net = :private_network
         | 
| 21 22 | 
             
                    end
         | 
| 22 23 |  | 
| 23 24 | 
             
                    def net=(value)
         | 
| @@ -27,7 +28,7 @@ module VagrantPlugins | |
| 27 28 | 
             
                        'public_network'  => :public_network,
         | 
| 28 29 | 
             
                        'public'          => :public_network,
         | 
| 29 30 | 
             
                        'forwarded_port'  => :forwarded_port,
         | 
| 30 | 
            -
                        'port'            => :forwarded_port | 
| 31 | 
            +
                        'port'            => :forwarded_port
         | 
| 31 32 | 
             
                      }
         | 
| 32 33 |  | 
| 33 34 | 
             
                      @net = nets[value]
         | 
| @@ -5,14 +5,14 @@ module VagrantPlugins | |
| 5 5 | 
             
                    def options=(options)
         | 
| 6 6 | 
             
                      ensure_type options, Hash, 'options'
         | 
| 7 7 |  | 
| 8 | 
            -
                      @options | 
| 8 | 
            +
                      @options = {}
         | 
| 9 9 | 
             
                      self.class::OPTIONS_CATEGORIES.each do |cat|
         | 
| 10 10 | 
             
                        @options[cat] = []
         | 
| 11 11 | 
             
                      end
         | 
| 12 12 |  | 
| 13 13 | 
             
                      options.to_h.each do |key, confs|
         | 
| 14 14 | 
             
                        key = key.to_sym
         | 
| 15 | 
            -
                         | 
| 15 | 
            +
                        fail InvalidConfigError.new, "Invalid options category: #{key}." unless @options.key?(key)
         | 
| 16 16 | 
             
                        ensure_type confs, Array, "options.#{key}"
         | 
| 17 17 |  | 
| 18 18 | 
             
                        confs.to_a.each do |conf|
         | 
    
        data/lib/vagrant-dotvm/dotvm.rb
    CHANGED
    
    | @@ -1,20 +1,27 @@ | |
| 1 1 | 
             
            module VagrantPlugins
         | 
| 2 2 | 
             
              module Dotvm
         | 
| 3 3 | 
             
                class Dotvm
         | 
| 4 | 
            -
             | 
| 5 4 | 
             
                  def initialize(path = nil)
         | 
| 6 | 
            -
                     | 
| 5 | 
            +
                    fail 'path must be set.' until path
         | 
| 7 6 | 
             
                    @path = path
         | 
| 8 7 | 
             
                  end
         | 
| 9 8 |  | 
| 9 | 
            +
                  def inject(vc)
         | 
| 10 | 
            +
                    init_instance
         | 
| 11 | 
            +
                    load_options
         | 
| 12 | 
            +
                    load_projects
         | 
| 13 | 
            +
                    Injector::Instance.inject @instance, vc
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
             | 
| 10 16 | 
             
                  private
         | 
| 17 | 
            +
             | 
| 11 18 | 
             
                  def parse_variables(path)
         | 
| 12 19 | 
             
                    result = {}
         | 
| 13 20 |  | 
| 14 21 | 
             
                    Dir[path].each do |fname|
         | 
| 15 | 
            -
                      yaml = YAML | 
| 22 | 
            +
                      yaml = YAML.load(File.read(fname)) || {}
         | 
| 16 23 | 
             
                      yaml.each do |name, value|
         | 
| 17 | 
            -
                         | 
| 24 | 
            +
                        fail "Variable #{name} already exists." if result.key? name
         | 
| 18 25 | 
             
                        result[name] = value
         | 
| 19 26 | 
             
                      end
         | 
| 20 27 | 
             
                    end
         | 
| @@ -22,24 +29,21 @@ module VagrantPlugins | |
| 22 29 | 
             
                    result
         | 
| 23 30 | 
             
                  end
         | 
| 24 31 |  | 
| 25 | 
            -
                  private
         | 
| 26 32 | 
             
                  def init_instance
         | 
| 27 33 | 
             
                    @instance = Config::Instance.new
         | 
| 28 34 | 
             
                    @instance.variables.append_group 'env', ENV
         | 
| 29 35 | 
             
                    @instance.variables.append_group 'global', (parse_variables "#{@path}/variables/*.yaml")
         | 
| 30 36 | 
             
                  end
         | 
| 31 37 |  | 
| 32 | 
            -
                  private
         | 
| 33 38 | 
             
                  def load_options
         | 
| 34 39 | 
             
                    Dir["#{@path}/options/*.yaml"].each do |file|
         | 
| 35 40 | 
             
                      @instance.options = Replacer.new
         | 
| 36 | 
            -
             | 
| 37 | 
            -
             | 
| 38 | 
            -
             | 
| 41 | 
            +
                        .on(YAML.load(File.read(file)) || {})
         | 
| 42 | 
            +
                        .using(@instance.variables)
         | 
| 43 | 
            +
                        .result
         | 
| 39 44 | 
             
                    end
         | 
| 40 45 | 
             
                  end
         | 
| 41 46 |  | 
| 42 | 
            -
                  private
         | 
| 43 47 | 
             
                  def load_projects
         | 
| 44 48 | 
             
                    Dir["#{@path}/projects/*"].each do |dir|
         | 
| 45 49 | 
             
                      project = @instance.new_project
         | 
| @@ -48,21 +52,21 @@ module VagrantPlugins | |
| 48 52 | 
             
                        'host',
         | 
| 49 53 | 
             
                        {
         | 
| 50 54 | 
             
                          'project_dir' => dir,
         | 
| 51 | 
            -
                          'files_dir' => "#{dir}/files" | 
| 55 | 
            +
                          'files_dir' => "#{dir}/files"
         | 
| 52 56 | 
             
                        }
         | 
| 53 57 | 
             
                      )
         | 
| 54 58 | 
             
                      project.variables.append_group(
         | 
| 55 59 | 
             
                        'guest',
         | 
| 56 60 | 
             
                        {
         | 
| 57 61 | 
             
                          'project_dir' => DOTVM_PROJECT_PATH,
         | 
| 58 | 
            -
                          'files_dir' =>  | 
| 62 | 
            +
                          'files_dir' => DOTVM_FILES_PATH
         | 
| 59 63 | 
             
                        }
         | 
| 60 64 | 
             
                      )
         | 
| 61 65 |  | 
| 62 66 | 
             
                      Dir["#{dir}/machines/*.yaml"].each do |file|
         | 
| 63 67 | 
             
                        begin
         | 
| 64 68 | 
             
                          yaml = Replacer.new
         | 
| 65 | 
            -
                                 .on(YAML | 
| 69 | 
            +
                                 .on(YAML.load(File.read(file)) || [])
         | 
| 66 70 | 
             
                                 .using(@instance.variables.merge(project.variables))
         | 
| 67 71 | 
             
                                 .result
         | 
| 68 72 |  | 
| @@ -77,14 +81,6 @@ module VagrantPlugins | |
| 77 81 | 
             
                    end
         | 
| 78 82 | 
             
                  end
         | 
| 79 83 |  | 
| 80 | 
            -
                  public
         | 
| 81 | 
            -
                  def inject(vc)
         | 
| 82 | 
            -
                    init_instance
         | 
| 83 | 
            -
                    load_options
         | 
| 84 | 
            -
                    load_projects
         | 
| 85 | 
            -
                    Injector::Instance.inject @instance, vc
         | 
| 86 | 
            -
                  end
         | 
| 87 | 
            -
             | 
| 88 84 | 
             
                end # DotVm
         | 
| 89 85 | 
             
              end # Dotvm
         | 
| 90 86 | 
             
            end # VagrantPlugins
         | 
| @@ -1,13 +1,16 @@ | |
| 1 1 | 
             
            module VagrantPlugins
         | 
| 2 2 | 
             
              module Dotvm
         | 
| 3 3 | 
             
                module Injector
         | 
| 4 | 
            -
                   | 
| 4 | 
            +
                  # Helper functions used by injectors
         | 
| 5 | 
            +
                  module AbstractInjector
         | 
| 6 | 
            +
                    module_function
         | 
| 7 | 
            +
             | 
| 5 8 | 
             
                    # Extracts specified `options` from `source` and return them as hash.
         | 
| 6 9 | 
             
                    #
         | 
| 7 10 | 
             
                    # @param source [Object] Object to extract data from
         | 
| 8 11 | 
             
                    # @param options [Array] List of options to be extraced
         | 
| 9 12 | 
             
                    # @return [Hash] Extracted data
         | 
| 10 | 
            -
                    def  | 
| 13 | 
            +
                    def generate_hash(source, options)
         | 
| 11 14 | 
             
                      hash = {}
         | 
| 12 15 |  | 
| 13 16 | 
             
                      options.each do |opt|
         | 
| @@ -15,7 +18,7 @@ module VagrantPlugins | |
| 15 18 | 
             
                        hash[opt] = val unless val.nil?
         | 
| 16 19 | 
             
                      end
         | 
| 17 20 |  | 
| 18 | 
            -
                       | 
| 21 | 
            +
                      hash
         | 
| 19 22 | 
             
                    end
         | 
| 20 23 |  | 
| 21 24 | 
             
                    # Rewrite `options` from `source` to `target`.
         | 
| @@ -23,7 +26,7 @@ module VagrantPlugins | |
| 23 26 | 
             
                    # @param source [Object] Object to rewrite data from
         | 
| 24 27 | 
             
                    # @param target [Object] Object to rewrite data to
         | 
| 25 28 | 
             
                    # @param options [Array] List of options to be rewritten
         | 
| 26 | 
            -
                    def  | 
| 29 | 
            +
                    def rewrite_options(source, target, options)
         | 
| 27 30 | 
             
                      options.each do |opt|
         | 
| 28 31 | 
             
                        val = source.send(opt)
         | 
| 29 32 | 
             
                        target.send("#{opt}=", val) unless val.nil?
         | 
| @@ -1,8 +1,13 @@ | |
| 1 1 | 
             
            module VagrantPlugins
         | 
| 2 2 | 
             
              module Dotvm
         | 
| 3 3 | 
             
                module Injector
         | 
| 4 | 
            -
                   | 
| 5 | 
            -
             | 
| 4 | 
            +
                  # Injects DotVm authorized key configuration into Vagrant
         | 
| 5 | 
            +
                  module AuthorizedKey
         | 
| 6 | 
            +
                    extend AbstractInjector
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                    module_function
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                    def inject(key: nil, machine: nil)
         | 
| 6 11 | 
             
                      if key.type == 'file'
         | 
| 7 12 | 
             
                        pubkey = File.readlines(File.expand_path(key.path)).first.strip
         | 
| 8 13 | 
             
                      elsif key.type == 'static'
         | 
| @@ -1,8 +1,13 @@ | |
| 1 1 | 
             
            module VagrantPlugins
         | 
| 2 2 | 
             
              module Dotvm
         | 
| 3 3 | 
             
                module Injector
         | 
| 4 | 
            -
                   | 
| 5 | 
            -
             | 
| 4 | 
            +
                  # Injects DotVm host configuration into Vagrant
         | 
| 5 | 
            +
                  module Host
         | 
| 6 | 
            +
                    extend AbstractInjector
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                    module_function
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                    def inject(host: nil, machine: nil)
         | 
| 6 11 | 
             
                      machine.vm.provision 'shell', run: 'always' do |s|
         | 
| 7 12 | 
             
                        s.path       = "#{UTILS_PATH}/add_host.sh"
         | 
| 8 13 | 
             
                        s.args       = [host.ip, host.host]
         | 
| @@ -1,8 +1,13 @@ | |
| 1 1 | 
             
            module VagrantPlugins
         | 
| 2 2 | 
             
              module Dotvm
         | 
| 3 3 | 
             
                module Injector
         | 
| 4 | 
            -
                   | 
| 5 | 
            -
             | 
| 4 | 
            +
                  # Injects DotVm instance configuration into Vagrant
         | 
| 5 | 
            +
                  module Instance
         | 
| 6 | 
            +
                    extend AbstractInjector
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                    module_function
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                    def inject(instance, vc)
         | 
| 6 11 | 
             
                      instance.options.to_h.each do |category, options|
         | 
| 7 12 | 
             
                        options.to_a.each do |option|
         | 
| 8 13 | 
             
                          vc.send(category).send("#{option.name}=", option.value)
         | 
| @@ -1,7 +1,10 @@ | |
| 1 1 | 
             
            module VagrantPlugins
         | 
| 2 2 | 
             
              module Dotvm
         | 
| 3 3 | 
             
                module Injector
         | 
| 4 | 
            -
                   | 
| 4 | 
            +
                  # Injects DotVm machine configuration into Vagrant
         | 
| 5 | 
            +
                  module Machine
         | 
| 6 | 
            +
                    extend AbstractInjector
         | 
| 7 | 
            +
             | 
| 5 8 | 
             
                    BOX_OPTIONS = [
         | 
| 6 9 | 
             
                      :box,
         | 
| 7 10 | 
             
                      :hostname,
         | 
| @@ -20,35 +23,73 @@ module VagrantPlugins | |
| 20 23 | 
             
                      :box_url,
         | 
| 21 24 | 
             
                      :communicator,
         | 
| 22 25 | 
             
                      :guest,
         | 
| 23 | 
            -
                      :usable_port_range | 
| 26 | 
            +
                      :usable_port_range
         | 
| 24 27 | 
             
                    ]
         | 
| 25 28 |  | 
| 26 | 
            -
                     | 
| 27 | 
            -
                      define_opts = {}
         | 
| 28 | 
            -
                      define_opts[:primary]   = machine_cfg.primary   unless machine_cfg.primary.nil?
         | 
| 29 | 
            -
                      define_opts[:autostart] = machine_cfg.autostart unless machine_cfg.autostart.nil?
         | 
| 29 | 
            +
                    module_function
         | 
| 30 30 |  | 
| 31 | 
            -
             | 
| 32 | 
            -
             | 
| 33 | 
            -
             | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 31 | 
            +
                    def inject_options(machine_cfg, machine)
         | 
| 32 | 
            +
                      BOX_OPTIONS.each do |opt|
         | 
| 33 | 
            +
                        val = machine_cfg.send(opt)
         | 
| 34 | 
            +
                        machine.vm.send("#{opt}=", val) unless val.nil?
         | 
| 35 | 
            +
                      end
         | 
| 36 | 
            +
                    end
         | 
| 36 37 |  | 
| 37 | 
            -
             | 
| 38 | 
            -
             | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 38 | 
            +
                    def inject_vbox(machine_cfg, machine)
         | 
| 39 | 
            +
                      mapping = [
         | 
| 40 | 
            +
                        ['--memory', :memory],
         | 
| 41 | 
            +
                        ['--cpus', :cpus],
         | 
| 42 | 
            +
                        ['--cpuexecutioncap', :cpucap],
         | 
| 43 | 
            +
                        ['--natnet1', :natnet]
         | 
| 44 | 
            +
                      ]
         | 
| 42 45 |  | 
| 43 | 
            -
             | 
| 44 | 
            -
             | 
| 45 | 
            -
                           | 
| 46 | 
            +
                      machine.vm.provider 'virtualbox' do |vb|
         | 
| 47 | 
            +
                        mapping.each do |item|
         | 
| 48 | 
            +
                          value = machine_cfg.send(item[1])
         | 
| 49 | 
            +
                          vb.customize ['modifyvm', :id, item[0], value] unless value.nil?
         | 
| 46 50 | 
             
                        end
         | 
| 47 51 |  | 
| 48 | 
            -
                         | 
| 49 | 
            -
                           | 
| 50 | 
            -
                          vf.vmx['numvcpus'] = machine_cfg.cpus   unless machine_cfg.cpus.nil?
         | 
| 52 | 
            +
                        machine_cfg.options.to_h[:virtualbox].to_a.each do |option|
         | 
| 53 | 
            +
                          vb.customize ['modifyvm', :id, option.name, option.value]
         | 
| 51 54 | 
             
                        end
         | 
| 55 | 
            +
                      end
         | 
| 56 | 
            +
                    end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                    def inject_vmware(machine_cfg, machine)
         | 
| 59 | 
            +
                      mapping = [
         | 
| 60 | 
            +
                        ['memsize', :memory],
         | 
| 61 | 
            +
                        ['numvcpus', :cpus]
         | 
| 62 | 
            +
                      ]
         | 
| 63 | 
            +
             | 
| 64 | 
            +
                      machine.vm.provider 'vmware_fusion' do |vf|
         | 
| 65 | 
            +
                        mapping.each do |item|
         | 
| 66 | 
            +
                          value = machine_cfg.send(item[1])
         | 
| 67 | 
            +
                          vf.vmx[item[1]] = value unless value.nil?
         | 
| 68 | 
            +
                        end
         | 
| 69 | 
            +
                      end
         | 
| 70 | 
            +
                    end
         | 
| 71 | 
            +
             | 
| 72 | 
            +
                    def inject_groups(machine_cfg, vc)
         | 
| 73 | 
            +
                      return false unless Vagrant.has_plugin?('vagrant-group')
         | 
| 74 | 
            +
             | 
| 75 | 
            +
                      vc.group.groups = {} unless vc.group.groups.is_a?(Hash)
         | 
| 76 | 
            +
             | 
| 77 | 
            +
                      machine_cfg.groups.to_a.each do |group|
         | 
| 78 | 
            +
                        vc.group.groups[group] = [] unless vc.group.groups.key?(group)
         | 
| 79 | 
            +
                        vc.group.groups[group] << machine_cfg.nick
         | 
| 80 | 
            +
                      end
         | 
| 81 | 
            +
                    end
         | 
| 82 | 
            +
             | 
| 83 | 
            +
                    def inject(machine_cfg: nil, vc: nil)
         | 
| 84 | 
            +
                      define_opts = {}
         | 
| 85 | 
            +
                      define_opts[:primary]   = machine_cfg.primary   unless machine_cfg.primary.nil?
         | 
| 86 | 
            +
                      define_opts[:autostart] = machine_cfg.autostart unless machine_cfg.autostart.nil?
         | 
| 87 | 
            +
             | 
| 88 | 
            +
                      vc.vm.define machine_cfg.nick, **define_opts do |machine|
         | 
| 89 | 
            +
                        inject_options machine_cfg, machine
         | 
| 90 | 
            +
                        inject_vbox machine_cfg, machine
         | 
| 91 | 
            +
                        inject_vmware machine_cfg, vc
         | 
| 92 | 
            +
                        inject_groups machine_cfg, vc
         | 
| 52 93 |  | 
| 53 94 | 
             
                        machine_cfg.networks.to_a.each do |net|
         | 
| 54 95 | 
             
                          Network.inject net: net,
         | 
| @@ -62,7 +103,7 @@ module VagrantPlugins | |
| 62 103 |  | 
| 63 104 | 
             
                        machine_cfg.hosts.to_a.each do |host|
         | 
| 64 105 | 
             
                          Host.inject host: host,
         | 
| 65 | 
            -
             | 
| 106 | 
            +
                                      machine: machine
         | 
| 66 107 | 
             
                        end
         | 
| 67 108 |  | 
| 68 109 | 
             
                        machine_cfg.provision.to_a.each do |provision|
         | 
| @@ -79,15 +120,6 @@ module VagrantPlugins | |
| 79 120 | 
             
                          AuthorizedKey.inject key: key,
         | 
| 80 121 | 
             
                                               machine: machine
         | 
| 81 122 | 
             
                        end
         | 
| 82 | 
            -
             | 
| 83 | 
            -
                        if Vagrant.has_plugin?('vagrant-group')
         | 
| 84 | 
            -
                          vc.group.groups = {} unless vc.group.groups.kind_of?(Hash)
         | 
| 85 | 
            -
             | 
| 86 | 
            -
                          machine_cfg.groups.to_a.each do |group|
         | 
| 87 | 
            -
                            vc.group.groups[group] = [] unless vc.group.groups.has_key?(group)
         | 
| 88 | 
            -
                            vc.group.groups[group] << machine_cfg.nick
         | 
| 89 | 
            -
                          end
         | 
| 90 | 
            -
                        end
         | 
| 91 123 | 
             
                      end
         | 
| 92 124 | 
             
                    end
         | 
| 93 125 | 
             
                  end
         | 
| @@ -1,7 +1,10 @@ | |
| 1 1 | 
             
            module VagrantPlugins
         | 
| 2 2 | 
             
              module Dotvm
         | 
| 3 3 | 
             
                module Injector
         | 
| 4 | 
            -
                   | 
| 4 | 
            +
                  # Injects DotVm network configuration into Vagrant
         | 
| 5 | 
            +
                  module Network
         | 
| 6 | 
            +
                    extend AbstractInjector
         | 
| 7 | 
            +
             | 
| 5 8 | 
             
                    OPTIONS = [
         | 
| 6 9 | 
             
                      :type,
         | 
| 7 10 | 
             
                      :ip,
         | 
| @@ -17,7 +20,9 @@ module VagrantPlugins | |
| 17 20 | 
             
                      :auto_config,
         | 
| 18 21 | 
             
                    ]
         | 
| 19 22 |  | 
| 20 | 
            -
                     | 
| 23 | 
            +
                    module_function
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                    def inject(net: nil, machine: nil)
         | 
| 21 26 | 
             
                      machine.vm.network net.net, **generate_hash(net, OPTIONS)
         | 
| 22 27 | 
             
                    end
         | 
| 23 28 | 
             
                  end
         | 
| @@ -1,8 +1,13 @@ | |
| 1 1 | 
             
            module VagrantPlugins
         | 
| 2 2 | 
             
              module Dotvm
         | 
| 3 3 | 
             
                module Injector
         | 
| 4 | 
            -
                   | 
| 5 | 
            -
             | 
| 4 | 
            +
                  # Injects DotVm project configuration into Vagrant
         | 
| 5 | 
            +
                  module Project
         | 
| 6 | 
            +
                    extend AbstractInjector
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                    module_function
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                    def inject(project, vc)
         | 
| 6 11 | 
             
                      project.machines.to_a.each do |machine_cfg|
         | 
| 7 12 | 
             
                        Machine.inject machine_cfg: machine_cfg, vc: vc
         | 
| 8 13 | 
             
                      end
         | 
| @@ -1,7 +1,10 @@ | |
| 1 1 | 
             
            module VagrantPlugins
         | 
| 2 2 | 
             
              module Dotvm
         | 
| 3 3 | 
             
                module Injector
         | 
| 4 | 
            -
                   | 
| 4 | 
            +
                  # Injects DotVm provision configuration into Vagrant
         | 
| 5 | 
            +
                  module Provision
         | 
| 6 | 
            +
                    extend AbstractInjector
         | 
| 7 | 
            +
             | 
| 5 8 | 
             
                    OPTIONS = [
         | 
| 6 9 | 
             
                      :path,
         | 
| 7 10 | 
             
                      :inline,
         | 
| @@ -119,7 +122,7 @@ module VagrantPlugins | |
| 119 122 | 
             
                      :delete_node,
         | 
| 120 123 | 
             
                      :delete_client,
         | 
| 121 124 | 
             
                      :recipe,
         | 
| 122 | 
            -
                      :images | 
| 125 | 
            +
                      :images
         | 
| 123 126 | 
             
                    ]
         | 
| 124 127 |  | 
| 125 128 | 
             
                    RUNS_OPTIONS = [
         | 
| @@ -128,11 +131,12 @@ module VagrantPlugins | |
| 128 131 | 
             
                      :args,
         | 
| 129 132 | 
             
                      :auto_assign_name,
         | 
| 130 133 | 
             
                      :daemonize,
         | 
| 131 | 
            -
                      :restart | 
| 134 | 
            +
                      :restart
         | 
| 132 135 | 
             
                    ]
         | 
| 133 136 |  | 
| 134 | 
            -
                     | 
| 135 | 
            -
             | 
| 137 | 
            +
                    module_function
         | 
| 138 | 
            +
             | 
| 139 | 
            +
                    def inject(provision_cfg: nil, machine: nil)
         | 
| 136 140 | 
             
                      machine.vm.provision provision_cfg.type, run: provision_cfg.run do |p|
         | 
| 137 141 | 
             
                        rewrite_options(provision_cfg, p, OPTIONS)
         | 
| 138 142 |  | 
| @@ -1,8 +1,13 @@ | |
| 1 1 | 
             
            module VagrantPlugins
         | 
| 2 2 | 
             
              module Dotvm
         | 
| 3 3 | 
             
                module Injector
         | 
| 4 | 
            -
                   | 
| 5 | 
            -
             | 
| 4 | 
            +
                  # Injects DotVm route configuration into Vagrant
         | 
| 5 | 
            +
                  module Route
         | 
| 6 | 
            +
                    extend AbstractInjector
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                    module_function
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                    def inject(route: nil, machine: nil)
         | 
| 6 11 | 
             
                      machine.vm.provision 'shell', run: 'always' do |s|
         | 
| 7 12 | 
             
                        s.path       = "#{UTILS_PATH}/setup_route.sh"
         | 
| 8 13 | 
             
                        s.args       = [route.destination, route.gateway]
         | 
| @@ -1,7 +1,10 @@ | |
| 1 1 | 
             
            module VagrantPlugins
         | 
| 2 2 | 
             
              module Dotvm
         | 
| 3 3 | 
             
                module Injector
         | 
| 4 | 
            -
                   | 
| 4 | 
            +
                  # Injects DotVm shared folder configuration into Vagrant
         | 
| 5 | 
            +
                  module SharedFolder
         | 
| 6 | 
            +
                    extend AbstractInjector
         | 
| 7 | 
            +
             | 
| 5 8 | 
             
                    OPTIONS = [
         | 
| 6 9 | 
             
                      :disabled,
         | 
| 7 10 | 
             
                      :create,
         | 
| @@ -20,11 +23,17 @@ module VagrantPlugins | |
| 20 23 | 
             
                      :rsync__verbose,
         | 
| 21 24 | 
             
                      :smb_host,
         | 
| 22 25 | 
             
                      :smb_password,
         | 
| 23 | 
            -
                      :smb_username | 
| 26 | 
            +
                      :smb_username
         | 
| 24 27 | 
             
                    ]
         | 
| 25 28 |  | 
| 26 | 
            -
                     | 
| 27 | 
            -
             | 
| 29 | 
            +
                    module_function
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                    def inject(folder: nil, machine: nil)
         | 
| 32 | 
            +
                      machine.vm.synced_folder(
         | 
| 33 | 
            +
                        folder.host,
         | 
| 34 | 
            +
                        folder.guest,
         | 
| 35 | 
            +
                        **generate_hash(folder, OPTIONS)
         | 
| 36 | 
            +
                      )
         | 
| 28 37 | 
             
                    end
         | 
| 29 38 | 
             
                  end
         | 
| 30 39 | 
             
                end
         | 
    
        data/lib/vagrant-dotvm/paths.rb
    CHANGED
    
    
    
        data/lib/vagrant-dotvm/plugin.rb
    CHANGED
    
    
| @@ -27,34 +27,36 @@ module VagrantPlugins | |
| 27 27 | 
             
                      return target if @replaced == 0
         | 
| 28 28 | 
             
                    end
         | 
| 29 29 |  | 
| 30 | 
            -
                     | 
| 30 | 
            +
                    fail 'Too deep variables relations, possible recurrence.'
         | 
| 31 31 | 
             
                  end
         | 
| 32 32 |  | 
| 33 33 | 
             
                  private
         | 
| 34 | 
            +
             | 
| 34 35 | 
             
                  def process_string(target)
         | 
| 35 36 | 
             
                    @vars.each do |k, v|
         | 
| 36 37 | 
             
                      pattern = "%#{k}%"
         | 
| 38 | 
            +
                      next unless target.include? pattern
         | 
| 37 39 |  | 
| 38 | 
            -
                       | 
| 39 | 
            -
                        @replaced += 1
         | 
| 40 | 
            +
                      @replaced += 1
         | 
| 40 41 |  | 
| 41 | 
            -
             | 
| 42 | 
            -
             | 
| 43 | 
            -
                          break unless v.is_a? String # value is no longer string, so replace cannot be performed
         | 
| 44 | 
            -
                        else
         | 
| 45 | 
            -
                          unless v.respond_to? :to_s
         | 
| 46 | 
            -
                            raise 'Non-string values cannot be joined together.'
         | 
| 47 | 
            -
                          end
         | 
| 42 | 
            +
                      if target == pattern
         | 
| 43 | 
            +
                        target = v
         | 
| 48 44 |  | 
| 49 | 
            -
             | 
| 45 | 
            +
                        # value is no longer string, so
         | 
| 46 | 
            +
                        # replace cannot be performed
         | 
| 47 | 
            +
                        break unless v.is_a? String
         | 
| 48 | 
            +
                      else
         | 
| 49 | 
            +
                        unless v.respond_to? :to_s
         | 
| 50 | 
            +
                          fail 'Non-string values cannot be joined together.'
         | 
| 50 51 | 
             
                        end
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                        target = target.gsub pattern, v.to_s
         | 
| 51 54 | 
             
                      end
         | 
| 52 55 | 
             
                    end
         | 
| 53 56 |  | 
| 54 57 | 
             
                    target
         | 
| 55 58 | 
             
                  end
         | 
| 56 59 |  | 
| 57 | 
            -
                  private
         | 
| 58 60 | 
             
                  def _replace_vars(target)
         | 
| 59 61 | 
             
                    case target
         | 
| 60 62 | 
             
                    when Hash
         | 
    
        data/vagrant-dotvm.gemspec
    CHANGED
    
    | @@ -4,19 +4,19 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) | |
| 4 4 | 
             
            require 'vagrant-dotvm/version'
         | 
| 5 5 |  | 
| 6 6 | 
             
            Gem::Specification.new do |spec|
         | 
| 7 | 
            -
              spec.name          =  | 
| 7 | 
            +
              spec.name          = 'vagrant-dotvm'
         | 
| 8 8 | 
             
              spec.version       = VagrantPlugins::Dotvm::VERSION
         | 
| 9 | 
            -
              spec.authors       = [ | 
| 10 | 
            -
              spec.email         = [ | 
| 11 | 
            -
              spec.summary       =  | 
| 12 | 
            -
              spec.homepage      =  | 
| 13 | 
            -
              spec.license       =  | 
| 9 | 
            +
              spec.authors       = ['Krzysztof Magosa']
         | 
| 10 | 
            +
              spec.email         = ['krzysztof@magosa.pl']
         | 
| 11 | 
            +
              spec.summary       = 'Easy YAML based multi machine config approach for Vagrant.'
         | 
| 12 | 
            +
              spec.homepage      = 'http://github.com/vagrant-dotvm/vagrant-dotvm'
         | 
| 13 | 
            +
              spec.license       = 'MIT'
         | 
| 14 14 |  | 
| 15 15 | 
             
              spec.files         = `git ls-files -z`.split("\x0")
         | 
| 16 16 | 
             
              spec.executables   = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
         | 
| 17 17 | 
             
              spec.test_files    = spec.files.grep(%r{^(test|spec|features)/})
         | 
| 18 | 
            -
              spec.require_paths = [ | 
| 18 | 
            +
              spec.require_paths = ['lib']
         | 
| 19 19 |  | 
| 20 | 
            -
              spec.add_development_dependency  | 
| 21 | 
            -
              spec.add_development_dependency  | 
| 20 | 
            +
              spec.add_development_dependency 'bundler', '~> 1.7'
         | 
| 21 | 
            +
              spec.add_development_dependency 'rake', '~> 10.0'
         | 
| 22 22 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: vagrant-dotvm
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.35.1.pre
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Krzysztof Magosa
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015- | 
| 11 | 
            +
            date: 2015-09-20 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| @@ -47,6 +47,7 @@ extra_rdoc_files: [] | |
| 47 47 | 
             
            files:
         | 
| 48 48 | 
             
            - .gitignore
         | 
| 49 49 | 
             
            - CHANGELOG.md
         | 
| 50 | 
            +
            - CONTRIBUTING.md
         | 
| 50 51 | 
             
            - Gemfile
         | 
| 51 52 | 
             
            - LICENSE.txt
         | 
| 52 53 | 
             
            - README.md
         | 
| @@ -102,12 +103,12 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 102 103 | 
             
                  version: '0'
         | 
| 103 104 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 104 105 | 
             
              requirements:
         | 
| 105 | 
            -
              - - ' | 
| 106 | 
            +
              - - '>'
         | 
| 106 107 | 
             
                - !ruby/object:Gem::Version
         | 
| 107 | 
            -
                  version:  | 
| 108 | 
            +
                  version: 1.3.1
         | 
| 108 109 | 
             
            requirements: []
         | 
| 109 110 | 
             
            rubyforge_project: 
         | 
| 110 | 
            -
            rubygems_version: 2.0.14
         | 
| 111 | 
            +
            rubygems_version: 2.0.14.1
         | 
| 111 112 | 
             
            signing_key: 
         | 
| 112 113 | 
             
            specification_version: 4
         | 
| 113 114 | 
             
            summary: Easy YAML based multi machine config approach for Vagrant.
         |