Class: Gzr::Commands::Permission::Tree

Inherits:
Gzr::Command show all
Includes:
Permission
Defined in:
lib/gzr/commands/permission/tree.rb

Instance Method Summary collapse

Methods included from Permission

#query_all_permissions

Methods inherited from Gzr::Command

#all_color_collections, #color_collection, #color_palette_lookup!, #create_merge_query, #create_query, #default_color_collection, #field_expressions_eval, #field_names, #find_color_palette_reference, #find_vis_config_reference, #get_auth, #get_user_by_id, #keys_to_keep, #keys_to_keep_internal, #merge_query, #pairs, #query, #render_csv, #rewrite_color_palette!, #run_inline_query, #update_color_palette!

Methods included from Session

#build_connection_hash, #login, #logout_all, #pastel, #read_token_data, #say_error, #say_ok, #say_warning, #sufficient_version?, #token_file, #update_auth, #with_session, #write_token_data

Constructor Details

#initialize(options) ⇒ Tree

Returns a new instance of Tree.



35
36
37
38
# File 'lib/gzr/commands/permission/tree.rb', line 35

def initialize(options)
  super()
  @options = options
end

Instance Method Details

#execute(input: $stdin, output: $stdout) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/gzr/commands/permission/tree.rb', line 40

def execute(input: $stdin, output: $stdout)
  say_warning(@options) if @options[:debug]
  with_session do
    data = query_all_permissions()
    begin
      say_ok "No permissions found"
      return nil
    end unless data && data.length > 0

    tree_data = Hash.new

    data.sort! { |a,b| a[:permission] <=> b[:permission] }
    data.select {|e| e[:parent] == nil}.each do |e|
      tree_data[e[:permission]] = [recurse_permissions(e[:permission], data)]
    end

    tree = TTY::Tree.new(tree_data)
    output.puts tree.render
  end
end

#recurse_permissions(permission, data) ⇒ Object



61
62
63
64
65
66
67
# File 'lib/gzr/commands/permission/tree.rb', line 61

def recurse_permissions(permission, data)
  tree_branch = Hash.new
  data.select { |e| e[:parent] == permission }.each do |e|
    tree_branch[e[:permission]] = [recurse_permissions(e[:permission], data)]
  end
  tree_branch
end