brewdler 0.3.1 → 0.4.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.
- data/.gitignore +2 -0
- data/Readme.mdown +10 -7
- data/bin/brewdle +9 -58
- data/brewdler.gemspec +2 -2
- data/lib/brewdler.rb +4 -1
- data/lib/brewdler/brew_installer.rb +7 -0
- data/lib/brewdler/cask_installer.rb +7 -0
- data/lib/brewdler/dsl.rb +19 -0
- data/lib/brewdler/version.rb +1 -1
- metadata +17 -6
data/.gitignore
CHANGED
data/Readme.mdown
CHANGED
@@ -4,12 +4,14 @@ Bundler for non-ruby dependencies from homebrew
|
|
4
4
|
|
5
5
|
[](http://badge.fury.io/rb/brewdler)
|
6
6
|
[](https://gemnasium.com/andrew/brewdler)
|
7
|
-
[](https://codeclimate.com/github/andrew/brewdler)
|
8
8
|
|
9
9
|
## Requirements
|
10
10
|
|
11
11
|
[Homebrew](http://github.com/mxcl/homebrew) is used for installing the dependencies, it only works on a mac and so does this gem.
|
12
12
|
|
13
|
+
[Homebrew-cask](http://github.com/phinze/homebrew-cask) is optional and used for installing Mac applications.
|
14
|
+
|
13
15
|
## Usage
|
14
16
|
|
15
17
|
Install using rubygems:
|
@@ -22,11 +24,12 @@ then create a `Brewfile` in the root of your project:
|
|
22
24
|
|
23
25
|
Then list your homebrew based dependencies in your `Brewfile`:
|
24
26
|
|
25
|
-
redis
|
26
|
-
mongodb
|
27
|
-
sphinx
|
28
|
-
imagemagick
|
29
|
-
mysql
|
27
|
+
brew 'redis'
|
28
|
+
brew 'mongodb'
|
29
|
+
brew 'sphinx'
|
30
|
+
brew 'imagemagick'
|
31
|
+
brew 'mysql'
|
32
|
+
cask 'google-chrome'
|
30
33
|
|
31
34
|
You can then easily install all of the dependencies on a new mac like so:
|
32
35
|
|
@@ -57,4 +60,4 @@ Report Issues/Feature requests on [GitHub Issues](http://github.com/andrew/brewd
|
|
57
60
|
|
58
61
|
## Copyright
|
59
62
|
|
60
|
-
Copyright (c) 2013 Andrew Nesbitt. See LICENSE for details.
|
63
|
+
Copyright (c) 2013 Andrew Nesbitt. See LICENSE for details.
|
data/bin/brewdle
CHANGED
@@ -11,67 +11,18 @@ default_command :install
|
|
11
11
|
command :install do |c|
|
12
12
|
c.description = 'Install all homebrew based dependecies'
|
13
13
|
c.action do |args, options|
|
14
|
-
|
15
14
|
begin
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
}
|
20
|
-
rescue
|
15
|
+
file = File.read(File.join(Dir.pwd, "Brewfile"))
|
16
|
+
Brewdler::Dsl.new(file).process
|
17
|
+
rescue Errno::ENOENT => e
|
21
18
|
puts 'No Brewfile found'
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
if missing_formulae.empty?
|
29
|
-
dependencies.each do |dependency|
|
30
|
-
if installed?(dependency)
|
31
|
-
puts "Using #{dependency} (#{installed_version(dependency)})"
|
32
|
-
else
|
33
|
-
puts "Installing #{dependency} (#{formula_version(dependency)})"
|
34
|
-
install(dependency)
|
35
|
-
end
|
19
|
+
puts e.message
|
20
|
+
rescue NameError
|
21
|
+
file = File.open(File.join(Dir.pwd, "Brewfile"))
|
22
|
+
file.find_all do |name|
|
23
|
+
name.chomp!
|
24
|
+
Brewdler::BrewInstaller.install(name) if name.length > 0 && name !~ /^ *#/
|
36
25
|
end
|
37
|
-
puts "All dependencies installed"
|
38
|
-
else
|
39
|
-
puts "Non-existent formula/e: #{missing_formulae.join(', ')}"
|
40
|
-
puts "(please check spelling in Brewfile, and/or run 'brew update')"
|
41
26
|
end
|
42
|
-
|
43
27
|
end
|
44
28
|
end
|
45
|
-
|
46
|
-
def install(name)
|
47
|
-
brewable = `brew info #{name}`
|
48
|
-
if brewable[0..4] != 'Error'
|
49
|
-
system "brew install #{name}"
|
50
|
-
else
|
51
|
-
puts "Error: No available formula for #{name}"
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
def formula_exists?(name)
|
56
|
-
formula_location = File.join(`brew --prefix`.chomp, 'Library', 'Formula', name + ".rb")
|
57
|
-
File.exists? formula_location
|
58
|
-
end
|
59
|
-
|
60
|
-
def installed?(name)
|
61
|
-
installed_version = `brew list --versions #{name}`.chomp
|
62
|
-
!installed_version.empty?
|
63
|
-
end
|
64
|
-
|
65
|
-
def installed_version(name)
|
66
|
-
installed_version = `brew list --versions #{name}`.chomp
|
67
|
-
installed_version.match(/#{name} ([^\s]+)/)[1]
|
68
|
-
end
|
69
|
-
|
70
|
-
def formula_version(name)
|
71
|
-
formula_version = `brew info #{name}`
|
72
|
-
formula_version.split($/).first.match(/#{name}: stable ([^\s,]+)/)[1]
|
73
|
-
end
|
74
|
-
|
75
|
-
def comment?(line)
|
76
|
-
line =~ /^ *#/
|
77
|
-
end
|
data/brewdler.gemspec
CHANGED
@@ -2,8 +2,8 @@
|
|
2
2
|
require File.expand_path('../lib/brewdler/version', __FILE__)
|
3
3
|
|
4
4
|
Gem::Specification.new do |gem|
|
5
|
-
gem.authors = ["Andrew Nesbitt"]
|
6
|
-
gem.email = ["andrewnez@gmail.com"]
|
5
|
+
gem.authors = ["Andrew Nesbitt", "James A. Anderson", "Amos King"]
|
6
|
+
gem.email = ["andrewnez@gmail.com", "me@jamesaanderson.com", "amos.l.king@gmail.com"]
|
7
7
|
gem.summary = %q{Bundler for non-ruby dependencies from homebrew}
|
8
8
|
|
9
9
|
gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
data/lib/brewdler.rb
CHANGED
data/lib/brewdler/dsl.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
module Brewdler
|
2
|
+
class Dsl
|
3
|
+
def initialize(input)
|
4
|
+
@input = input
|
5
|
+
end
|
6
|
+
|
7
|
+
def process
|
8
|
+
instance_eval(@input)
|
9
|
+
end
|
10
|
+
|
11
|
+
def brew(name)
|
12
|
+
Brewdler::BrewInstaller.install(name)
|
13
|
+
end
|
14
|
+
|
15
|
+
def cask(name)
|
16
|
+
Brewdler::CaskInstaller.install(name)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/brewdler/version.rb
CHANGED
metadata
CHANGED
@@ -1,19 +1,21 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: brewdler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Andrew Nesbitt
|
9
|
+
- James A. Anderson
|
10
|
+
- Amos King
|
9
11
|
autorequire:
|
10
12
|
bindir: bin
|
11
13
|
cert_chain: []
|
12
|
-
date: 2013-
|
14
|
+
date: 2013-06-10 00:00:00.000000000 Z
|
13
15
|
dependencies:
|
14
16
|
- !ruby/object:Gem::Dependency
|
15
17
|
name: commander
|
16
|
-
requirement:
|
18
|
+
requirement: !ruby/object:Gem::Requirement
|
17
19
|
none: false
|
18
20
|
requirements:
|
19
21
|
- - ! '>='
|
@@ -21,10 +23,17 @@ dependencies:
|
|
21
23
|
version: '0'
|
22
24
|
type: :runtime
|
23
25
|
prerelease: false
|
24
|
-
version_requirements:
|
26
|
+
version_requirements: !ruby/object:Gem::Requirement
|
27
|
+
none: false
|
28
|
+
requirements:
|
29
|
+
- - ! '>='
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: '0'
|
25
32
|
description:
|
26
33
|
email:
|
27
34
|
- andrewnez@gmail.com
|
35
|
+
- me@jamesaanderson.com
|
36
|
+
- amos.l.king@gmail.com
|
28
37
|
executables:
|
29
38
|
- brewdle
|
30
39
|
extensions: []
|
@@ -39,6 +48,9 @@ files:
|
|
39
48
|
- bin/brewdle
|
40
49
|
- brewdler.gemspec
|
41
50
|
- lib/brewdler.rb
|
51
|
+
- lib/brewdler/brew_installer.rb
|
52
|
+
- lib/brewdler/cask_installer.rb
|
53
|
+
- lib/brewdler/dsl.rb
|
42
54
|
- lib/brewdler/version.rb
|
43
55
|
homepage:
|
44
56
|
licenses: []
|
@@ -60,9 +72,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
60
72
|
version: '0'
|
61
73
|
requirements: []
|
62
74
|
rubyforge_project:
|
63
|
-
rubygems_version: 1.8.
|
75
|
+
rubygems_version: 1.8.23
|
64
76
|
signing_key:
|
65
77
|
specification_version: 3
|
66
78
|
summary: Bundler for non-ruby dependencies from homebrew
|
67
79
|
test_files: []
|
68
|
-
has_rdoc:
|