vagrant-unison 0.0.7 → 0.0.8
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.
- data/lib/vagrant-unison/command.rb +31 -51
- data/lib/vagrant-unison/version.rb +1 -1
- metadata +2 -2
| @@ -15,38 +15,48 @@ module VagrantPlugins | |
| 15 15 |  | 
| 16 16 | 
             
                      ssh_info = machine.ssh_info
         | 
| 17 17 |  | 
| 18 | 
            -
                      # Create  | 
| 18 | 
            +
                      # Create empty guestpath
         | 
| 19 | 
            +
                      machine.communicate.sudo("rm -rf '#{guestpath}'")
         | 
| 19 20 | 
             
                      machine.communicate.sudo("mkdir -p '#{guestpath}'")
         | 
| 20 21 | 
             
                      machine.communicate.sudo("chown #{ssh_info[:username]} '#{guestpath}'")
         | 
| 21 22 |  | 
| 22 | 
            -
                      #copy up everything at the beginning
         | 
| 23 23 | 
             
                      Net::SCP.start(ssh_info[:host], ssh_info[:username], 
         | 
| 24 24 | 
             
                                    { :port => ssh_info[:port], 
         | 
| 25 | 
            -
                                      :keys => [ ssh_info[:private_key_path],
         | 
| 26 | 
            -
                                      :paranoid => false  | 
| 27 | 
            -
             | 
| 28 | 
            -
             | 
| 25 | 
            +
                                      :keys => [ ssh_info[:private_key_path] ],
         | 
| 26 | 
            +
                                      :paranoid => false }) do |scp|
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                        #copy up everything at the beginning
         | 
| 29 | 
            +
                        @env.ui.info "Uploading {host}::#{hostpath} to {guest}::#{guestpath}"
         | 
| 30 | 
            +
                        Dir.glob("#{hostpath}**/*", File::FNM_DOTMATCH).each do |file|
         | 
| 31 | 
            +
                          remote_file = file.gsub(hostpath, guestpath)
         | 
| 32 | 
            +
                          if File.stat(file).file?  
         | 
| 33 | 
            +
                            scp.upload!( file, remote_file ) do |ch, name, sent, total|
         | 
| 34 | 
            +
                              @env.ui.info "\r#{name}: #{(sent.to_f * 100 / total.to_f).to_i}%"
         | 
| 35 | 
            +
                            end
         | 
| 36 | 
            +
                          end
         | 
| 37 | 
            +
                          if File.directory?(file)
         | 
| 38 | 
            +
                            machine.communicate.sudo("mkdir -p '#{remote_file}'")
         | 
| 39 | 
            +
                            machine.communicate.sudo("chown #{ssh_info[:username]} '#{remote_file}'")
         | 
| 40 | 
            +
                          end
         | 
| 41 | 
            +
                        end
         | 
| 29 42 |  | 
| 30 | 
            -
             | 
| 43 | 
            +
                        @env.ui.info "Watching {host}::#{hostpath} for changes..."
         | 
| 31 44 |  | 
| 32 | 
            -
             | 
| 33 | 
            -
             | 
| 34 | 
            -
                                    { :port => ssh_info[:port], 
         | 
| 35 | 
            -
                                      :keys => [ ssh_info[:private_key_path],
         | 
| 36 | 
            -
                                      :paranoid => false ] }) do |scp|
         | 
| 37 | 
            -
                          (modified_list << added_list).flatten.each do |file|
         | 
| 45 | 
            +
                        Listen.to(hostpath) do |modified, added, removed|
         | 
| 46 | 
            +
                          (modified << added).flatten.each do |file|
         | 
| 38 47 | 
             
                            remote_file = file.gsub(hostpath, guestpath)
         | 
| 39 | 
            -
                            @env.ui.info "Uploading  | 
| 40 | 
            -
                            scp.upload! file, remote_file
         | 
| 48 | 
            +
                            @env.ui.info "Uploading {host}::#{file} to {guest VM}::#{remote_file}"
         | 
| 49 | 
            +
                            scp.upload!( file, remote_file ) do |ch, name, sent, total|
         | 
| 50 | 
            +
                              @env.ui.info "\r#{name}: #{(sent.to_f * 100 / total.to_f).to_i}%"
         | 
| 51 | 
            +
                            end
         | 
| 41 52 | 
             
                          end
         | 
| 42 53 | 
             
                          removed.each do |file|
         | 
| 43 54 | 
             
                            remote_file = file.gsub(hostpath, guestpath)
         | 
