itamae-plugin-recipe-anyenv 0.1.12 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a86e3927e17ead7fb22ef23c8f6cdedf4e748ed4
4
- data.tar.gz: 3775ae0f36b664f09b800cf011a86449445fba6f
3
+ metadata.gz: eeec31ea1aacd30ed4ea2ebc1d8891466b05fe63
4
+ data.tar.gz: 614dfb81cb60ffeb4da94cf72f629d1e962440ef
5
5
  SHA512:
6
- metadata.gz: b35c46d7e592b413f5fd7891cd06cdb482fc3bffb8e411072f86f1744e05c851de7ff28432f1ad4051e6482579454a6b4240a996da574ee2f36d0efa4d09f5a3
7
- data.tar.gz: f77f804b065df5950e1b12606b90844b74f1dad4371941a41aaaa4db201b588a63c2505069fa19ee4263ad1974ad84e2bd92855b2e6ffa4525757f291900db67
6
+ metadata.gz: 4d61a29f0dde20cb0476aa532802c00058a71101a44497c51629356431389d8f4d0f2558b5c7b4017be6f16911f02c673fcbb9480e23789f490c983535891097
7
+ data.tar.gz: 4bd51fd6393cef68ed8a5bf5e12303338cb4764bfa507976dadd73e3ef1eb916496278bc1a7084ba4244abd2d61d49a4815301b2af2d52c7dba71c5c1c75d780
data/README.md CHANGED
@@ -20,17 +20,17 @@ Or install it yourself as:
20
20
  $ gem install itamae-plugin-recipe-anyenv
21
21
 
22
22
  ## Usage
23
-
23
+ ### System wide
24
24
  System wide anyenv installation
25
25
 
26
- ### Recipe
26
+ #### Recipe
27
27
 
28
28
  ```ruby
29
29
  # your recipe
30
30
  include_recipe "anyenv::system"
31
31
  ```
32
32
 
33
- ### Node
33
+ #### Node
34
34
 
35
35
  Use this with `itamae -y node.yml`
36
36
 
@@ -47,7 +47,7 @@ anyenv:
47
47
  - 1.0.5
48
48
  ```
49
49
 
50
- ### .bashrc
50
+ #### .bashrc
51
51
 
52
52
  Recommend to append this to .bashrc in your server.
53
53
 
@@ -57,6 +57,72 @@ export PATH="${ANYENV_ROOT}/.anyenv/bin:$PATH"
57
57
  if which anyenv > /dev/null; then eval "$(anyenv init -)"; fi
58
58
  ```
59
59
 
60
+ ### Users
61
+ #### Recipe
62
+ ```ruby
63
+ # your recipe
64
+ include_recipe "anyenv::users"
65
+ ```
66
+
67
+ #### Node
68
+ Use this with `itamae -y node.yml`
69
+
70
+ ```yml
71
+ anyenv:
72
+ users:
73
+ taro:
74
+ install_envs:
75
+ - rbenv
76
+ - exenv
77
+ install_versions:
78
+ - rbenv:
79
+ - 2.2.2
80
+ - exenv:
81
+ - 1.0.5
82
+ jiro:
83
+ anyenv_root: /opt/jiro/.anyenv
84
+ install_envs:
85
+ - ndenv
86
+ install_versions:
87
+ - ndenv:
88
+ - v0.12.7
89
+ ```
90
+
91
+ You can configure default attributes:
92
+
93
+ ```yml
94
+ anyenv:
95
+ # default attributes
96
+ install_envs:
97
+ - rbenv
98
+ - exenv
99
+ install_versions:
100
+ - rbenv:
101
+ - 2.2.2
102
+ - exenv:
103
+ - 1.0.5
104
+
105
+ # users configurations
106
+ users:
107
+ taro: {}
108
+ jiro:
109
+ install_versions:
110
+ - rbenv:
111
+ - 2.2.3
112
+ ```
113
+
114
+ In default, use `/home/username/.anyenv` as anyenv root directory.
115
+
116
+ #### .bashrc
117
+
118
+ Recommend to append this to .bashrc in your server.
119
+
120
+ ```bash
121
+ export ANYENV_ROOT="/home/username/.anyenv"
122
+ export PATH="${ANYENV_ROOT}/bin:$PATH"
123
+ if which anyenv > /dev/null; then eval "$(anyenv init -)"; fi
124
+ ```
125
+
60
126
  ## License
