From de750f1431c4f2353af543590b511059067dad9c Mon Sep 17 00:00:00 2001 From: toshimaru Date: Tue, 22 Apr 2025 01:05:40 +0900 Subject: [PATCH 1/3] deps: Add serverkit as a dependency --- Gemfile.lock | 55 ++++++++++++++++++++++++++++++++++++++++++ serverkit-mise.gemspec | 6 +---- 2 files changed, 56 insertions(+), 5 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 0257482..b7de68e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -2,12 +2,39 @@ PATH remote: . specs: serverkit-mise (0.1.0) + serverkit GEM remote: https://rubygems.org/ specs: + activemodel (8.0.2) + activesupport (= 8.0.2) + activesupport (8.0.2) + base64 + benchmark (>= 0.3) + bigdecimal + concurrent-ruby (~> 1.0, >= 1.3.1) + connection_pool (>= 2.2.5) + drb + i18n (>= 1.6, < 2) + logger (>= 1.4.2) + minitest (>= 5.1) + securerandom (>= 0.3) + tzinfo (~> 2.0, >= 2.0.5) + uri (>= 0.13.1) ast (2.4.3) + base64 (0.2.0) + benchmark (0.4.0) + bigdecimal (3.1.9) + concurrent-ruby (1.3.5) + connection_pool (2.5.1) date (3.4.1) + drb (2.2.1) + hashie (5.0.0) + highline (3.1.2) + reline + i18n (1.14.7) + concurrent-ruby (~> 1.0) io-console (0.8.0) irb (1.15.2) pp (>= 0.6.0) @@ -16,7 +43,12 @@ GEM json (2.10.2) language_server-protocol (3.17.0.4) lint_roller (1.1.0) + logger (1.7.0) minitest (5.25.5) + net-scp (4.1.0) + net-ssh (>= 2.6.5, < 8.0.0) + net-ssh (7.3.0) + net-telnet (0.2.0) parallel (1.27.0) parser (3.3.8.0) ast (~> 2.4.1) @@ -55,6 +87,25 @@ GEM rubocop (>= 1.75.0, < 2.0) rubocop-ast (>= 1.38.0, < 2.0) ruby-progressbar (1.13.0) + securerandom (0.4.1) + serverkit (0.9.0) + activemodel + activesupport (>= 5.0.0) + bundler + hashie + highline + rainbow + slop (~> 3.4) + specinfra (>= 2.31.0) + unix-crypt + sfl (2.3) + slop (3.6.0) + specinfra (2.93.0) + base64 + net-scp + net-ssh (>= 2.7) + net-telnet + sfl standard (1.49.0) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.0) @@ -68,9 +119,13 @@ GEM lint_roller (~> 1.1) rubocop-performance (~> 1.25.0) stringio (3.1.6) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) unicode-display_width (3.1.4) unicode-emoji (~> 4.0, >= 4.0.4) unicode-emoji (4.0.4) + unix-crypt (1.3.1) + uri (1.0.3) PLATFORMS arm64-darwin-24 diff --git a/serverkit-mise.gemspec b/serverkit-mise.gemspec index b044983..565a195 100644 --- a/serverkit-mise.gemspec +++ b/serverkit-mise.gemspec @@ -31,9 +31,5 @@ Gem::Specification.new do |spec| spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) } spec.require_paths = ["lib"] - # Uncomment to register a new dependency of your gem - # spec.add_dependency "example-gem", "~> 1.0" - - # For more information and examples about making a new gem, check out our - # guide at: https://bundler.io/guides/creating_gem.html + spec.add_dependency "serverkit" end From b52f991f7bb2ded86124a7af3d5df6be9d7676da Mon Sep 17 00:00:00 2001 From: toshimaru Date: Tue, 22 Apr 2025 01:08:40 +0900 Subject: [PATCH 2/3] feat: Add `Serverkit::Resources::MiseInstall` --- lib/serverkit/mise.rb | 8 +---- lib/serverkit/resources/mise_install.rb | 43 +++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 7 deletions(-) create mode 100644 lib/serverkit/resources/mise_install.rb diff --git a/lib/serverkit/mise.rb b/lib/serverkit/mise.rb index 4a44af1..a78f63b 100644 --- a/lib/serverkit/mise.rb +++ b/lib/serverkit/mise.rb @@ -1,10 +1,4 @@ # frozen_string_literal: true require_relative "mise/version" - -module Serverkit - module Mise - class Error < StandardError; end - # Your code goes here... - end -end +require_relative "resources/mise_install" diff --git a/lib/serverkit/resources/mise_install.rb b/lib/serverkit/resources/mise_install.rb new file mode 100644 index 0000000..2c90949 --- /dev/null +++ b/lib/serverkit/resources/mise_install.rb @@ -0,0 +1,43 @@ +# frozen_string_literal: true + +require "serverkit/resources/base" + +module Serverkit + module Resources + class MiseInstall < Base + attribute :name, required: true, type: String + attribute :version, type: String + + # @note Override + def apply + run_command("mise install #{name_with_version}") + end + + # @note Override + def check + check_command(" mise ls #{name} | grep '#{version_or_latest}'") + end + + private + + # @note Override + def default_id + name + end + + # @return [String] + # @example "git-plus@4.4.11" + def name_with_version + if version + "#{name}@#{version}" + else + name + end + end + + def version_or_latest + version || "latest" + end + end + end +end From d7ae5e20959826d3738c7782c285581ac0ffef6a Mon Sep 17 00:00:00 2001 From: toshimaru Date: Tue, 22 Apr 2025 01:09:02 +0900 Subject: [PATCH 3/3] docs: Add `mise_install` example --- README.md | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 5789e71..371e1d3 100644 --- a/README.md +++ b/README.md @@ -26,11 +26,27 @@ gem install UPDATE_WITH_YOUR_GEM_NAME_IMMEDIATELY_AFTER_RELEASE_TO_RUBYGEMS_ORG TODO: Write usage instructions here -## Development +## Resource -After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment. +### mise_install -To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org). +Install specified tool via mise. + +#### Attributes + +- `name` - tool name (required) +- `version` - tool version (optional) + +#### Example + +```yaml +resources: + - type: mise_install + name: go + - type: mise_install + name: ruby + version: 3.4.3 +``` ## Contributing