Class: Workplaces::Cli
- Inherits:
-
Thor
- Object
- Thor
- Workplaces::Cli
- Defined in:
- lib/workplaces/cli.rb
Instance Method Summary collapse
- #alias(*name) ⇒ Object
- #aliases(*context) ⇒ Object
- #context(*context) ⇒ Object
- #exclude(*context) ⇒ Object
- #execute(*command) ⇒ Object
- #include(*context) ⇒ Object
- #included(*context) ⇒ Object
Instance Method Details
#alias(*name) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/workplaces/cli.rb', line 36 def alias(*name) raise "No alias provided" if name.empty? raise "-c (--context) option didn't provided" unless [:context] Contexts.open do |contexts| aliases = contexts[[:context]].aliases unless [:delete] raise "-e (--execute) option didn't provided" unless [:execute] aliases[name] = [:execute] else aliases.delete name end end end |
#aliases(*context) ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/workplaces/cli.rb', line 52 def aliases(*context) context = if context.empty? Dirs.open[::Dir.pwd].context else context.to_set end puts "context: #{context.empty? ? '<none>' : context.to_a.join(' ')}" aliases = Contexts.open.aliases(context) puts "aliases: #{'<none>' if aliases.empty?}\n" aliases.each_pair do |aliaz, expression| puts " #{aliaz.join(' ')} => #{expression}" end end |
#context(*context) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/workplaces/cli.rb', line 13 def context(*context) Dirs.open do |dirs| dir = dirs[::Dir.pwd] if context.empty? # request for show current context if dir.context.empty? puts 'has no context for this directory' else puts dir.context.to_a.join(' ') end elsif [:set] dir.context = context.to_set elsif [:delete] dir.context -= context else dir.context += context end end end |
#exclude(*context) ⇒ Object
80 81 82 83 84 85 |
# File 'lib/workplaces/cli.rb', line 80 def exclude(*context) Contexts.open do |contexts| ctx = contexts[[:from]] ctx.included -= context.kind_of?(Array) ? context : [context] end end |
#execute(*command) ⇒ Object
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
# File 'lib/workplaces/cli.rb', line 105 def execute(*command) raise "Alias for the command didn't provided" if command.empty? context = if [:context] [[:context]].to_set else Dirs.open[::Dir.pwd].context end contexts = Contexts.open aliases = contexts.aliases(context) aliases.merge! contexts['global'].aliases expression = aliases[command] raise "Alias '#{command.join(' ')}' didn't exists in current context (#{context.to_a.join(' ')})" unless expression puts "executing: #{expression}" system expression end |
#include(*context) ⇒ Object
69 70 71 72 73 74 75 |
# File 'lib/workplaces/cli.rb', line 69 def include(*context) Contexts.open do |contexts| ctx = contexts[[:to]] ctx.included += context.kind_of?(Array) ? context : [context] ctx.included = ctx.included.to_set.to_a end end |
#included(*context) ⇒ Object
89 90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/workplaces/cli.rb', line 89 def included(*context) context = if context.empty? Dirs.open[::Dir.pwd].context else context.to_set end contexts = Contexts.open included = context.each_with_object(Set.new) do |ctx, included| contexts[ctx].included.each { |i| included << i } end puts "context: #{context.to_a.join(' ')}" puts "include: #{included.to_a.join(' ')}" end |