From b9f1c6d4fcf44aac30dbb571bb35784ed5c3698d Mon Sep 17 00:00:00 2001 From: Jakukyo Friel Date: Fri, 20 Mar 2015 21:33:48 +0800 Subject: [PATCH 1/4] Add go installer for Go packages. --- lib/sprinkle/installers/go.rb | 39 +++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 lib/sprinkle/installers/go.rb diff --git a/lib/sprinkle/installers/go.rb b/lib/sprinkle/installers/go.rb new file mode 100644 index 0000000..618e683 --- /dev/null +++ b/lib/sprinkle/installers/go.rb @@ -0,0 +1,39 @@ +module Sprinkle + module Installers + # The go package installer installs Go package. + # + # + # == Example Usage + # + # A simple installation: + # + # package :magic_beans do + # description "Beans beans they're good for your heart..." + # go 'magic_beans' + # end + class Go < Installer + + api do + def go(name, options = {}, &block) + install Go.new(self, name, options, &block) + end + end + + attr_accessor :go #:nodoc: + + def initialize(parent, go, options = {}, &block) #:nodoc: + super parent, options, &block + @go = go + end + + + protected + + + def install_commands #:nodoc: + cmd = "#{sudo_cmd}go get #{go}" + end + + end + end +end From e8d770e12d57af38d5943e1647c318417bd1ab47 Mon Sep 17 00:00:00 2001 From: Jakukyo Friel Date: Mon, 11 Jul 2016 18:44:44 +0800 Subject: [PATCH 2/4] go: refactor to use `auto_api`. --- lib/sprinkle/installers/go.rb | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/lib/sprinkle/installers/go.rb b/lib/sprinkle/installers/go.rb index 618e683..39c0c20 100644 --- a/lib/sprinkle/installers/go.rb +++ b/lib/sprinkle/installers/go.rb @@ -11,27 +11,25 @@ module Installers # description "Beans beans they're good for your heart..." # go 'magic_beans' # end - class Go < Installer - - api do - def go(name, options = {}, &block) - install Go.new(self, name, options, &block) - end - end - - attr_accessor :go #:nodoc: - - def initialize(parent, go, options = {}, &block) #:nodoc: - super parent, options, &block - @go = go - end + # + # You may also specify multiple packages as an array: + # + # package :magic_beans do + # go %w(magic_beans magic_sauce) + # end + # + class Go < PackageInstaller + ## + # installs the Go packages passed + # :method: go + # :call-seq: go(*packages) + auto_api :go protected - def install_commands #:nodoc: - cmd = "#{sudo_cmd}go get #{go}" + cmd = "#{sudo_cmd}go get #{@packages.join(' ')}" end end From d77376b2f7cab91fb86d258f0ba89dca774bf720 Mon Sep 17 00:00:00 2001 From: Jakukyo Friel Date: Mon, 11 Jul 2016 19:48:26 +0800 Subject: [PATCH 3/4] go: add verifier `has_go`. --- lib/sprinkle/installers/go.rb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/sprinkle/installers/go.rb b/lib/sprinkle/installers/go.rb index 39c0c20..454784b 100644 --- a/lib/sprinkle/installers/go.rb +++ b/lib/sprinkle/installers/go.rb @@ -26,6 +26,12 @@ class Go < PackageInstaller # :call-seq: go(*packages) auto_api :go + verify_api do + def has_go(package) + @commands << " go list '...' | grep -F '#{package}'" + end + end + protected def install_commands #:nodoc: From f197900a7bb900cad8dd61ab5fa37f444c5fca73 Mon Sep 17 00:00:00 2001 From: Jakukyo Friel Date: Thu, 14 Jul 2016 23:41:36 +0800 Subject: [PATCH 4/4] go installer: `has_go()` avoid false positive. --- lib/sprinkle/installers/go.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/sprinkle/installers/go.rb b/lib/sprinkle/installers/go.rb index 454784b..5f331ff 100644 --- a/lib/sprinkle/installers/go.rb +++ b/lib/sprinkle/installers/go.rb @@ -28,7 +28,7 @@ class Go < PackageInstaller verify_api do def has_go(package) - @commands << " go list '...' | grep -F '#{package}'" + @commands << " go list '...' | grep -E '^#{package}$'" end end