From cb0227394d072250feec943d6a1880cca305cbbd Mon Sep 17 00:00:00 2001 From: Maximilian Downey Twiss Date: Thu, 21 Mar 2024 12:20:57 +1100 Subject: [PATCH] Split sysinfo command into separate file (#9513) --- bin/crew | 44 +++---------------------------------------- commands/help.rb | 2 +- commands/sysinfo.rb | 46 +++++++++++++++++++++++++++++++++++++++++++++ lib/const.rb | 2 +- 4 files changed, 51 insertions(+), 43 deletions(-) create mode 100644 commands/sysinfo.rb diff --git a/bin/crew b/bin/crew index 68d7150e8..adff811b6 100755 --- a/bin/crew +++ b/bin/crew @@ -7,6 +7,7 @@ require 'tmpdir' require_relative '../commands/const' require_relative '../commands/help' require_relative '../commands/list' +require_relative '../commands/sysinfo' require_relative '../lib/color' require_relative '../lib/const' require_relative '../lib/convert_size' @@ -56,7 +57,7 @@ DOC = <<~DOCOPT crew reinstall [options] [-k|--keep] [-s|--source] [-S|--recursive-build] [-v|--verbose] ... crew remove [options] [-v|--verbose] ... crew search [options] [-v|--verbose] [ ...] - crew sysinfo [-v|--verbose] [options] + crew sysinfo [-v|--verbose] crew test [-v|--verbose] [ ...] crew update [options] [-v|--verbose] [] crew upgrade [options] [-k|--keep] [-s|--source] [-v|--verbose] [ ...] @@ -2000,46 +2001,7 @@ def search_command(args) end def sysinfo_command(_args) - # newer version of Chrome OS exports info to env by default - lsb_release = if File.file?('/etc/lsb-release') - File.read('/etc/lsb-release').scan(/^(.+?)=(.+)$/).to_h - else - # newer version of Chrome OS exports info to env by default - ENV - end - - git_commit_message_format = '%h `%s (%cr)`' - - sysinfo_markdown_header = <<~MDHEADER -
Expand - - MDHEADER - sysinfo_markdown_body = <<~MDBODY - - Architecture: `#{KERN_ARCH}` (`#{ARCH}`) - - Processor vendor: `#{CPUINFO['vendor_id'] || 'ARM'}` - - User space: `#{Dir.exist?('/lib64') ? '64' : '32'}-bit` - - Chromebrew Kernel version: `#{CREW_KERNEL_VERSION}` - - Chromebrew Running in Container: `#{CREW_IN_CONTAINER}` - - - Chromebrew version: `#{CREW_VERSION}` - - Chromebrew prefix: `#{CREW_PREFIX}` - - Chromebrew libdir: `#{CREW_LIB_PREFIX}` - - - Last update in local repository: #{`git -C '#{CREW_LIB_PATH}' show -s --format='#{git_commit_message_format}'`.chomp} - - - OS variant: `#{lsb_release['CHROMEOS_RELEASE_NAME']}` - - OS version: `#{lsb_release['CHROMEOS_RELEASE_BUILDER_PATH']}` - - OS channel: `#{lsb_release['CHROMEOS_RELEASE_TRACK']}` - MDBODY - sysinfo_markdown_footer = <<~MDFOOTER - -
- MDFOOTER - if @opt_verbose - puts sysinfo_markdown_header, sysinfo_markdown_body, sysinfo_markdown_footer - else - puts sysinfo_markdown_body.tr('`', '') - end + Command.sysinfo(@opt_verbose) end def test_command(args) diff --git a/commands/help.rb b/commands/help.rb index cbabbc4c8..3da220fd9 100644 --- a/commands/help.rb +++ b/commands/help.rb @@ -110,7 +110,7 @@ class Command when 'sysinfo' puts <<~EOT Show system information. - Usage: crew sysinfo + Usage: crew sysinfo [-v|--verbose] If `-v` or `--verbose` is present, show system information with raw markdown. EOT when 'test' diff --git a/commands/sysinfo.rb b/commands/sysinfo.rb new file mode 100644 index 000000000..6965c3f54 --- /dev/null +++ b/commands/sysinfo.rb @@ -0,0 +1,46 @@ +require_relative '../lib/const' + +class Command + def self.sysinfo(verbose) + # newer version of Chrome OS exports info to env by default + lsb_release = if File.file?('/etc/lsb-release') + File.read('/etc/lsb-release').scan(/^(.+?)=(.+)$/).to_h + else + # newer version of Chrome OS exports info to env by default + ENV + end + + git_commit_message_format = '%h `%s (%cr)`' + + sysinfo_markdown_header = <<~MDHEADER +
Expand + + MDHEADER + sysinfo_markdown_body = <<~MDBODY + - Architecture: `#{KERN_ARCH}` (`#{ARCH}`) + - Processor vendor: `#{CPUINFO['vendor_id'] || 'ARM'}` + - User space: `#{Dir.exist?('/lib64') ? '64' : '32'}-bit` + - Chromebrew Kernel version: `#{CREW_KERNEL_VERSION}` + - Chromebrew Running in Container: `#{CREW_IN_CONTAINER}` + + - Chromebrew version: `#{CREW_VERSION}` + - Chromebrew prefix: `#{CREW_PREFIX}` + - Chromebrew libdir: `#{CREW_LIB_PREFIX}` + + - Last update in local repository: #{`git -C '#{CREW_LIB_PATH}' show -s --format='#{git_commit_message_format}'`.chomp} + + - OS variant: `#{lsb_release['CHROMEOS_RELEASE_NAME']}` + - OS version: `#{lsb_release['CHROMEOS_RELEASE_BUILDER_PATH']}` + - OS channel: `#{lsb_release['CHROMEOS_RELEASE_TRACK']}` + MDBODY + sysinfo_markdown_footer = <<~MDFOOTER + +
+ MDFOOTER + if verbose + puts sysinfo_markdown_header, sysinfo_markdown_body, sysinfo_markdown_footer + else + puts sysinfo_markdown_body.tr('`', '') + end + end +end diff --git a/lib/const.rb b/lib/const.rb index 50716bfe2..1162b0016 100644 --- a/lib/const.rb +++ b/lib/const.rb @@ -1,7 +1,7 @@ # lib/const.rb # Defines common constants used in different parts of crew -CREW_VERSION = '1.45.5' +CREW_VERSION = '1.45.6' # kernel architecture KERN_ARCH = `uname -m`.chomp