From 1d5b87fce823b0c544ab344271ff08cc8e0031ea Mon Sep 17 00:00:00 2001 From: Jakukyo Friel Date: Sun, 10 Jul 2016 16:50:22 +0800 Subject: [PATCH 1/4] Add pkgin installer. `pkgin` is a binary package manager for pkgsrc on BSD, macOS, Linux, SunOS, Minix and SmartOS/Illumos. --- lib/sprinkle/installers/pkgin.rb | 39 ++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 lib/sprinkle/installers/pkgin.rb diff --git a/lib/sprinkle/installers/pkgin.rb b/lib/sprinkle/installers/pkgin.rb new file mode 100644 index 0000000..b8f336d --- /dev/null +++ b/lib/sprinkle/installers/pkgin.rb @@ -0,0 +1,39 @@ +module Sprinkle + module Installers + # The pkgin installer installs pkgsrc packages on Mac OS X. + # + # == Example Usage + # + # Installing the magic_beans package. + # + # package :magic_beans do + # pkgin 'magic_beans' + # end + # + class Pkgin < PackageInstaller + + attr_accessor :package_name + + api do + def pkgin(package, &block) + install Pkgin.new(self, package, &block) + end + end + verify_api do + def has_pkgin(package) + @commands << "pkgin list | egrep '^#{@package_name}-'" + end + end + def initialize(parent, package_name, &block) #:nodoc: + super parent, &block + @package_name = package_name + end + + protected + + def install_commands #:nodoc: + "sudo /opt/pkg/bin/pkgin -y install #{@package_name}" + end + end + end +end From 4087576918d39815872ef19ecd556158fdcfd0d4 Mon Sep 17 00:00:00 2001 From: Jakukyo Friel Date: Mon, 11 Jul 2016 06:41:06 +0800 Subject: [PATCH 2/4] pkgin: use `sudo_cmd` instead of raw `sudo`. --- lib/sprinkle/installers/pkgin.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/sprinkle/installers/pkgin.rb b/lib/sprinkle/installers/pkgin.rb index b8f336d..52f5bc8 100644 --- a/lib/sprinkle/installers/pkgin.rb +++ b/lib/sprinkle/installers/pkgin.rb @@ -32,7 +32,7 @@ def initialize(parent, package_name, &block) #:nodoc: protected def install_commands #:nodoc: - "sudo /opt/pkg/bin/pkgin -y install #{@package_name}" + "#{sudo_cmd} /opt/pkg/bin/pkgin -y install #{@package_name}" end end end From 1fdc120c3428547ba5447508c20d0d24b7367b62 Mon Sep 17 00:00:00 2001 From: Jakukyo Friel Date: Mon, 11 Jul 2016 18:47:14 +0800 Subject: [PATCH 3/4] pkgin: refator to use `auto_api`. --- lib/sprinkle/installers/pkgin.rb | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/lib/sprinkle/installers/pkgin.rb b/lib/sprinkle/installers/pkgin.rb index 52f5bc8..07c7df9 100644 --- a/lib/sprinkle/installers/pkgin.rb +++ b/lib/sprinkle/installers/pkgin.rb @@ -10,29 +10,30 @@ module Installers # pkgin 'magic_beans' # end # + # You may also specify multiple packages as an array: + # + # package :magic_beans do + # pkgin %w(magic_beans magic_sauce) + # end + # class Pkgin < PackageInstaller - attr_accessor :package_name + ## + # installs pkgsrc binary packages passed + # :method: pkgin + # :call-seq: pkgin(*packages) + auto_api - api do - def pkgin(package, &block) - install Pkgin.new(self, package, &block) - end - end verify_api do def has_pkgin(package) @commands << "pkgin list | egrep '^#{@package_name}-'" end end - def initialize(parent, package_name, &block) #:nodoc: - super parent, &block - @package_name = package_name - end protected def install_commands #:nodoc: - "#{sudo_cmd} /opt/pkg/bin/pkgin -y install #{@package_name}" + "#{sudo_cmd}pkgin -y install #{@packages.join(' ')}" end end end From 3c1249d2e422e5bfdd2983ead6977b7cfc226832 Mon Sep 17 00:00:00 2001 From: Jakukyo Friel Date: Thu, 14 Jul 2016 23:45:15 +0800 Subject: [PATCH 4/4] has_pkgin(): use `grep -E` instead of `egrep`. --- lib/sprinkle/installers/pkgin.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/sprinkle/installers/pkgin.rb b/lib/sprinkle/installers/pkgin.rb index 07c7df9..d687edf 100644 --- a/lib/sprinkle/installers/pkgin.rb +++ b/lib/sprinkle/installers/pkgin.rb @@ -26,7 +26,7 @@ class Pkgin < PackageInstaller verify_api do def has_pkgin(package) - @commands << "pkgin list | egrep '^#{@package_name}-'" + @commands << "pkgin list | grep -E '^#{@package_name}-'" end end