Class: Workplaces::Cli

Inherits:
Thor
  • Object
show all
Defined in:
lib/workplaces/cli.rb

Instance Method Summary collapse

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 options[:context]
  Contexts.open do |contexts|
    aliases = contexts[options[:context]].aliases
    unless options[:delete]
      raise "-e (--execute) option didn't provided" unless options[:execute]
      aliases[name] = options[: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 options[:set]
      dir.context = context.to_set
    elsif options[: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[options[: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 options[:context]
    [options[: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[options[: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