serverkit-rbenv 0.1.1 → 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: eaaf03cdc48dc4e6cf2156fd08517aa7f4cf827a
4
- data.tar.gz: f4dcfd39ba6f51c1083ea6608548e313f114a071
3
+ metadata.gz: 1ac1ebbe4974fb298789d268f2fb0c8bfd3cdb58
4
+ data.tar.gz: 0068580d3d8abf4e6b7b3a27fb5319915c7ecc9a
5
5
  SHA512:
6
- metadata.gz: 8acdd50865747a11be42bd3da61a4dc51815e0c28b370d06c5556e7b2eb1fb624f994df6afdd20f452849b8694bf06b85b0e379f3a235e35affb8cab9e7a2128
7
- data.tar.gz: b4db4f8e864bcfa531baea9c0e156d3a00d738e3b8837d6d8f2acbcd33571f5929b118ab7415804d23e9d356d406aca284e375a337afa061fe7b51b6c7832d09
6
+ metadata.gz: f2a96c9b4d97eff91bd48f02f1f9dd7a70b6a00e8444abfce435d85d84a7009734e1c049f9d8730e7f9e4b854af8f21bbcadc6ee1cbef78319c5ccd8353d2877
7
+ data.tar.gz: 500fa14f684f34c76519c11f38c0328a004c03e0e70d465e2408ab97447f6855213c0541bcc0b53021f3542a0804ec8c28e749e8edbfe9f40fb3defa84bf4787
data/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ ## 0.2.0
2
+ - Add dependencies attribute for easy installation
3
+
1
4
  ## 0.1.1
2
5
  - Fix inefficient apply
3
6
 
data/README.md CHANGED
@@ -20,6 +20,9 @@ Make sure the specified version of Ruby is installed with rbenv.
20
20
  - version - Installed Ruby version (required) (e.g. `"2.2.0"`)
21
21
  - global - Pass true to make it global (default: `false`)
22
22
  - rbenv_executable_path - Path to rbenv executable (default: `"rbenv"`)
23
+ - user - user name (required if dependencies is true)
24
+ - dependencies - Pass true to install rbenv, ruby-build, their dependencies, profile script
25
+ - profile_path - Where to append init script for rbenv (required if dependencies is true)
23
26
 
24
27
  #### Example
25
28
  ```yml
@@ -37,3 +40,29 @@ Install denpendent packages to install rbenv.
37
40
  resources:
38
41
  - type: rbenv_dependent_packages
39
42
  ```
43
+
44
+ ### rbenv_rbenv
45
+ Install rbenv into home directory.
46
+
47
+ #### Attributes
48
+ - user - user name (required)
49
+
50
+ #### Example
51
+ ```yml
52
+ resources:
53
+ - type: rbenv_rbenv
54
+ user: foo
55
+ ```
56
+
57
+ ### rbenv_ruby
58
+ Install ruby-build into home directory.
59
+
60
+ #### Attributes
61
+ - user - user name (required)
62
+
63
+ #### Example
64
+ ```yml
65
+ resources:
66
+ - type: rbenv_ruby_build
67
+ user: foo
68
+ ```
@@ -1,3 +1,6 @@
1
1
  require "serverkit/rbenv/version"
2
2
  require "serverkit/resources/rbenv_dependent_packages"
3
+ require "serverkit/resources/rbenv_profile"
4
+ require "serverkit/resources/rbenv_rbenv"
3
5
  require "serverkit/resources/rbenv_ruby"
6
+ require "serverkit/resources/rbenv_ruby_build"
@@ -1,5 +1,5 @@
1
1
  module Serverkit
2
2
  module Rbenv
3
- VERSION = "0.1.1"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
@@ -0,0 +1,42 @@
1
+ require "serverkit/resources/base"
2
+
3
+ module Serverkit
4
+ module Resources
5
+ class RbenvProfile < Base
6
+ attribute :profile_path, required: true, type: String
7
+
8
+ # @note Override
9
+ def apply
10
+ build_resources.each(&:run_apply)
11
+ end
12
+
13
+ # @note Override
14
+ def check
15
+ build_resources.all?(&:check)
16
+ end
17
+
18
+ private
19
+
20
+ # @return [Array<Serverkit::Resources::Line>]
21
+ def build_resources
22
+ lines.map do |line|
23
+ resource = Serverkit::Resources::Line.new(
24
+ @recipe,
25
+ "line" => line,
26
+ "path" => profile_path,
27
+ )
28
+ resource.backend = backend
29
+ resource
30
+ end
31
+ end
32
+
33
+ # @return [Array<String>]
34
+ def lines
35
+ [
36
+ %<export PATH="$HOME/.rbenv/bin:$PATH">,
37
+ %<eval "$(rbenv init -)">,
38
+ ]
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,32 @@
1
+ require "serverkit/resources/base"
2
+
3
+ module Serverkit
4
+ module Resources
5
+ class RbenvRbenv < Base
6
+ attribute :user, required: true, type: String
7
+
8
+ # @note Override
9
+ def apply
10
+ build_resource.run_apply
11
+ end
12
+
13
+ # @note Override
14
+ def check
15
+ build_resource.check
16
+ end
17
+
18
+ private
19
+
20
+ def build_resource
21
+ resource = Serverkit::Resources::Git.new(
22
+ @recipe,
23
+ "path" => "/home/#{user}/.rbenv",
24
+ "repository" => "https://github.com/sstephenson/rbenv.git",
25
+ "user" => user,
26
+ )
27
+ resource.backend = backend
28
+ resource
29
+ end
30
+ end
31
+ end
32
+ end
@@ -6,13 +6,18 @@ module Serverkit
6
6
  DEFAULT_GLOBAL = false
