X-Git-Url: https://pwan.org/git/?p=vagrant-dotfiles.git;a=blobdiff_plain;f=lib%2Fcopy_my_conf.rb;fp=lib%2Fcopy_my_conf.rb;h=c10b8143ff8f6ef60b6d18043537abf9fc34645b;hp=27d4bbf110cfdfc63bcad2986d9c93cb78792fa4;hb=2a7fb02fbf510e8475a65ed5a76b879aa4cb841e;hpb=98cb869941896b43b33ed5786837911c267c772f diff --git a/lib/copy_my_conf.rb b/lib/copy_my_conf.rb index 27d4bbf..c10b814 100644 --- a/lib/copy_my_conf.rb +++ b/lib/copy_my_conf.rb @@ -1,73 +1,71 @@ -class CopyMyConf < Vagrant::Provisioners::Base +require 'boot' +module Vagrant + module Provisioners + class CopyMyConf < Base - def prepare - prepare_vim if config.vim - prepare_git if config.git - prepare_ssh if config.ssh - end + 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 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 + 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 -private + def tmp_root + "/tmp/copy_my_conf" + end - 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_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_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` - end - env[:vm].config.vm.share_folder("vim", "#{tmp_root}/vim/", "#{tmp_root}/vim") - end + def prepare_vim + `mkdir -p #{tmp_root}/vim` + ["~/.vimrc", "~/.vim"].each do |file| + `cp -r #{file} #{tmp_root}/vim` + 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_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_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 + 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 - def user_home - config.user_home || "/home/vagrant" + def user_home + config.user_home || "/home/vagrant" + end + end end end