# frozen_string_literal: true require_relative "base" module Neetob class CLI module Heroku module ConfigVars class List < Base attr_accessor :apps, :sandbox, :keys, :required_config_vars_file_path def initialize(apps, keys = [], required_config_vars_file_path = "", sandbox = false) super() @apps = apps @sandbox = sandbox @keys = keys @required_config_vars_file_path = required_config_vars_file_path end def run matching_apps = find_all_matching_apps_or_repos(apps, :heroku, sandbox) matching_apps.each do |app| ui.info("\n Config of #{app}\n") config = `heroku config -a #{app} --json` unless $?.success? ui.error("There is a problem in accessing the app with name \"#{app}\" in your account.") ui.error("Please check the specified app name and ensure you're authorized to view that app.") next end table = Terminal::Table.new headings: table_columns, rows: filter_config(config) ui.success(table) end end private def table_columns ["Key", "Value"] end def filter_config(config) parsed_config = JSON.parse(config) if keys.nil? && required_config_vars_file_path.nil? return parsed_config end required_config = keys || read_json_file(required_config_vars_file_path) required_config.map do |key| [key, parsed_config[key]] end end end end end end end