copy_my_conf 0.0.1 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/lib/copy_my_conf.rb CHANGED
@@ -1,73 +1,16 @@
1
- class CopyMyConf < Vagrant::Provisioners::Base
1
+ module CopyMyConf
2
+ class Plugin < Vagrant.plugin("2")
3
+ name "copy_my_conf"
2
4
 
3
- def prepare
4
- prepare_vim if config.vim
5
- prepare_git if config.git
6
- prepare_ssh if config.ssh
7
- end
8
-
9
- def provision!
10
- channel = env[:vm].channel
11
- provision_ssh(channel) if config.ssh
12
- provision_vim(channel) if config.vim
13
- provision_git(channel) if config.git
14
- end
15
-
16
- def self.config_class
17
- Config
18
- end
19
-
20
- class Config < Vagrant::Config::Base
21
- attr_accessor :ssh
22
- attr_accessor :vim
23
- attr_accessor :git
24
- attr_accessor :user_home
25
- end
26
-
27
- private
28
-
29
- def tmp_root
30
- "/tmp/copy_my_conf"
31
- end
32
-
33
- def prepare_ssh
34
- env[:vm].config.vm.share_folder("ssh", "#{tmp_root}/ssh", "~/.ssh")
35
- end
36
-
37
- def prepare_git
38
- `mkdir -p #{tmp_root}/git`
39
- `cp ~/.gitconfig #{tmp_root}/git/`
40
- env[:vm].config.vm.share_folder("git", "#{tmp_root}/git/", "#{tmp_root}/git")
41
- end
42
-
43
- def prepare_vim
44
- `mkdir -p #{tmp_root}/vim`
45
- ["~/.vimrc", "~/.vim"].each do |file|
46
- `cp -r #{file} #{tmp_root}/vim`
5
+ config(:copy_my_conf, :provisioner) do
6
+ require File.expand_path('../copy_my_conf/config', __FILE__)
7
+ Config
47
8
  end
48
- env[:vm].config.vm.share_folder("vim", "#{tmp_root}/vim/", "#{tmp_root}/vim")
49
- end
50
9
 
51
- def provision_git(channel)
52
- puts "Copying your gitconfig"
53
- channel.execute("cp #{tmp_root}/git/.gitconfig ~/")
54
- end
55
-
56
- def provision_vim(channel)
57
- puts "Copying your vim configuratios"
58
- channel.execute("rm -rf #{user_home}/.vim*")
59
- channel.execute("cp -r #{tmp_root}/vim/.??* ~/")
60
- end
61
-
62
- def provision_ssh(channel)
63
- puts "Copying your ssh keys and config"
64
- channel.sudo("mkdir -p #{tmp_root}/cached && chown -R vagrant #{tmp_root}/cached")
65
- channel.execute("[[ -f #{user_home}/.ssh/authorized_keys ]] && mv #{user_home}/.ssh/authorized_keys #{tmp_root}/cached")
66
- channel.execute("cp #{tmp_root}/ssh/* #{user_home}/.ssh")
67
- channel.execute("cat #{tmp_root}/cached/authorized_keys >> #{user_home}/.ssh/authorized_keys") # So that `vagrant ssh` doesn't ask for password
68
- end
10
+ provisioner :copy_my_conf do
11
+ require File.expand_path('../copy_my_conf/provisioner', __FILE__)
12
+ Provisioner
13
+ end
69
14
 
70
- def user_home
71
- config.user_home || "/home/vagrant"
72
15
  end
73
16
  end
