environment_information 1.4.99

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of environment_information might be problematic. Click here for more details.

Files changed (80) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +1287 -0
  3. data/bin/envi +7 -0
  4. data/bin/fast_envi +7 -0
  5. data/doc/README.gen +1044 -0
  6. data/doc/todo/TODO_FOR_THE_ENVIRONMENT_INFORMATION_PROJECT.md +48 -0
  7. data/environment_information.gemspec +135 -0
  8. data/lib/environment_information/base/base.rb +166 -0
  9. data/lib/environment_information/class/class.rb +2829 -0
  10. data/lib/environment_information/colours/colours.rb +224 -0
  11. data/lib/environment_information/colours/sfancy.rb +19 -0
  12. data/lib/environment_information/colours/simp.rb +19 -0
  13. data/lib/environment_information/constants/array_tracked_components.rb +210 -0
  14. data/lib/environment_information/constants/constants.rb +17 -0
  15. data/lib/environment_information/constants/encoding.rb +21 -0
  16. data/lib/environment_information/constants/error_line.rb +17 -0
  17. data/lib/environment_information/constants/file_constants.rb +102 -0
  18. data/lib/environment_information/constants/misc.rb +86 -0
  19. data/lib/environment_information/constants/namespace.rb +14 -0
  20. data/lib/environment_information/constants/newline.rb +16 -0
  21. data/lib/environment_information/constants/regex.rb +30 -0
  22. data/lib/environment_information/constants/temp_directory.rb +52 -0
  23. data/lib/environment_information/gui/gtk2/environment_information.rb +35 -0
  24. data/lib/environment_information/gui/gtk3/environment_information.rb +34 -0
  25. data/lib/environment_information/gui/libui/environment_information.rb +74 -0
  26. data/lib/environment_information/gui/shared_code/environment_information_module.rb +409 -0
  27. data/lib/environment_information/misc_components/README.md +3 -0
  28. data/lib/environment_information/misc_components/cflags.rb +36 -0
  29. data/lib/environment_information/misc_components/cpuinfo.rb +64 -0
  30. data/lib/environment_information/misc_components/operating_system.rb +54 -0
  31. data/lib/environment_information/misc_components/operating_system_bit_type.rb +42 -0
  32. data/lib/environment_information/misc_components/ram.rb +30 -0
  33. data/lib/environment_information/misc_components/rubygems_installation_directory.rb +54 -0
  34. data/lib/environment_information/misc_components/screen_resolution.rb +50 -0
  35. data/lib/environment_information/project/project.rb +27 -0
  36. data/lib/environment_information/queries/README.md +2 -0
  37. data/lib/environment_information/queries/complex_version.rb +273 -0
  38. data/lib/environment_information/queries/pkg_config.rb +125 -0
  39. data/lib/environment_information/queries/simple_version.rb +217 -0
  40. data/lib/environment_information/requires/require_asciitable.rb +15 -0
  41. data/lib/environment_information/requires/require_the_constants.rb +7 -0
  42. data/lib/environment_information/requires/require_the_environment_information_project.rb +23 -0
  43. data/lib/environment_information/requires/require_the_individual_misc_components.rb +30 -0
  44. data/lib/environment_information/requires/require_the_toplevel_methods.rb +22 -0
  45. data/lib/environment_information/toplevel_methods/autogenerate_all_relevant_methods.rb +152 -0
  46. data/lib/environment_information/toplevel_methods/cd.rb +16 -0
  47. data/lib/environment_information/toplevel_methods/e.rb +43 -0
  48. data/lib/environment_information/toplevel_methods/hash.rb +60 -0
  49. data/lib/environment_information/toplevel_methods/internet_is_available.rb +30 -0
  50. data/lib/environment_information/toplevel_methods/is_on_roebe.rb +16 -0
  51. data/lib/environment_information/toplevel_methods/menu.rb +90 -0
  52. data/lib/environment_information/toplevel_methods/misc.rb +322 -0
  53. data/lib/environment_information/toplevel_methods/n_subcommands.rb +31 -0
  54. data/lib/environment_information/toplevel_methods/prefix_to_use.rb +39 -0
  55. data/lib/environment_information/toplevel_methods/register_this_component_is_missing.rb +61 -0
  56. data/lib/environment_information/toplevel_methods/remote_url_of_this_program.rb +45 -0
  57. data/lib/environment_information/toplevel_methods/replay_from_the_stored_file.rb +84 -0
  58. data/lib/environment_information/toplevel_methods/return_alias_to.rb +30 -0
  59. data/lib/environment_information/toplevel_methods/return_pkgconfig_based_programs.rb +28 -0
  60. data/lib/environment_information/toplevel_methods/return_remote_gtk2_version.rb +54 -0
  61. data/lib/environment_information/toplevel_methods/return_simple_version_based_programs.rb +28 -0
  62. data/lib/environment_information/toplevel_methods/return_version_of_this_program.rb +182 -0
  63. data/lib/environment_information/toplevel_methods/show_all_available_components.rb +192 -0
  64. data/lib/environment_information/toplevel_methods/write_what_into.rb +24 -0
  65. data/lib/environment_information/version/version.rb +25 -0
  66. data/lib/environment_information/www/sinatra_interface.rb +213 -0
  67. data/lib/environment_information/www/webobject_interface.cgi +29 -0
  68. data/lib/environment_information/yaml/array_default_programs_on_linux.yml +15 -0
  69. data/lib/environment_information/yaml/array_lfs_core_programs.yml +37 -0
  70. data/lib/environment_information/yaml/array_science_cluster.yml +12 -0
  71. data/lib/environment_information/yaml/array_tracked_non_programs.yml +13 -0
  72. data/lib/environment_information/yaml/array_tracked_programs.yml +215 -0
  73. data/lib/environment_information/yaml/array_tracked_xorg_components.yml +37 -0
  74. data/lib/environment_information/yaml/colours.yml +3 -0
  75. data/lib/environment_information/yaml/query_to_use_for_the_individual_components.yml +264 -0
  76. data/lib/environment_information.rb +5 -0
  77. data/test/testing_environment_information.rb +26 -0
  78. data/test/testing_missing_components.rb +9 -0
  79. data/test/testing_prefix_for_the_environment_information_project.rb +20 -0
  80. metadata +177 -0
@@ -0,0 +1,48 @@
1
+ ------------------------------------------------------------------------------
2
+ - add in envi the ability to query from another base-prefix
3
+ e. g. /home/Programs/.
4
+
5
+ Invocation example:
6
+
7
+ envi --work-on-programs-directory-only
8
+
9
+ and then explain this too.
10
+
11
+ So the idea is to first ONLY consider
12
+ checking the programs that are registered
13
+ and THEn to check inside of these directories,
14
+ e. g. for pkgconfig, or for --version or whatever
15
+ only there
16
+ also ewe will use only those directories
17
+ with "Current" symlink pointing to EXISTING directories.
18
+ ^^^
19
+ THEN also
20
+ make it available on /home/Programs/Toolchain
21
+
22
+ then upload
23
+
24
+ ^^^ this works now with the first variant but only for
25
+ "bison --version" programs; need to add support
26
+ for pkg-config programs too, at a later time.
27
+
28
+ ^^^ also has to then add it onto --help to show it
29
+ once it works properly.
30
+
31
+ ------------------------------------------------------------------------------
32
+ (7) in envi: add
33
+
34
+ --scan-this-directory=/Programs
35
+ ^^^ this shall check for each directory there, if it is NOT empty,
36
+ and then to find out what to use to determine the version
37
+ dynamically.
38
+ but before we do so, perhaps add a way to query the binary
39
+ from any path... e. g. /Programs/Htop/Current/ or so
40
+ ------------------------------------------------------------------------------
41
+ (8)
42
+
43
+ - if we rewrite the project, properly add disabling of saving
44
+ files AND checking permissions
45
+ ------------------------------------------------------------------------------
46
+ test absolute prefixes again
47
+ ------------------------------------------------------------------------------
48
+ (10) add a new log for environment information
@@ -0,0 +1,135 @@
1
+ # =========================================================================== #
2
+ # Gemspec for Project EnvironmentInformation.
3
+ # =========================================================================== #
4
+ require 'environment_information'
5
+ require 'roebe'
6
+
7
+ Gem::Specification.new { |s|
8
+
9
+ s.name = 'environment_information'
10
+ s.version = EnvironmentInformation::VERSION
11
+ s.date = Time.now.strftime('%Y-%m-%d')
12
+
13
+ DESCRIPTION = <<-EOF
14
+
15
+ The gem environment_information is able to provide information about the
16
+ computer host system, in particular on Linux systems, if ruby is available
17
+ on that computer. Commonly used programs will be queried for their current
18
+ version number (and whether they exist) on the target computer. If these
19
+ programs do happen to exist then the corresponding version will be
20
+ displayed, on the commandline.
21
+
22
+ This is somewhat similar to the "Linux from Scratch" project, which uses
23
+ a shell script to display the version of many commonly used programs.
24
+ As I prefer to use ruby rather than shell scripts, I wrote this somewhat
25
+ equivalent project.
26
+
27
+ This project currently tracks the version of
28
+ #{::EnvironmentInformation.tracked_programs?.size}
29
+ different programs.
30
+
31
+ For more information and documentation about this project, consider
32
+ looking at the homepage of this gem, at
33
+
34
+ https://rubygems.org/gems/environment_information
35
+
36
+ and look at the documentation on the bottom right side,
37
+ called "Documentation".
38
+
39
+ EOF
40
+
41
+ s.summary = DESCRIPTION
42
+ s.description = DESCRIPTION
43
+
44
+ # =============================================================== #
45
+ # Show this when a user installs this project.
46
+ # =============================================================== #
47
+ s.post_install_message = <<-EOF
48
+
49
+ You can run this little script by issuing:
50
+
51
+ envi
52
+
53
+ on the commandline. (The script envi is part of this gem and can
54
+ be found at the subdirectory bin/envi of the gem.)
55
+
56
+ Within ruby code, you can require the project and then display
57
+ information too, via:
58
+
59
+ require 'environment_information'
60
+ EnvironmentInformation.run
61
+
62
+ For the (documented) options, you can do either of the following:
63
+
64
+ envi --help
65
+ envi HELP
66
+
67
+ This will feedback the options that are available.
68
+
69
+ To get the full output of just about every program that is checked
70
+ by this gem, try any of the following invocation:
71
+
72
+ envi --all
73
+ envi ALL
74
+
75
+ (Lowercase works fine just as well. The commandline options that
76
+ include two '-' characters are, internally, the preferred variants.)
77
+
78
+ To obtain an individual entry, do something such as this:
79
+
80
+ envi gtk
81
+ envi pango
82
+ envi gcr
83
+
84
+ To disable colours, do either one of these:
85
+
86
+ envi --nocolours
87
+ envi --no-colours
88
+ envi --no-colors
89
+ envi --nocolors
90
+ envi nocolours
91
+ envi NOCOLOURS
92
+
93
+ (Both UK and US spelling is supported, so colour works just as
94
+ well as color.)
95
+
96
+ If all of this may become too tedious to type, I just use an
97
+ alias called ALL, which stands short for "envi all" or
98
+ "envi show_all".
99
+
100
+ Another option, both of which are synonymous to each other,
101
+ is to compare all existing programs on a given host system
102
+ with the version registered in the RBT project:
103
+
104
+ envi ALL REALLY_ALL
105
+ envi --compare_programs
106
+ envi compare_programs
107
+
108
+ If you wish to show only the OS information, do:
109
+
110
+ envi --os?
111
+
112
+ For more documentation about the project, have a look at:
113
+
114
+ #{EnvironmentInformation::URL_TO_THE_DOCUMENTATION}
115
+
116
+ EOF
117
+
118
+ s.authors = ['Robert A. Heiler']
119
+ s.email = Roebe.email?
120
+ s.files = Dir['**/*']
121
+ s.licenses = 'MIT'
122
+ s.homepage = 'https://rubygems.org/gems/environment_information'
123
+ s.executables = Dir['bin/*'].map { |f| File.basename(f) }
124
+
125
+ s.required_ruby_version = '>= '+Roebe.third_most_stable_version_of_ruby
126
+ s.required_rubygems_version = '>= '+Gem::VERSION
127
+ s.rubygems_version = '>= '+Gem::VERSION
128
+
129
+ # ========================================================================= #
130
+ # Dependencies of this project:
131
+ # ========================================================================= #
132
+ s.add_dependency 'colours'
133
+ # s.add_dependency 'opn' # ← An optional dependency since as of 10.03.2020
134
+
135
+ }
@@ -0,0 +1,166 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'environment_information/base/base.rb'
6
+ # < ::EnvironmentInformation::Base
7
+ # =========================================================================== #
8
+ module EnvironmentInformation
9
+
10
+ class Base
11
+
12
+ require 'environment_information/requires/require_the_constants.rb'
13
+ require 'environment_information/colours/colours.rb'
14
+ require 'environment_information/toplevel_methods/e.rb'
15
+ require 'environment_information/toplevel_methods/misc.rb'
16
+
17
+ require 'environment_information/toplevel_methods/is_on_roebe.rb'
18
+ # ========================================================================= #
19
+ # === is_on_roebe?
20
+ # ========================================================================= #
21
+ def is_on_roebe?
22
+ ::EnvironmentInformation.is_on_roebe?
23
+ end
24
+
25
+ # ========================================================================= #
26
+ # === e
27
+ # ========================================================================= #
28
+ def e(i = '')
29
+ ::EnvironmentInformation.e(i)
30
+ end
31
+
32
+ # ========================================================================= #
33
+ # === set_commandline_arguments
34
+ # ========================================================================= #
35
+ def set_commandline_arguments(i = '')
36
+ i = [i].flatten.compact
37
+ @commandline_arguments = i
38
+ end
39
+
40
+ # ========================================================================= #
41
+ # === commandline_arguments?
42
+ # ========================================================================= #
43
+ def commandline_arguments?
44
+ @commandline_arguments
45
+ end
46
+
47
+ # ========================================================================= #
48
+ # === first_argument?
49
+ # ========================================================================= #
50
+ def first_argument?
51
+ @commandline_arguments.first
52
+ end; alias first? first_argument? # === first?
53
+
54
+ # ========================================================================= #
55
+ # === is_rbt_available? (rbt tag)
56
+ #
57
+ # Query whether the user has the necessary code from the RBT project
58
+ # installed.
59
+ # ========================================================================= #
60
+ def is_rbt_available?
61
+ Object.const_defined? :RBT
62
+ end
63
+
64
+ # ========================================================================= #
65
+ # === log_dir?
66
+ # ========================================================================= #
67
+ def log_dir?
68
+ ::EnvironmentInformation.temp_directory?
69
+ end; alias log_directory? log_dir? # === log_directory?
70
+
71
+ require 'environment_information/toplevel_methods/cd.rb'
72
+ # ========================================================================= #
73
+ # === cd (cd tag)
74
+ #
75
+ # A shorter variant for the change-directory action.
76
+ # ========================================================================= #
77
+ def cd(i)
78
+ ::EnvironmentInformation.cd(i)
79
+ end
80
+
81
+ # ========================================================================= #
82
+ # === esystem
83
+ # ========================================================================= #
84
+ def esystem(i)
85
+ e i
86
+ system i
87
+ end
88
+
89
+ # ========================================================================= #
90
+ # === gold
91
+ # ========================================================================= #
92
+ def gold(i = '')
93
+ return ::Colours.gold(i)
94
+ end
95
+
96
+ # ========================================================================= #
97
+ # === report_left_right
98
+ # ========================================================================= #
99
+ def report_left_right(
100
+ left = program_name?,
101
+ right = program_version?,
102
+ colour_for_the_left_side = ::EnvironmentInformation.colour_for_the_left_side,
103
+ colour_for_the_right_side = ::EnvironmentInformation.colour_for_the_right_side,
104
+ colour_for_program_not_found = ::EnvironmentInformation.colour_for_program_not_found,
105
+ use_padding = true
106
+ )
107
+ case colour_for_the_left_side
108
+ # ======================================================================= #
109
+ # === :default_colour
110
+ # ======================================================================= #
111
+ when :default_colour
112
+ colour_for_the_left_side = ::EnvironmentInformation.colour_for_the_left_side
113
+ end
114
+ case colour_for_the_right_side
115
+ # ======================================================================= #
116
+ # === :default_colour
117
+ # ======================================================================= #
118
+ when :default_colour
119
+ colour_for_the_right_side = ::EnvironmentInformation.colour_for_the_right_side
120
+ end
121
+ case colour_for_program_not_found
122
+ # ======================================================================= #
123
+ # === :default_colour
124
+ # ======================================================================= #
125
+ when :default_colour
126
+ colour_for_program_not_found = ::EnvironmentInformation.colour_for_program_not_found
127
+ end
128
+ case right
129
+ when nil
130
+ right = NOT_INSTALLED_OR_NOT_FOUND
131
+ end
132
+ right = right.dup if right.frozen?
133
+ right.strip!
134
+ if right.include? 'not found'
135
+ right = ::EnvironmentInformation.send(
136
+ colour_for_program_not_found, right
137
+ )
138
+ end
139
+ colourized_right_side = ::EnvironmentInformation.send(
140
+ colour_for_the_right_side,
141
+ right
142
+ )
143
+ modified_left = "#{left}:"
144
+ modified_left = modified_left.ljust(32) if use_padding
145
+ e ::EnvironmentInformation.send(
146
+ colour_for_the_left_side,
147
+ modified_left
148
+ )+
149
+ " #{colourized_right_side}"
150
+ end
151
+
152
+ # ========================================================================= #
153
+ # === lightblue
154
+ # ========================================================================= #
155
+ def lightblue(i = '')
156
+ return ::Colours.lightblue(i)
157
+ end
158
+
159
+ # ========================================================================= #
160
+ # === mediumaquamarine
161
+ # ========================================================================= #
162
+ def mediumaquamarine(i = '')
163
+ return ::EnvironmentInformation.mediumaquamarine(i)
164
+ end
165
+
166
+ end; end