brewdler 0.3.1 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
[![Gem Version](https://badge.fury.io/rb/brewdler.png)](http://badge.fury.io/rb/brewdler)
|
6
6
|
[![Dependency Status](https://gemnasium.com/andrew/brewdler.png)](https://gemnasium.com/andrew/brewdler)
|
7
|
-
[![Code Climate](https://codeclimate.com/
|
7
|
+
[![Code Climate](https://codeclimate.com/github/andrew/brewdler.png)](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:
|