61
127
 
62
128
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
@@ -1,44 +1,5 @@
1
- package "git"
2
-
3
- scheme = "git"
4
- scheme = node[:anyenv][:scheme] if node[:anyenv][:scheme]
5
-
6
1
  require 'itamae/plugin/recipe/anyenv'
7
2
 
8
- git anyenv_root do
9
- repository "#{scheme}://github.com/riywo/anyenv.git"
10
- end
11
-
12
- git "#{anyenv_root}/plugins/anyenv-update" do
13
- repository "#{scheme}://github.com/znz/anyenv-update.git"
14
- end
15
-
16
- directory "#{anyenv_root}/envs"
17
-
18
- node[:anyenv][:install_envs].each do |env|
19
- execute "install #{env}" do
20
- command "#{anyenv_init} anyenv install #{env}"
21
- not_if "type #{env}"
22
- end
23
- end
24
-
25
- node[:anyenv][:install_versions].each do |envs|
26
- envs.each do |name, vers|
27
- vers.each do |ver|
28
- execute "#{name} install #{ver}" do
29
- command "#{name} install #{ver}"
30
- not_if "#{anyenv_init} #{name} versions | grep #{ver}"
31
- end
32
- end
33
- end
34
- end
3
+ package "git"
35
4
 
36
- node[:anyenv][:install_versions].each do |envs|
37
- envs.each do |name, vers|
38
- execute "#{name} global #{vers.first}" do
39
- command "#{name} global #{vers.first}"
40
- command "#{name} rehash"
41
- not_if "#{anyenv_init} #{name} global | grep #{vers.first}"
42
- end
43
- end
44
- end
5
+ run(node[:anyenv])
@@ -0,0 +1,8 @@
1
+ require 'itamae/plugin/recipe/anyenv'
2
+
3
+ package "git"
4
+
5
+ node[:anyenv][:users].each do |username, user_attributes|
6
+ attributes = node[:anyenv].merge(user_attributes)
7
+ run(attributes, username)
8
+ end
@@ -2,7 +2,7 @@ module Itamae
2
2
  module Plugin
3
3
  module Recipe
4
4
  module Anyenv
5
- VERSION = "0.1.12"
5
+ VERSION = "0.2.0"
6
6
  end
7
7
  end
8
8
  end
@@ -1,16 +1,82 @@
1
1
  DEFAULT_RBENV_ROOT = "/usr/local/anyenv".freeze
2
2
 
3
- def anyenv_root
3
+ def scheme
4
+ scheme ||= node[:anyenv][:scheme] || "git"
5
+ end
6
+
7
+ def anyenv_root(username)
8
+ return anyenv_system_root if username.nil?
9
+ anyenv_user_root(username)
10
+ end
11
+
12
+ def anyenv_system_root
4
13
  if node[:anyenv] && node[:anyenv][:anyenv_root]
5
14
  return node[:anyenv][:anyenv_root]
6
15
  end
7
16
  DEFAULT_RBENV_ROOT
8
17
  end
9
18
 
