do 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 0.1.4 - August 31, 2011
2
+
3
+ * Added support to auto completion
4
+
1
5
  ## 0.1.3 - August 26, 2011
2
6
 
3
7
  * Fixed a small bug in option parser
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # to install, add the following line to your .bash_profile or .bashrc
4
+ # complete -C ~/.do/completion -o default doit
5
+
6
+ # Rake completion will return matching rake tasks given typed text. This way
7
+ # you can auto-complete tasks as you are typing them by hitting [tab] or [tab][tab]
8
+ # This also caches the rake tasks for optimium speed
9
+ class DoCompletion
10
+ BIN = File.expand_path('../../bin/doit', __FILE__)
11
+
12
+ def initialize(command)
13
+ @command = command
14
+ end
15
+
16
+ def matches
17
+ do_tasks.select { |task| task =~ %r[^#{typed}] }.
18
+ map { |task| task.sub(typed_before_colon, '')}
19
+ end
20
+
21
+ private
22
+ def typed
23
+ @command[/\s(.+?)$/, 1] || ''
24
+ end
25
+
26
+ def typed_before_colon
27
+ typed[/.+\:/] || ''
28
+ end
29
+
30
+ def do_tasks
31
+ `#{BIN} list`.split("\n")[1..-1].map { |line| line.split[1] }
32
+ end
33
+ end
34
+
35
+ puts DoCompletion.new(ENV["COMP_LINE"]).matches
36
+ exit 0
@@ -33,7 +33,7 @@ task :setup do |options|
33
33
  hrc = File.expand_path("~/.dorc")
34
34
  orc = File.join(DO_PATH, 'dorc')
35
35
  if File.exist?(orc)
36
- log "Config already exist in your %s path" % DO_PATH unless options[:dependency]
36
+ log "Config already exists in your \e[1m%s\e[0m path." % DO_PATH unless options[:dependency]
37
37
  else
38
38
  template = <<-RUBY.gsub(/^ {6}/, '')
39
39
  ##
@@ -52,6 +52,8 @@ task :setup do |options|
52
52
  log "\e[36mGenerated template, now you can add your config to: '%s'\e[0m" % orc
53
53
  end
54
54
  sh 'ln -s %s %s' % [orc, hrc] unless File.exist?(hrc)
55
+ log "To enable autocompletion add to your \e[1m.bash_profile\e[0m:"
56
+ log " complete -C %s -o default doit" % File.expand_path('../../../extras/completion.rb', __FILE__)
55
57
  end
56
58
 
57
59
  desc "show version number"
@@ -61,7 +63,7 @@ end
61
63
 
62
64
  desc "show task list"
63
65
  task :list do
64
- formatted = tasks.map { |t| ["\e[1mdoit\e[0m\e[34m %s:%s\e[0m" % [t[:namespace], t[:name]], t[:desc]] }
66
+ formatted = tasks.map { |t| ["\e[1mdoit\e[0m\e[34m %s:%s \e[0m" % [t[:namespace], t[:name]], t[:desc]] }
65
67
  formatted.each { |f| f[0].gsub!(/\s:/, ' ') }
66
68
  formatted.reject! { |t, desc| desc == '' }
67
69
  max = formatted.max { |a,b| a[0].size <=> b[0].size }[0].size
@@ -1,3 +1,3 @@
1
1
  module DO
2
- VERSION = "0.1.3" unless defined?(DO::VERSION)
2
+ VERSION = "0.1.4" unless defined?(DO::VERSION)
3
3
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: do
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 19
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 3
10
- version: 0.1.3
9
+ - 4
10
+ version: 0.1.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Davide D'Agostino
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-08-27 00:00:00 +02:00
18
+ date: 2011-08-31 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -67,6 +67,7 @@ files:
67
67
  - Rakefile
68
68
  - bin/doit
69
69
  - do.gemspec
70
+ - extras/completion.rb
70
71
  - lib/do.rb
71
72
  - lib/do/cli.rb
72
73
  - lib/do/commands.rb