@@ -0,0 +1,26 @@
1
+ require_relative "git"
2
+ require_relative "ssh"
3
+ require_relative "vim"
4
+
5
+ module CopyMyConf
6
+ class Config < Vagrant.plugin("2", :config)
7
+ attr_accessor :user_home
8
+
9
+ def git
10
+ @git ||= CopyMyConf::Git.new
11
+ end
12
+
13
+ def vim
14
+ @vim ||= CopyMyConf::Vim.new
15
+ end
16
+
17
+ def ssh
18
+ @ssh ||=CopyMyConf::Ssh.new
19
+ end
20
+
21
+ def all_enabled_attributes
22
+ [@ssh, @vim, @git].compact
23
+ end
24
+ end
25
+ end
26
+
@@ -0,0 +1,14 @@
1
+ module CopyMyConf
2
+ class Git
3
+ def prepare vm, tmp_root
4
+ `mkdir -p #{tmp_root}/git`
5
+ `cp ~/.gitconfig #{tmp_root}/git/`
6
+ vm.synced_folder("#{tmp_root}/git/", "#{tmp_root}/git", :id => "git")
7
+ end
8
+
9
+ def provision channel, user_home, tmp_root
10
+ puts "Copying your gitconfig"
11
+ channel.execute("cp #{tmp_root}/git/.gitconfig #{user_home}")
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,35 @@
1
+ module CopyMyConf
2
+ class Provisioner < Vagrant.plugin("2", :provisioner)
3
+
4
+ def configure(root_config)
5
+ `rm -rf /tmp/copy_my_conf`
6
+ @to_be_copied = []
7
+ config.all_enabled_attributes.each do |conf|
8
+ @to_be_copied << conf
9
+ conf.prepare root_config.vm, tmp_root
10
+ end
11
+ end
12
+
13
+ def provision
14
+ channel = @machine.communicate
15
+ @to_be_copied.each do |conf|
16
+ conf.provision channel, user_home, tmp_root
17
+ end
18
+ end
19
+
20
+ def self.config_class
21
+ Config
22
+ end
23
+
24
+ private
25
+
26
+ def tmp_root
27
+ "/tmp/copy_my_conf"
28
+ end
29
+
30
+ def user_home
31
+ config.user_home || "/home/vagrant"
32
+ end
33
+ end
34
+ end
35
+
@@ -0,0 +1,16 @@
1
+ module CopyMyConf
2
+ class Ssh
3
+ def prepare vm, tmp_root
4
+ vm.synced_folder("#{ENV['HOME']}/.ssh", "#{tmp_root}/ssh",:id => "ssh")
5
+ end
6
+
7
+ def provision channel, user_home, tmp_root
8
+ puts "Copying your ssh keys and config"
9
+ channel.sudo("mkdir -p #{tmp_root}/cached && chown -R vagrant #{tmp_root}/cached")
10
+ channel.execute("[[ -f #{user_home}/.ssh/authorized_keys ]] && mv #{user_home}/.ssh/authorized_keys #{tmp_root}/cached")
11
+ channel.execute("cp #{tmp_root}/ssh/* #{user_home}/.ssh")
12
+ channel.execute("cat #{tmp_root}/cached/authorized_keys >> #{user_home}/.ssh/authorized_keys") # So that `vagrant ssh` doesn't ask for password
13
+ end
14
+
15
+ end
16
+ end
@@ -0,0 +1,17 @@
1
+ module CopyMyConf
2
+ class Vim
3
+ def prepare vm, tmp_root
4
+ `mkdir -p #{tmp_root}/vim`
5
+ ["~/.vimrc", "~/.vim"].each do |file|
6
+ `cp -r #{file} #{tmp_root}/vim`
7
+ end
8
+ vm.synced_folder("#{tmp_root}/vim", "#{tmp_root}/vim", :id => "vim")
9
+ end
10
+
11
+ def provision channel, user_home, tmp_root
12
+ puts "Copying your vim configuratios"
13
+ channel.execute("rm -rf #{user_home}/.vim*")
14
+ channel.execute("cp -r #{tmp_root}/vim/.??* ~/")
15
+ end
16
+ end
17
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: copy_my_conf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-08 00:00:00.000000000 Z
12
+ date: 2013-07-06 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Copy your configurations easily into vagrant box
15
15
  email: itsakshaymankar@gmail.com
@@ -17,6 +17,11 @@ executables: []
17
17
  extensions: []
18
18
  extra_rdoc_files: []
19
19
  files:
20
+ - lib/copy_my_conf/config.rb
21
+ - lib/copy_my_conf/git.rb
22
+ - lib/copy_my_conf/provisioner.rb
23
+ - lib/copy_my_conf/ssh.rb
24
+ - lib/copy_my_conf/vim.rb
20
25
  - lib/copy_my_conf.rb
21
26
  homepage: http://github.com/akshaymankar/copy_my_conf
22
27
  licenses: []
@@ -38,7 +43,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
38
43
  version: '0'
39
44
  requirements: []
40
45
  rubyforge_project:
41
- rubygems_version: 1.8.24
46
+ rubygems_version: 1.8.25
42
47
  signing_key:
43
48
  specification_version: 3
44
49
  summary: Vagrant Provisioner to copy your configuration files into vagrant box