bling 0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/bin/bling +87 -0
  2. data/lib/bling.rb +2 -0
  3. data/lib/bling/bling.rb +50 -0
  4. metadata +57 -0
data/bin/bling ADDED
@@ -0,0 +1,87 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ gem 'bling'
5
+ require 'bling'
6
+
7
+ $task = <<-rakefile
8
+ require 'rubygems'
9
+ gem 'bling'
10
+ require 'bling'
11
+
12
+ namespace :bling do
13
+ desc 'shows gems that are required for the given env'
14
+ task :show do
15
+ file = File.join(File.dirname(__FILE__), "..", "..", "bling.yml")
16
+ Bling.new(file).list_gems(ENV['RAILS_ENV'])
17
+ end
18
+
19
+ end
20
+ rakefile
21
+
22
+ $yaml = <<-yml
23
+ all:
24
+ - name: rails
25
+ version: 3.0.0.beta
26
+ yml
27
+
28
+ $boot = <<-bootfile
29
+ begin
30
+ require 'rubygems'
31
+ gem 'bling'
32
+ require 'bling'
33
+ end
34
+ bootfile
35
+
36
+ $final = <<-output
37
+ You still need to do one thing before you're PROWLING, BABY!
38
+
39
+ You need to change the line in your application.rb from:
40
+
41
+ Bundler.require :default, Rails.env
42
+
43
+ to
44
+
45
+ Bling.new(File.join(File.dirname(__FILE__), "..", "bling.yml")).require_env(Rails.env)
46
+ output
47
+
48
+ def init
49
+ if !File.exists?("config/boot.rb")
50
+ puts "Needs to be run from Rails root directory"
51
+ exit(1)
52
+ end
53
+
54
+ File.open("lib/tasks/bling.rake", "w") do |f|
55
+ f.write($task)
56
+ end
57
+
58
+ File.open("config/boot.rb", "w") do |f|
59
+ f.write($boot)
60
+ end
61
+
62
+ File.open("bling.yml", "w") do |f|
63
+ f.write($yaml)
64
+ end
65
+
66
+ puts $final
67
+ end
68
+
69
+ def install
70
+ bling_file = "bling.yml"
71
+
72
+ if !File.exists?(bling_file)
73
+ puts "No bling file found"
74
+ exit(1)
75
+ end
76
+
77
+ Bling.new(bling_file).install_gems(ENV['RAILS_ENV'] || "development")
78
+ end
79
+
80
+ if ARGV[0] == "install"
81
+ install
82
+ elsif ARGV[0] == "init"
83
+ init
84
+ else
85
+ puts "Unrecognized command. Available command: install"
86
+ end
87
+
data/lib/bling.rb ADDED
@@ -0,0 +1,2 @@
1
+
2
+ require File.join(File.dirname(__FILE__), 'bling', 'bling')
@@ -0,0 +1,50 @@
1
+ require 'rubygems'
2
+
3
+ class Bling
4
+ def initialize(bling_file = "bling.yml")
5
+ raise ArgumentError, "bling file not found" unless File.exists?(bling_file)
6
+ @yaml = YAML::load_file(bling_file)
7
+ end
8
+
9
+ def require_env(env = nil)
10
+ self.each_gem_for(env) do |entry|
11
+ gem *([entry['name'], entry['version']].compact)
12
+ require entry['lib'] || entry['name']
13
+ end
14
+ end
15
+
16
+ def list_gems(env = nil)
17
+ self.each_gem_for(env) do |entry|
18
+ line = entry['name']
19
+ line += " [#{entry['version']}]" if entry['version']
20
+ $stdout.puts line
21
+ end
22
+ end
23
+
24
+ def install_gems(env = nil)
25
+ only_if_present = lambda{|pre, val| val.to_s.empty? ? "" : " #{pre}#{val}"}
26
+ gem_installed = false
27
+ each_gem_for(env) do |entry|
28
+ begin
29
+ version = only_if_present.call('-v=', entry['version'].to_s.gsub(/[=~<>]/, ''))
30
+ source = only_if_present.call('--source=', entry['source'])
31
+ gem *([entry['name'], entry['version']].compact)
32
+ rescue Gem::LoadError
33
+ gem_installed = true
34
+ $stdout.puts "installing #{entry['name']} #{version}"
35
+ `gem install #{entry['name']} #{version} #{source} `
36
+ end
37
+ end
38
+ $stdout.puts "nothing to install!" unless gem_installed
39
+ end
40
+
41
+ protected
42
+ def each_gem_for(env, &block)
43
+ return unless @yaml
44
+ (@yaml['all'] | (@yaml[env] || [])).each do |entry|
45
+ yield entry if block_given?
46
+ end
47
+ end
48
+ end
49
+
50
+
metadata ADDED
@@ -0,0 +1,57 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bling
3
+ version: !ruby/object:Gem::Version
4
+ version: "0.1"
5
+ platform: ruby
6
+ authors:
7
+ - Terry Heath
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2010-02-19 00:00:00 -06:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: drop in replacement for bundler
17
+ email: theath@gmail.com
18
+ executables:
19
+ - bling
20
+ extensions: []
21
+
22
+ extra_rdoc_files: []
23
+
24
+ files:
25
+ - lib/bling.rb
26
+ - lib/bling/bling.rb
27
+ - bin/bling
28
+ has_rdoc: true
29
+ homepage: http://github.com/terrbear/prowl
30
+ licenses: []
31
+
32
+ post_install_message:
33
+ rdoc_options: []
34
+
35
+ require_paths:
36
+ - lib
37
+ required_ruby_version: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: "0"
42
+ version:
43
+ required_rubygems_version: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: "0"
48
+ version:
49
+ requirements: []
50
+
51
+ rubyforge_project:
52
+ rubygems_version: 1.3.5
53
+ signing_key:
54
+ specification_version: 3
55
+ summary: bling bling gem management
56
+ test_files: []
57
+