7
7
  DEFAULT_RBENV_EXECUTABLE_PATH = "rbenv"
8
8
 
9
+ attribute :dependencies, type: [TrueClass, FalseClass]
9
10
  attribute :global, default: DEFAULT_GLOBAL, type: [FalseClass, TrueClass]
11
+ attribute :profile_path, type: String
10
12
  attribute :rbenv_executable_path, default: DEFAULT_RBENV_EXECUTABLE_PATH, type: String
11
13
  attribute :version, required: true, type: String
12
14
 
13
15
  # Install the specified version of Ruby with rbenv if rbenv is executable
14
16
  # @note Override
15
17
  def apply
18
+ if dependencies
19
+ install_dependencies
20
+ end
16
21
  if has_rbenv?
17
22
  install_specified_ruby_version unless has_specified_ruby_version?
18
23
  set_specified_global_version if has_invalid_global_version?
@@ -23,11 +28,24 @@ module Serverkit
23
28
  # @note Override
24
29
  # @return [true, false] True if the specified version of Ruby is installed
25
30
  def check
26
- has_rbenv? && has_specified_ruby_version? && !has_invalid_global_version?
31
+ has_correct_dependencies? && has_rbenv? && has_specified_ruby_version? && !has_invalid_global_version?
27
32
  end
28
33
 
29
34
  private
30
35
 
36
+ # @return [Array<Serverkit::Resources::Base>]
37
+ def build_dependent_resources
38
+ [
39
+ Serverkit::Resources::RbenvDependentPackages.new(@recipe, {}),
40
+ Serverkit::Resources::RbenvRbenv.new(@recipe, "user" => user),
41
+ Serverkit::Resources::RbenvRubyBuild.new(@recipe, "user" => user),
42
+ Serverkit::Resources::RbenvProfile.new(@recipe, "user" => user, "profile_path" => profile_path),
43
+ ].map do |resource|
44
+ resource.backend = backend
45
+ resource
46
+ end
47
+ end
48
+
31
49
  # @note Override
32
50
  def default_id
33
51
  version
@@ -37,6 +55,10 @@ module Serverkit
37
55
  run_command("#{rbenv_executable_path} global").stdout.rstrip
38
56
  end
39
57
 
58
+ def has_correct_dependencies?
59
+ !dependencies || build_dependent_resources.all?(&:check)
60
+ end
61
+
40
62
  # @return [true, false] True if global attribute is specified and it differs from current global
41
63
  def has_invalid_global_version?
42
64
  !global.nil? && global_version != version
@@ -52,6 +74,10 @@ module Serverkit
52
74
  check_command("#{rbenv_executable_path} prefix #{version}")
53
75
  end
54
76
 
77
+ def install_dependencies
78
+ build_dependent_resources.each(&:run_apply)
79
+ end
80
+
55
81
  def install_specified_ruby_version
56
82
  run_command("#{rbenv_executable_path} install #{version}")
57
83
  end
@@ -0,0 +1,32 @@
1
+ require "serverkit/resources/base"
2
+
3
+ module Serverkit
4
+ module Resources
5
+ class RbenvRubyBuild < Base
6
+ attribute :user, required: true, type: String
7
+
8
+ # @note Override
9
+ def apply
10
+ build_resource.run_apply
11
+ end
12
+
13
+ # @note Override
14
+ def check
15
+ build_resource.check
16
+ end
17
+
18
+ private
19
+
20
+ def build_resource
21
+ resource = Serverkit::Resources::Git.new(
22
+ @recipe,
23
+ "path" => "/home/#{user}/.rbenv/plugins/ruby-build",
24
+ "repository" => "https://github.com/sstephenson/ruby-build.git",
25
+ "user" => user,
26
+ )
27
+ resource.backend = backend
28
+ resource
29
+ end
30
+ end
31
+ end
32
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: serverkit-rbenv
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryo Nakamura
@@ -70,7 +70,10 @@ files:
70
70
  - lib/serverkit/rbenv.rb
71
71
  - lib/serverkit/rbenv/version.rb
72
72
  - lib/serverkit/resources/rbenv_dependent_packages.rb
73
+ - lib/serverkit/resources/rbenv_profile.rb
74
+ - lib/serverkit/resources/rbenv_rbenv.rb
73
75
  - lib/serverkit/resources/rbenv_ruby.rb
76
+ - lib/serverkit/resources/rbenv_ruby_build.rb
74
77
  - serverkit-rbenv.gemspec
75
78
  homepage: https://github.com/r7kamura/serverkit-rbenv
76
79
  licenses: