You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: config_use.rb
    path of file: ./repos/chef/knife/lib/chef/knife
    
    the code of the file until where you have to start completion: #
# Author:: V
    
      def run
        profile = @name_args[0]&.strip
        if profile.nil? || profile.empty?
          ui.msg(self.class.config_loader.credentials_profile(config[:profile]))
        else
          credentials_data = self.class.config_loader.parse_credentials_file
          context_file = ChefConfig::PathHelper.home(".chef", "context").freeze

          if credentials_data.nil? || credentials_data.empty?
            ui.fatal("No profiles found, #{self.class.config_loader.credentials_file_path} does not exist or is empty")
            exit 1
          end

          if credentials_data[profile].nil?
            raise ChefConfig::ConfigurationError, "Profile #{profile} doesn't exist. Please add it to #{self.class.config_loader.credentials_file_path} and if it is profile with DNS name check that you are not missing single quotes around it as per docs https://docs.chef.io/workstation/knife_setup/#knife-profiles."
          else
            # Ensure the .chef/ folder exists.
            FileUtils.mkdir_p(File.dirname(context_file))
            IO.write(context_file, "#{profile}\n")
            ui.msg("Set default profile to #{profile}")
          end
        end