workon 0.0.6 → 0.0.7

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.
@@ -23,6 +23,10 @@ module Workon
23
23
  @_subclasses
24
24
  end
25
25
 
26
+ def self.before(other = :all)
27
+ Workon::Actor.before self, other
28
+ end
29
+
26
30
  def initialize(path)
27
31
  @path = path
28
32
  end
@@ -34,7 +38,7 @@ module Workon
34
38
  def has_option?(key)
35
39
  key = key.to_sym
36
40
 
37
- !options[key].nil? && !options[key].empty?
41
+ !options[key].nil? && (options[key] || !options[key].empty?)
38
42
  end
39
43
 
40
44
  def fetch_option(key, default = nil)
@@ -0,0 +1,14 @@
1
+ module Workon
2
+ module Actor
3
+ class Middleman < Base
4
+ option('--middleman', 'Start mm-server') { |v| options[:middleman] = true }
5
+
6
+ def commit
7
+ if fetch_option :middleman, false
8
+ screen "mm-server"
9
+ run "sleep 3 && open http://localhost:4567/"
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
data/lib/workon/actor.rb CHANGED
@@ -1,11 +1,3 @@
1
- require 'workon/actor/base'
2
- require 'workon/actor/text_mate'
3
- require 'workon/actor/web_browser'
4
- require 'workon/actor/finder'
5
- require 'workon/actor/git'
6
- require 'workon/actor/watchr'
7
- require 'workon/actor/passenger'
8
-
9
1
  module Workon
10
2
  module Actor
11
3
  include Enumerable
@@ -13,5 +5,33 @@ module Workon
13
5
  def self.each(&block)
14
6
  Workon::Actor::Base.subclasses.each {|c| yield c }
15
7
  end
8
+
9
+ def self.before(actor = nil, other = nil)
10
+ @before ||= {}
11
+
12
+ return @before if actor.nil?
13
+ raise ArgumentError if other.nil?
14
+
15
+ @before[other] = actor
16
+ end
17
+
18
+ def self.ordered
19
+ order ||= Workon::Actor::Base.subclasses.inject([]) do |memo, klass|
20
+ finder = klass.name.split('::').last
21
+ other = before[finder.to_sym]
22
+ should_add = !Workon.config[:without].include?(finder) && !memo.include?(klass)
23
+
24
+ should_add ? memo + (other ? [other, klass] : [klass]) : memo
25
+ end
26
+ end
16
27
  end
17
28
  end
29
+
30
+ require 'workon/actor/base'
31
+ require 'workon/actor/text_mate'
32
+ require 'workon/actor/web_browser'
33
+ require 'workon/actor/finder'
34
+ require 'workon/actor/git'
35
+ require 'workon/actor/watchr'
36
+ require 'workon/actor/passenger'
37
+ require 'workon/actor/middleman'
@@ -1,3 +1,3 @@
1
1
  module Workon
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
data/lib/workon.rb CHANGED
@@ -35,7 +35,7 @@ module Workon
35
35
  def self.commit!
36
36
  Dir.chdir project_path
37
37
 
38
- Workon::Actor.each do |klass|
38
+ Workon::Actor.ordered.each do |klass|
39
39
  klass.new(project_path).commit
40
40
  end
41
41
 
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: workon
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.6
5
+ version: 0.0.7
6
6
  platform: ruby
7
7
  authors:
8
8
  - Mike Wyatt
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-02-25 00:00:00 -03:30
13
+ date: 2011-03-14 00:00:00 -02:30
14
14
  default_executable:
15
15
  dependencies: []
16
16
 
@@ -34,6 +34,7 @@ files:
34
34
  - lib/workon/actor/base.rb
35
35
  - lib/workon/actor/finder.rb
36
36
  - lib/workon/actor/git.rb
37
+ - lib/workon/actor/middleman.rb
37
38
  - lib/workon/actor/passenger.rb
38
39
  - lib/workon/actor/text_mate.rb
39
40
  - lib/workon/actor/watchr.rb