10
- def anyenv_init
11
- <<-EOS
12
- export ANYENV_ROOT=#{anyenv_root}
13
- export PATH="#{anyenv_root}/bin:${PATH}"
14
- eval "$(anyenv init -)"
15
- EOS
19
+ def anyenv_user_root(username)
20
+ if node[:anyenv][:users][username].key?(:anyenv_root)
21
+ return node[:anyenv][:users][username][:anyenv_root]
22
+ end
23
+ case node[:platform]
24
+ when "darwin"
25
+ "/Users/#{username}/.anyenv"
26
+ else
27
+ "/home/#{username}/.anyenv"
28
+ end
29
+ end
30
+
31
+ def anyenv_init(root_path)
32
+ init_str = %[export ANYENV_ROOT="#{root_path}"; ]
33
+ init_str << %[export PATH="#{root_path}/bin:${PATH}"; ]
34
+ init_str << %[eval "$(anyenv init -)"; ]
35
+ init_str
36
+ end
37
+
38
+ def run(attributes, username = nil)
39
+ root_path = anyenv_root(username)
40
+ init_cmd = anyenv_init(root_path)
41
+
42
+ git root_path do
43
+ user username if username
44
+ repository "#{scheme}://github.com/riywo/anyenv.git"
45
+ end
46
+
47
+ git "#{root_path}/plugins/anyenv-update" do
48
+ user username
49
+ repository "#{scheme}://github.com/znz/anyenv-update.git"
50
+ end
51
+
52
+ attributes[:install_envs].each do |env|
53
+ execute "install #{env}" do
54
+ user username if username
55
+ command "#{init_cmd} anyenv install #{env}"
56
+ not_if "#{init_cmd} type #{env}"
57
+ end
58
+ end
59
+
60
+ attributes[:install_versions].each do |envs|
61
+ envs.each do |name, vers|
62
+ vers.each do |ver|
63
+ execute "#{name} install #{ver}" do
64
+ user username if username
65
+ command "#{init_cmd} #{name} install #{ver}"
66
+ not_if "#{init_cmd} #{name} versions | grep #{ver}"
67
+ end
68
+ end
69
+ end
70
+ end
71
+
72
+ attributes[:install_versions].each do |envs|
73
+ envs.each do |name, vers|
74
+ execute "#{name} global #{vers.first}" do
75
+ user username if username
76
+ command "#{init_cmd} #{name} global #{vers.first}; " \
77
+ "#{init_cmd} #{name} rehash"
78
+ not_if "#{init_cmd} #{name} global | grep #{vers.first}"
79
+ end
80
+ end
81
+ end
16
82
  end
metadata CHANGED
@@ -1,69 +1,69 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: itamae-plugin-recipe-anyenv
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.12
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Surume
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-08-16 00:00:00.000000000 Z
11
+ date: 2015-09-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: itamae
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: 1.4.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: 1.4.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: '1.10'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.10'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
47
  version: '10.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ~>
53
53
  - !ruby/object:Gem::Version
54
54
  version: '10.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  description: Itamae plugin to install anyenv
@@ -73,9 +73,9 @@ executables: []
73
73
  extensions: []
74
74
  extra_rdoc_files: []
75
75
  files:
76
- - ".gitignore"
77
- - ".rspec"
78
- - ".travis.yml"
76
+ - .gitignore
77
+ - .rspec
78
+ - .travis.yml
79
79
  - CODE_OF_CONDUCT.md
80
80
  - Gemfile
81
81
  - LICENSE.txt
@@ -87,6 +87,7 @@ files:
87
87
  - lib/itamae-plugin-recipe-anyenv.rb
88
88
  - lib/itamae/plugin/recipe/anyenv.rb
89
89
  - lib/itamae/plugin/recipe/anyenv/system.rb
90
+ - lib/itamae/plugin/recipe/anyenv/users.rb
90
91
  - lib/itamae/plugin/recipe/anyenv/version.rb
91
92
  homepage: https://github.com/Surume/itamae-plugin-recipe-anyenv
92
93
  licenses:
@@ -98,17 +99,17 @@ require_paths:
98
99
  - lib
99
100
  required_ruby_version: !ruby/object:Gem::Requirement
100
101
  requirements:
101
- - - ">="
102
+ - - '>='
102
103
  - !ruby/object:Gem::Version
103
104
  version: '0'
104
105
  required_rubygems_version: !ruby/object:Gem::Requirement
105
106
  requirements:
106
- - - ">="
107
+ - - '>='
107
108
  - !ruby/object:Gem::Version
108
109
  version: '0'
109
110
  requirements: []
110
111
  rubyforge_project:
111
- rubygems_version: 2.4.5
112
+ rubygems_version: 2.0.14
112
113
  signing_key:
113
114
  specification_version: 4
114
115
  summary: Itamae plugin to install anyenv