serverkit-rbenv 0.1.1 → 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: 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: