Now supporting vagrant 1.2. Simplified config class. SSH not working
[vagrant-dotfiles.git] / lib / copy_my_conf.rb
index 27d4bbf..fa7fec1 100644 (file)
@@ -1,73 +1,16 @@
-class CopyMyConf < Vagrant::Provisioners::Base
+module CopyMyConf
+  class Plugin < Vagrant.plugin("2")
+    name "copy_my_conf"
 
-  def prepare
-    prepare_vim if config.vim
-    prepare_git if config.git
-    prepare_ssh if config.ssh
-  end
-
-  def provision!
-    channel = env[:vm].channel
-    provision_ssh(channel) if config.ssh
-    provision_vim(channel) if config.vim
-    provision_git(channel) if config.git
-  end
-
-  def self.config_class
-    Config
-  end
-
-  class Config < Vagrant::Config::Base
-    attr_accessor :ssh
-    attr_accessor :vim
-    attr_accessor :git
-    attr_accessor :user_home
-  end
-
-private
-
-  def tmp_root
-    "/tmp/copy_my_conf"
-  end
-
-  def prepare_ssh
-    env[:vm].config.vm.share_folder("ssh", "#{tmp_root}/ssh", "~/.ssh")
-  end
-
-  def prepare_git
-    `mkdir -p #{tmp_root}/git`
-    `cp ~/.gitconfig #{tmp_root}/git/`
-    env[:vm].config.vm.share_folder("git", "#{tmp_root}/git/", "#{tmp_root}/git")
-  end
-
-  def prepare_vim
-    `mkdir -p #{tmp_root}/vim`
-    ["~/.vimrc", "~/.vim"].each do |file|
-      `cp -r #{file} #{tmp_root}/vim`
+    config(:copy_my_conf, :provisioner) do
+      require File.expand_path('../copy_my_conf/config', __FILE__)
+      Config
     end
-    env[:vm].config.vm.share_folder("vim", "#{tmp_root}/vim/", "#{tmp_root}/vim")
-  end
 
-  def provision_git(channel)
-    puts "Copying your gitconfig"
-    channel.execute("cp #{tmp_root}/git/.gitconfig ~/")
-  end
-
-  def provision_vim(channel)
-    puts "Copying your vim configuratios"
-    channel.execute("rm -rf #{user_home}/.vim*")
-    channel.execute("cp -r #{tmp_root}/vim/.??* ~/")
-  end
-
-  def provision_ssh(channel)
-    puts "Copying your ssh keys and config"
-    channel.sudo("mkdir -p #{tmp_root}/cached && chown -R vagrant #{tmp_root}/cached")
-    channel.execute("[[ -f #{user_home}/.ssh/authorized_keys ]] && mv #{user_home}/.ssh/authorized_keys #{tmp_root}/cached")
-    channel.execute("cp #{tmp_root}/ssh/* #{user_home}/.ssh")
-    channel.execute("cat #{tmp_root}/cached/authorized_keys >> #{user_home}/.ssh/authorized_keys") # So that `vagrant ssh` doesn't ask for password
-  end
+    provisioner :copy_my_conf do
+      require File.expand_path('../copy_my_conf/provisioner', __FILE__)
+      Provisioner
+    end
 
-  def user_home
-    config.user_home || "/home/vagrant"
   end
 end