gem-alias 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -15,16 +15,17 @@ Add `:aliases` key to your ~/.gemrc and put definitions as a hash.
15
15
  Example:
16
16
 
17
17
  :aliases:
18
- upgrade = update
19
- ls = list
20
- search = search --remote
18
+ upgrade: update
19
+ ls: list
20
+ lsd: ls -d
21
+ rsearch = search --remote
21
22
 
22
23
  Now you can use them!
23
24
 
24
- $ gem search rake
25
- *** expanding search rake to search --remote rake
26
-
27
- *** REMOTE GEMS ***
25
+ $ gem lsd
26
+ *** expanding lsd to ls -d ***
27
+ *** expanding ls -d to list -d ***
28
+ actionmailer (3.2.6)
28
29
  <snip>
29
30
 
30
31
  Verbose expansion message above can be suppressed with the `:verbose` configuration.
@@ -32,7 +33,8 @@ Verbose expansion message above can be suppressed with the `:verbose` configurat
32
33
  You can list the definitions by `gem aliases`:
33
34
 
34
35
  ls = list
35
- search = search --remote
36
+ lsd = ls -d
37
+ rsearch = search --remote
36
38
  upgrade = update
37
39
 
38
40
  Note that this list is sorted.
@@ -48,4 +50,4 @@ Note that this list is sorted.
48
50
  ## ToDo
49
51
 
50
52
  * Like normal commands, aliases should also be looked up with shorter, but unambiguous names.
51
- * Support multi-level expanstion without falling into infinite loop.
53
+ * <del>Support multi-level expanstion without falling into infinite loop.</del>
@@ -21,14 +21,20 @@ module Gem
21
21
 
22
22
  private
23
23
 
24
- def expand_alias(args)
25
- definition = Gem.configuration.aliases[args.first]
24
+ def expand_alias(args, expansion_count=Hash.new(0))
25
+ command_name, *rest = args
26
+ if expansion_count[command_name] > 1
27
+ say "Alias loop: #{command_name}"
28
+ terminate_interaction 1
29
+ end
30
+ definition = Gem.configuration.aliases[command_name]
26
31
  if definition
27
- (definition.shellsplit + args[1..-1]).tap do |expanded_args|
28
- if Gem.configuration.verbose
29
- say "*** expanding #{args.shelljoin} to #{expanded_args.shelljoin}"
30
- end
32
+ expanded_args = definition.shellsplit + rest
33
+ if Gem.configuration.verbose
34
+ say "*** expanding #{args.shelljoin} to #{expanded_args.shelljoin} ***"
31
35
  end
36
+ expansion_count[expanded_args.first] += 1
37
+ expand_alias(expanded_args, expansion_count)
32
38
  else
33
39
  args
34
40
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Gem
4
4
  module Alias
5
- VERSION = '0.0.2'
5
+ VERSION = '0.0.3'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gem-alias
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-01 00:00:00.000000000 Z
12
+ date: 2012-07-17 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: ! 'This gem adds alias expansion feature to the ''gem'' command.
15
15