itamae-plugin-recipe-anyenv 0.1.12 → 0.2.0

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.
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