Module: PuppetLanguageServer::CrashDump

Defined in:
lib/puppet-languageserver/crash_dump.rb

Class Method Summary collapse

Class Method Details

.default_crash_fileObject



5
6
7
# File 'lib/puppet-languageserver/crash_dump.rb', line 5

def self.default_crash_file
  File.join(Dir.tmpdir, 'puppet_language_server_crash.txt')
end

.write_crash_file(err, session_state, filename = nil, additional = {}) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/puppet-languageserver/crash_dump.rb', line 9

def self.write_crash_file(err, session_state, filename = nil, additional = {})
  # Create the crash text

  puppet_version         = Puppet.version rescue 'Unknown' # rubocop:disable Style/RescueModifier
  facter_version         = Facter.version rescue 'Unknown' # rubocop:disable Style/RescueModifier
  languageserver_version = PuppetLanguageServer.version rescue 'Unknown' # rubocop:disable Style/RescueModifier

  crashtext = "    Puppet Language Server Crash File\n    -=--=--=--=--=--=--=--=--=--=--=-\n    \#{DateTime.now.strftime('%a %b %e %Y %H:%M:%S %Z')}\n    Puppet Version \#{puppet_version}\n    Facter Version \#{facter_version}\n    Ruby Version \#{RUBY_VERSION}-p\#{RUBY_PATCHLEVEL}\n    Language Server Version \#{languageserver_version}\n\n    Error: \#{err}\n\n    Backtrace\n    ---------\n    \#{err.backtrace.join(\"\\n\")}\n\n  TEXT\n  # Append the documents in the cache\n  session_state.documents.document_uris.each do |uri|\n    crashtext += \"Document - \#{uri}\\n---\\n\#{session_state.documents.document_content(uri)}\\n\\n\"\n  end\n  # Append additional objects from the crash\n  additional.each do |k, v|\n    crashtext += \"\#{k}\\n---\\n\#{v}\\n\\n\"\n  end\n\n  crash_file = filename.nil? ? default_crash_file : filename\n  File.binwrite(crash_file, crashtext)\nrescue # rubocop:disable Style/RescueStandardError\n  # Swallow all errors.  Errors in the error handler should not\n  # terminate the application\nend\n"