| 44 | 
            -
                            @env.ui.info "Deleting  | 
| 55 | 
            +
                            @env.ui.info "Deleting {guest VM}::#{remote_file}"
         | 
| 45 56 | 
             
                            machine.communicate.sudo("rm #{remote_file}")
         | 
| 46 57 | 
             
                          end
         | 
| 47 | 
            -
                        end
         | 
| 48 | 
            -
             | 
| 49 | 
            -
                      end
         | 
| 58 | 
            +
                        end # Listen
         | 
| 59 | 
            +
                      end # Net::SCP.start
         | 
| 50 60 |  | 
| 51 61 | 
             
                    end
         | 
| 52 62 |  | 
| @@ -57,42 +67,12 @@ module VagrantPlugins | |
| 57 67 | 
             
                      hostpath  = File.expand_path(machine.config.sync.host_folder, @env.root_path)
         | 
| 58 68 | 
             
                      guestpath = machine.config.sync.guest_folder
         | 
| 59 69 |  | 
| 60 | 
            -
                      # Make sure there is a trailing slash  | 
| 61 | 
            -
                      # avoid creating an additional directory with rsync
         | 
| 70 | 
            +
                      # Make sure there is a trailing slash both paths
         | 
| 62 71 | 
             
                      hostpath = "#{hostpath}/" if hostpath !~ /\/$/
         | 
| 72 | 
            +
                      guestpath = "#{guestpath}/" if guestpath !~ /\/$/
         | 
| 63 73 |  | 
| 64 74 | 
             
                      [hostpath, guestpath]
         | 
| 65 75 | 
             
                  end
         | 
| 66 | 
            -
             | 
| 67 | 
            -
                  def trigger_unison_sync(machine)
         | 
| 68 | 
            -
                    hostpath, guestpath = init_paths machine
         | 
| 69 | 
            -
             | 
| 70 | 
            -
                    @env.ui.info "Unisoning changes from {host}::#{hostpath} --> {guest VM}::#{guestpath}"
         | 
| 71 | 
            -
             | 
| 72 | 
            -
                    ssh_info = machine.ssh_info
         | 
| 73 | 
            -
             | 
| 74 | 
            -
                    # Create the guest path
         | 
| 75 | 
            -
                    machine.communicate.sudo("mkdir -p '#{guestpath}'")
         | 
| 76 | 
            -
                    machine.communicate.sudo("chown #{ssh_info[:username]} '#{guestpath}'")
         | 
| 77 | 
            -
             | 
| 78 | 
            -
                    # Unison over to the guest path using the SSH info
         | 
| 79 | 
            -
                    command = [
         | 
| 80 | 
            -
                      "unison", "-batch",
         | 
| 81 | 
            -
                      "-ignore=Name {.git*,.vagrant/,*.DS_Store}",
         | 
| 82 | 
            -
                      "-sshargs", "-p #{ssh_info[:port]} -o StrictHostKeyChecking=no -i #{ssh_info[:private_key_path]}",
         | 
| 83 | 
            -
                      hostpath,
         | 
| 84 | 
            -
                      "ssh://#{ssh_info[:username]}@#{ssh_info[:host]}/#{guestpath}"
         | 
| 85 | 
            -
                     ]
         | 
| 86 | 
            -
             | 
| 87 | 
            -
                    r = Vagrant::Util::Subprocess.execute(*command)
         | 
| 88 | 
            -
                    if r.exit_code != 0
         | 
| 89 | 
            -
                      raise Vagrant::Errors::UnisonError,
         | 
| 90 | 
            -
                        :command => command.inspect,
         | 
| 91 | 
            -
                        :guestpath => guestpath,
         | 
| 92 | 
            -
                        :hostpath => hostpath,
         | 
| 93 | 
            -
                        :stderr => r.stderr
         | 
| 94 | 
            -
                    end
         | 
| 95 | 
            -
                  end
         | 
| 96 76 |  | 
| 97 77 | 
             
                end
         | 
| 98 78 | 
             
              end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: vagrant-unison
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.8
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -158,7 +158,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 158 158 | 
             
                  version: '0'
         | 
| 159 159 | 
             
                  segments:
         | 
| 160 160 | 
             
                  - 0
         | 
| 161 | 
            -
                  hash:  | 
| 161 | 
            +
                  hash: 3608198865268606227
         | 
| 162 162 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 163 163 | 
             
              none: false
         | 
| 164 164 | 
             
              requirements:
         |