environment_information 1.4.29
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of environment_information might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/README.md +1061 -0
- data/bin/envi +7 -0
- data/bin/fast_envi +7 -0
- data/doc/README.gen +893 -0
- data/doc/TODO_FOR_THE_ENVIRONMENT_INFORMATION_PROJECT.md +54 -0
- data/environment_information.gemspec +130 -0
- data/lib/environment_information/base/base.rb +113 -0
- data/lib/environment_information/class/add.rb +186 -0
- data/lib/environment_information/class/colours.rb +283 -0
- data/lib/environment_information/class/constants.rb +35 -0
- data/lib/environment_information/class/environment_information.rb +51 -0
- data/lib/environment_information/class/help.rb +86 -0
- data/lib/environment_information/class/html.rb +78 -0
- data/lib/environment_information/class/initialize.rb +178 -0
- data/lib/environment_information/class/menu.rb +436 -0
- data/lib/environment_information/class/misc.rb +821 -0
- data/lib/environment_information/class/opn.rb +33 -0
- data/lib/environment_information/class/register_sigint.rb +20 -0
- data/lib/environment_information/class/reset.rb +213 -0
- data/lib/environment_information/class/ruby.rb +79 -0
- data/lib/environment_information/class/run.rb +61 -0
- data/lib/environment_information/class/show_display_and_report.rb +310 -0
- data/lib/environment_information/colours/colours.rb +150 -0
- data/lib/environment_information/colours/sfancy.rb +19 -0
- data/lib/environment_information/colours/simp.rb +19 -0
- data/lib/environment_information/constants/array_tracked_components.rb +207 -0
- data/lib/environment_information/constants/constants.rb +17 -0
- data/lib/environment_information/constants/encoding.rb +21 -0
- data/lib/environment_information/constants/error_line.rb +17 -0
- data/lib/environment_information/constants/file_constants.rb +102 -0
- data/lib/environment_information/constants/misc.rb +86 -0
- data/lib/environment_information/constants/namespace.rb +14 -0
- data/lib/environment_information/constants/newline.rb +16 -0
- data/lib/environment_information/constants/regex.rb +30 -0
- data/lib/environment_information/constants/temp_directory.rb +52 -0
- data/lib/environment_information/gui/gtk/bindings.rb +300 -0
- data/lib/environment_information/misc_components/README.md +3 -0
- data/lib/environment_information/misc_components/cflags.rb +36 -0
- data/lib/environment_information/misc_components/cpuinfo.rb +64 -0
- data/lib/environment_information/misc_components/operating_system.rb +54 -0
- data/lib/environment_information/misc_components/operating_system_bit_type.rb +42 -0
- data/lib/environment_information/misc_components/ram.rb +30 -0
- data/lib/environment_information/misc_components/rubygems_installation_directory.rb +54 -0
- data/lib/environment_information/misc_components/screen_resolution.rb +50 -0
- data/lib/environment_information/project/project.rb +27 -0
- data/lib/environment_information/queries/README.md +2 -0
- data/lib/environment_information/queries/complex_version.rb +263 -0
- data/lib/environment_information/queries/pkg_config.rb +125 -0
- data/lib/environment_information/queries/simple_version.rb +211 -0
- data/lib/environment_information/requires/require_asciitable.rb +15 -0
- data/lib/environment_information/requires/require_the_constants.rb +7 -0
- data/lib/environment_information/requires/require_the_environment_information_project.rb +23 -0
- data/lib/environment_information/requires/require_the_individual_misc_components.rb +30 -0
- data/lib/environment_information/requires/require_the_toplevel_methods.rb +22 -0
- data/lib/environment_information/toplevel_methods/autogenerate_all_relevant_methods.rb +152 -0
- data/lib/environment_information/toplevel_methods/cd.rb +16 -0
- data/lib/environment_information/toplevel_methods/e.rb +30 -0
- data/lib/environment_information/toplevel_methods/hash.rb +60 -0
- data/lib/environment_information/toplevel_methods/internet_is_available.rb +30 -0
- data/lib/environment_information/toplevel_methods/is_on_roebe.rb +16 -0
- data/lib/environment_information/toplevel_methods/menu.rb +90 -0
- data/lib/environment_information/toplevel_methods/misc.rb +264 -0
- data/lib/environment_information/toplevel_methods/n_subcommands.rb +31 -0
- data/lib/environment_information/toplevel_methods/prefix_to_use.rb +39 -0
- data/lib/environment_information/toplevel_methods/register_this_component_is_missing.rb +61 -0
- data/lib/environment_information/toplevel_methods/remote_url_of_this_program.rb +45 -0
- data/lib/environment_information/toplevel_methods/replay_from_the_stored_file.rb +84 -0
- data/lib/environment_information/toplevel_methods/return_pkgconfig_based_programs.rb +28 -0
- data/lib/environment_information/toplevel_methods/return_remote_gtk2_version.rb +54 -0
- data/lib/environment_information/toplevel_methods/return_simple_version_based_programs.rb +28 -0
- data/lib/environment_information/toplevel_methods/return_version_of_this_program.rb +186 -0
- data/lib/environment_information/toplevel_methods/show_all_available_components.rb +192 -0
- data/lib/environment_information/toplevel_methods/write_what_into.rb +24 -0
- data/lib/environment_information/version/version.rb +25 -0
- data/lib/environment_information/www/sinatra_interface.rb +213 -0
- data/lib/environment_information/www/webobject_interface.cgi +29 -0
- data/lib/environment_information/yaml/array_default_programs_on_linux.yml +14 -0
- data/lib/environment_information/yaml/array_lfs_core_programs.yml +35 -0
- data/lib/environment_information/yaml/array_science_cluster.yml +12 -0
- data/lib/environment_information/yaml/array_tracked_non_programs.yml +13 -0
- data/lib/environment_information/yaml/array_tracked_programs.yml +165 -0
- data/lib/environment_information/yaml/array_tracked_xorg_components.yml +34 -0
- data/lib/environment_information/yaml/query_to_use_for_the_individual_components.yml +215 -0
- data/lib/environment_information.rb +5 -0
- data/test/testing_environment_information.rb +26 -0
- data/test/testing_missing_components.rb +9 -0
- data/test/testing_prefix_for_the_environment_information_project.rb +20 -0
- metadata +195 -0
@@ -0,0 +1,186 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'environment_information/toplevel_methods/return_version_of_this_program.rb'
|
6
|
+
# EnvironmentInformation.return_version_of_this_program
|
7
|
+
# =========================================================================== #
|
8
|
+
module EnvironmentInformation
|
9
|
+
|
10
|
+
require 'yaml'
|
11
|
+
require 'environment_information/colours/colours.rb'
|
12
|
+
require 'environment_information/constants/array_tracked_components.rb'
|
13
|
+
require 'environment_information/constants/error_line.rb'
|
14
|
+
require 'environment_information/constants/misc.rb'
|
15
|
+
require 'environment_information/constants/newline.rb'
|
16
|
+
require 'environment_information/toplevel_methods/e.rb'
|
17
|
+
require 'environment_information/toplevel_methods/prefix_to_use.rb'
|
18
|
+
require 'environment_information/requires/require_the_individual_misc_components.rb'
|
19
|
+
require 'environment_information/queries/pkg_config.rb'
|
20
|
+
require 'environment_information/queries/simple_version.rb'
|
21
|
+
require 'environment_information/queries/complex_version.rb'
|
22
|
+
|
23
|
+
begin
|
24
|
+
require 'rbt/utility_scripts/report_mate_desktop_version.rb'
|
25
|
+
rescue LoadError; end
|
26
|
+
|
27
|
+
# ========================================================================= #
|
28
|
+
# === @debug
|
29
|
+
#
|
30
|
+
# This variable can be used to control whether we debug the project
|
31
|
+
# or not. It should be false by default (and upon re-destribution of
|
32
|
+
# the project to other users).
|
33
|
+
# ========================================================================= #
|
34
|
+
@debug = false
|
35
|
+
|
36
|
+
# ========================================================================= #
|
37
|
+
# === @query_to_use_for_the_individual_components
|
38
|
+
#
|
39
|
+
# Initialize our dataset here.
|
40
|
+
# ========================================================================= #
|
41
|
+
@query_to_use_for_the_individual_components = YAML.load_file(
|
42
|
+
FILE_QUERY_TO_USE_FOR_THE_INDIVIDUAL_COMPONENTS
|
43
|
+
)
|
44
|
+
|
45
|
+
# ========================================================================= #
|
46
|
+
# === EnvironmentInformation.return_version_of_this_program
|
47
|
+
#
|
48
|
+
# This is the general method that will return the version of a particular
|
49
|
+
# program at hand.
|
50
|
+
#
|
51
|
+
# The method must be able to deal with using pkg-config, but also
|
52
|
+
# querying some program's version via --version, via the commandline,
|
53
|
+
# Furthermore, some programs may require an ad-hoc fix.
|
54
|
+
# ========================================================================= #
|
55
|
+
def self.return_version_of_this_program(
|
56
|
+
this_program,
|
57
|
+
prefix_to_use = @prefix_to_use
|
58
|
+
)
|
59
|
+
prefix_to_use = prefix_to_use.dup if prefix_to_use
|
60
|
+
version = nil # ← This is the default.
|
61
|
+
if this_program.is_a? Array
|
62
|
+
this_program = this_program.flatten.first
|
63
|
+
end
|
64
|
+
# ======================================================================= #
|
65
|
+
# Next define a few aliases.
|
66
|
+
# ======================================================================= #
|
67
|
+
case this_program.to_s
|
68
|
+
when 'diff'
|
69
|
+
this_program = 'diffutils'
|
70
|
+
when 'yacc'
|
71
|
+
this_program = 'bison'
|
72
|
+
end
|
73
|
+
if ARRAY_TRACKED_NON_PROGRAMS.include? this_program
|
74
|
+
return ::EnvironmentInformation.send(this_program)
|
75
|
+
elsif @query_to_use_for_the_individual_components.has_key? this_program.to_sym
|
76
|
+
use_this_command = @query_to_use_for_the_individual_components[this_program.to_sym]
|
77
|
+
case use_this_command
|
78
|
+
# ===================================================================== #
|
79
|
+
# === :mate_desktop
|
80
|
+
#
|
81
|
+
# This entry is special.
|
82
|
+
# ===================================================================== #
|
83
|
+
when :mate_desktop
|
84
|
+
return RBT.return_mate_desktop_version_array
|
85
|
+
# ===================================================================== #
|
86
|
+
# === :pkgconfig
|
87
|
+
#
|
88
|
+
# An invocation example for this would be:
|
89
|
+
#
|
90
|
+
# x = EnvironmentInformation.return_version_of_this_program(:check) # => "0.15.2"
|
91
|
+
#
|
92
|
+
# ===================================================================== #
|
93
|
+
when :pkgconfig
|
94
|
+
version = ::EnvironmentInformation::Queries::PkgConfig.new(this_program).version?
|
95
|
+
# ===================================================================== #
|
96
|
+
# === :custom_gtk2
|
97
|
+
# ===================================================================== #
|
98
|
+
when :custom_gtk2
|
99
|
+
version = ::EnvironmentInformation::Queries::PkgConfig.new('gtk+-2.0').version?
|
100
|
+
# ===================================================================== #
|
101
|
+
# === :custom_mpc
|
102
|
+
#
|
103
|
+
# We rely on the header called mpc.h.
|
104
|
+
# ===================================================================== #
|
105
|
+
when :custom_mpc
|
106
|
+
version = ::EnvironmentInformation.return_version_of_mpc
|
107
|
+
# ===================================================================== #
|
108
|
+
# === :custom_boost
|
109
|
+
# ===================================================================== #
|
110
|
+
when :custom_boost
|
111
|
+
version = ::EnvironmentInformation.return_version_of_boost
|
112
|
+
if version.nil?
|
113
|
+
register_this_component_is_missing(:boost)
|
114
|
+
end
|
115
|
+
# ===================================================================== #
|
116
|
+
# === :version (version tag)
|
117
|
+
#
|
118
|
+
# This entry point is typically for "program_name --version"
|
119
|
+
# entries. Some of them require custom modifications.
|
120
|
+
# ===================================================================== #
|
121
|
+
when :version
|
122
|
+
# =================================================================== #
|
123
|
+
# Next enable support for AppDir layout, where programs will
|
124
|
+
# ultimately reside in the same directory.
|
125
|
+
# =================================================================== #
|
126
|
+
unless prefix_to_use.empty?
|
127
|
+
prefix_to_use << "#{this_program.to_s.capitalize}/Current/bin/"
|
128
|
+
end
|
129
|
+
cmd = "#{prefix_to_use}#{this_program} --version #{ERROR_LINE}"
|
130
|
+
if @debug
|
131
|
+
e Colours.crimson('DEBUG for the prefix-value in use: ')+
|
132
|
+
Colours.steelblue(cmd)
|
133
|
+
end
|
134
|
+
version = ::EnvironmentInformation::Queries::SimpleVersion.new(this_program) {{
|
135
|
+
prefix_to_use: prefix_to_use
|
136
|
+
}}.version?
|
137
|
+
# ===================================================================== #
|
138
|
+
# Next we will handle special programs, such as "swig -v" and similar.
|
139
|
+
# This is done by class ComplexVersion since as of 29.08.2020.
|
140
|
+
# ===================================================================== #
|
141
|
+
else # else tag
|
142
|
+
if use_this_command.start_with?('pkg-config')
|
143
|
+
version = ::EnvironmentInformation::Queries::PkgConfig.new(this_program).version?
|
144
|
+
else
|
145
|
+
cmd = "#{@prefix_to_use}#{use_this_command} #{ERROR_LINE}"
|
146
|
+
version = ::EnvironmentInformation::Queries::ComplexVersion.new(this_program) {{
|
147
|
+
prefix_to_use: prefix_to_use
|
148
|
+
}}.version?
|
149
|
+
end
|
150
|
+
end
|
151
|
+
else
|
152
|
+
e 'Not registered any key for the program: '+this_program.to_s
|
153
|
+
e 'This is currently not allowed - please add this missing information.'
|
154
|
+
exit
|
155
|
+
end
|
156
|
+
result = version
|
157
|
+
if result
|
158
|
+
unless result.include? COMMAND_NOT_FOUND
|
159
|
+
result = result.dup if result.frozen?
|
160
|
+
result.strip!
|
161
|
+
end
|
162
|
+
end
|
163
|
+
if result and (result == 'found' or result == 'foud')
|
164
|
+
register_this_component_is_missing(this_program)
|
165
|
+
elsif result and result.include?(COMMAND_NOT_FOUND)
|
166
|
+
register_this_component_is_missing(this_program)
|
167
|
+
# ======================================================================= #
|
168
|
+
# Check whether pkg-config is available or not.
|
169
|
+
# ======================================================================= #
|
170
|
+
elsif result and (
|
171
|
+
result.include?(PKGCONFIG_COMMAND_NOT_FOUND) or
|
172
|
+
result.include?(NO_SUCH_FILE_OR_DIRECTORY)
|
173
|
+
)
|
174
|
+
register_this_component_is_missing(this_program)
|
175
|
+
elsif result.nil?
|
176
|
+
register_this_component_is_missing(this_program)
|
177
|
+
end
|
178
|
+
return result
|
179
|
+
end; self.instance_eval { alias version_for? return_version_of_this_program } # === EnvironmentInformation,version_for?
|
180
|
+
|
181
|
+
end
|
182
|
+
|
183
|
+
if __FILE__ == $PROGRAM_NAME
|
184
|
+
puts EnvironmentInformation.return_version_of_this_program(ARGV)
|
185
|
+
end # envireturnversionofthisprogram ruby
|
186
|
+
# envireturnversionofthisprogram ethtools
|
@@ -0,0 +1,192 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'environment_information/toplevel_methods/show_all_available_components.rb'
|
6
|
+
# EnvironmentInformation.show_all_available_components
|
7
|
+
# =========================================================================== #
|
8
|
+
module EnvironmentInformation
|
9
|
+
|
10
|
+
# ========================================================================= #
|
11
|
+
# The next require also pulls in the misc/ components.
|
12
|
+
# ========================================================================= #
|
13
|
+
require 'environment_information/toplevel_methods/return_version_of_this_program.rb'
|
14
|
+
require 'environment_information/constants/array_tracked_components.rb'
|
15
|
+
require 'environment_information/constants/regex.rb'
|
16
|
+
require 'environment_information/toplevel_methods/hash.rb'
|
17
|
+
require 'environment_information/toplevel_methods/autogenerate_all_relevant_methods.rb'
|
18
|
+
require 'environment_information/toplevel_methods/misc.rb'
|
19
|
+
require 'environment_information/toplevel_methods/replay_from_the_stored_file.rb'
|
20
|
+
|
21
|
+
begin
|
22
|
+
require 'rbt/requires/swift_version.rb'
|
23
|
+
rescue LoadError; end
|
24
|
+
|
25
|
+
# ========================================================================= #
|
26
|
+
# Add colours-support next:
|
27
|
+
# ========================================================================= #
|
28
|
+
require 'environment_information/colours/colours.rb'
|
29
|
+
require 'environment_information/queries/pkg_config.rb'
|
30
|
+
require 'environment_information/toplevel_methods/e.rb'
|
31
|
+
require 'environment_information/toplevel_methods/is_on_roebe.rb'
|
32
|
+
require 'environment_information/toplevel_methods/register_this_component_is_missing.rb'
|
33
|
+
|
34
|
+
# ========================================================================= #
|
35
|
+
# === EnvironmentInformation.show_all_available_components
|
36
|
+
#
|
37
|
+
# This method will quickly and easily show all available (registered)
|
38
|
+
# components. If you need more fine-tuning when you wish to display
|
39
|
+
# the main dataset at hand, then you should use other methods that
|
40
|
+
# are also a bit more complex. This method here is really just a
|
41
|
+
# fast version-display overview.
|
42
|
+
#
|
43
|
+
# The second argument to this method contains the programs that we
|
44
|
+
# wish to display through this method.
|
45
|
+
# ========================================================================= #
|
46
|
+
def self.show_all_available_components(
|
47
|
+
n_ljust = 18,
|
48
|
+
show_these_components = ARRAY_DEFAULT_PROGRAMS_ON_LINUX+
|
49
|
+
ARRAY_TRACKED_PROGRAMS,
|
50
|
+
use_colours = use_colours?
|
51
|
+
)
|
52
|
+
clear_main_hash
|
53
|
+
if show_these_components.is_a? Array
|
54
|
+
show_these_components.flatten!
|
55
|
+
end
|
56
|
+
# ======================================================================= #
|
57
|
+
# The next variable determines whether we will also compare the
|
58
|
+
# program versions.
|
59
|
+
# ======================================================================= #
|
60
|
+
compare_program_versions = false
|
61
|
+
default_nljust_value = 30 # ← Detemine default padding.
|
62
|
+
if n_ljust.is_a?(Array) and n_ljust.empty?
|
63
|
+
n_ljust = default_nljust_value # Use the default value in this case.
|
64
|
+
end
|
65
|
+
# ======================================================================= #
|
66
|
+
# First we will treat n_ljust as a commandline-flag if it is a String
|
67
|
+
# and additionally begins with "--".
|
68
|
+
# ======================================================================= #
|
69
|
+
if n_ljust.is_a?(Array) and n_ljust.first.start_with?('--')
|
70
|
+
_ = n_ljust.first
|
71
|
+
case _
|
72
|
+
# ===================================================================== #
|
73
|
+
# === --compare-to-program-versions
|
74
|
+
#
|
75
|
+
# To invoke this, try:
|
76
|
+
#
|
77
|
+
# show_components --compare
|
78
|
+
# envi --compare-version
|
79
|
+
#
|
80
|
+
# ===================================================================== #
|
81
|
+
when *ARRAY_COMPARE_PROGRAM_VERSIONS
|
82
|
+
compare_program_versions = true
|
83
|
+
n_ljust = default_nljust_value
|
84
|
+
# ===================================================================== #
|
85
|
+
# === --xorg
|
86
|
+
# ===================================================================== #
|
87
|
+
when /^-?-?xorg$/i
|
88
|
+
show_these_components = ::EnvironmentInformation.xorg_components?
|
89
|
+
n_ljust = default_nljust_value
|
90
|
+
# ===================================================================== #
|
91
|
+
# === --help
|
92
|
+
#
|
93
|
+
# Invocation example:
|
94
|
+
#
|
95
|
+
# showcomponents --help
|
96
|
+
#
|
97
|
+
# ===================================================================== #
|
98
|
+
when /^-?-?help$/i
|
99
|
+
e 'The following options are available for bin/fast_envi (fenvi):'
|
100
|
+
e
|
101
|
+
e ' --xorg # show only the xorg-components'
|
102
|
+
e ' --compare-to-program-versions # also compare the program versions'
|
103
|
+
e
|
104
|
+
exit
|
105
|
+
end
|
106
|
+
end
|
107
|
+
e
|
108
|
+
uniq = show_these_components.uniq
|
109
|
+
uniq.sort.each {|this_program|
|
110
|
+
use_this_name_for_send = "return_version_of_#{this_program}"
|
111
|
+
# ===================================================================== #
|
112
|
+
# Next, add the name of the program at hand, onto the left hand side:
|
113
|
+
# ===================================================================== #
|
114
|
+
result = this_program.to_s.ljust(n_ljust)
|
115
|
+
if use_colours
|
116
|
+
result = ::EnvironmentInformation.colourize_and_pad_the_left_side(result)
|
117
|
+
end
|
118
|
+
# ===================================================================== #
|
119
|
+
# Some components may not be installed on the user's computer system,
|
120
|
+
# which we have to keep in mind in the following code. This is
|
121
|
+
# why we will first apply the .send(), before checking whether
|
122
|
+
# the program at hand is actually missing or not.
|
123
|
+
# ===================================================================== #
|
124
|
+
result_of_send = send(use_this_name_for_send)
|
125
|
+
if result_of_send
|
126
|
+
result_of_send = result_of_send.dup if result_of_send.frozen?
|
127
|
+
result_of_send.strip!
|
128
|
+
end
|
129
|
+
@hash_available_programs[this_program.to_sym] = result_of_send.to_s
|
130
|
+
right_component = ''.dup
|
131
|
+
if @array_this_component_is_missing.include?(this_program.to_sym)
|
132
|
+
right_component << "not installed (or otherwise not found)".ljust(12)
|
133
|
+
else
|
134
|
+
right_component << result_of_send.ljust(12) if result_of_send
|
135
|
+
end
|
136
|
+
if use_colours
|
137
|
+
# =================================================================== #
|
138
|
+
# We will distinguish between components that have been found and
|
139
|
+
# components that have not been found.
|
140
|
+
# =================================================================== #
|
141
|
+
if right_component.include?('not installed')
|
142
|
+
right_component = ::Colours.send(:mediumslateblue, right_component)
|
143
|
+
else
|
144
|
+
right_component = ::Colours.send(colour_for_the_right_side, right_component)
|
145
|
+
end
|
146
|
+
end
|
147
|
+
result = result.dup if result.frozen?
|
148
|
+
result << right_component
|
149
|
+
if compare_program_versions
|
150
|
+
if is_this_program_included?(this_program)
|
151
|
+
registered_local_version = RBT.swift_return_version_of_this_program(this_program.to_sym).to_s.dup
|
152
|
+
if registered_local_version.include? 'v'
|
153
|
+
# =============================================================== #
|
154
|
+
# Modify entries such as 'v12.15.0' into '12.15.0'.
|
155
|
+
# =============================================================== #
|
156
|
+
registered_local_version.delete!('v')
|
157
|
+
end
|
158
|
+
case this_program.to_s
|
159
|
+
when 'gtk2'
|
160
|
+
registered_local_version = query_pkgconfig_version_for(:gtk2)
|
161
|
+
else
|
162
|
+
if result_of_send.nil?
|
163
|
+
# ^^^ This is missing, then, so it will be ignored.
|
164
|
+
elsif registered_local_version <= result_of_send
|
165
|
+
# This is ok.
|
166
|
+
else
|
167
|
+
result <<
|
168
|
+
royalblue(
|
169
|
+
"\n "\
|
170
|
+
"^^^ This could be updated; the version in "\
|
171
|
+
"RBT is: #{mediumpurple(registered_local_version)}"
|
172
|
+
)
|
173
|
+
end
|
174
|
+
end
|
175
|
+
end
|
176
|
+
end
|
177
|
+
# ===================================================================== #
|
178
|
+
# Finally display our findings to the end user.
|
179
|
+
# ===================================================================== #
|
180
|
+
e result
|
181
|
+
}
|
182
|
+
e
|
183
|
+
if is_on_roebe? # And store it on my home system too.
|
184
|
+
::EnvironmentInformation.store_relevant_files
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
end
|
189
|
+
|
190
|
+
if __FILE__ == $PROGRAM_NAME
|
191
|
+
EnvironmentInformation.show_all_available_components(ARGV)
|
192
|
+
end # showcomponents --compare
|
@@ -0,0 +1,24 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'environment_information/toplevel_methods/write_what_into.rb'
|
6
|
+
# EnvironmentInformation.write_what_into
|
7
|
+
# =========================================================================== #
|
8
|
+
module EnvironmentInformation
|
9
|
+
|
10
|
+
require 'environment_information/toplevel_methods/e.rb'
|
11
|
+
|
12
|
+
# ========================================================================= #
|
13
|
+
# === EnvironmentInformation.write_what_into
|
14
|
+
# ========================================================================= #
|
15
|
+
def self.write_what_into(what, into)
|
16
|
+
what = what.join("\n") if what.is_a? Array
|
17
|
+
File.open(into, 'w+') {|entry| entry.write(what) }
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
if __FILE__ == $PROGRAM_NAME
|
23
|
+
EnvironmentInformation.write_what_into(ARGV, 'test_this.md')
|
24
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'environment_information/version/version.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
module EnvironmentInformation
|
8
|
+
|
9
|
+
# ========================================================================= #
|
10
|
+
# === EnvironmentInformation::VERSION
|
11
|
+
# ========================================================================= #
|
12
|
+
VERSION = '1.4.29'
|
13
|
+
|
14
|
+
# ========================================================================= #
|
15
|
+
# === LAST_UPDATE
|
16
|
+
# ========================================================================= #
|
17
|
+
LAST_UPDATE = '26.11.2020'
|
18
|
+
|
19
|
+
# ========================================================================= #
|
20
|
+
# === EnvironmentInformation::URL_TO_THE_DOCUMENTATION
|
21
|
+
# ========================================================================= #
|
22
|
+
URL_TO_THE_DOCUMENTATION =
|
23
|
+
"https://www.rubydoc.info/gems/#{self.to_s.split(/(?=[A-Z])/).join('_').downcase}/#{VERSION}"
|
24
|
+
|
25
|
+
end
|
@@ -0,0 +1,213 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# === EnvironmentInformation::Sinatra
|
6
|
+
# =========================================================================== #
|
7
|
+
# require 'environment_information/www/sinatra_interface.rb'
|
8
|
+
# =========================================================================== #
|
9
|
+
require 'sinatra/base.rb'
|
10
|
+
require 'beautiful_url'
|
11
|
+
require 'environment_information/requires/require_the_environment_information_project.rb'
|
12
|
+
|
13
|
+
module EnvironmentInformation
|
14
|
+
|
15
|
+
class Sinatra < Sinatra::Base
|
16
|
+
|
17
|
+
include Colours
|
18
|
+
include Colours::E
|
19
|
+
begin
|
20
|
+
require 'html_tags'
|
21
|
+
include HtmlTags::BaseModule
|
22
|
+
rescue LoadError; end
|
23
|
+
|
24
|
+
# ========================================================================= #
|
25
|
+
# === USE_THIS_PORT
|
26
|
+
# ========================================================================= #
|
27
|
+
USE_THIS_PORT = '4567'
|
28
|
+
|
29
|
+
set :port, USE_THIS_PORT
|
30
|
+
|
31
|
+
# ========================================================================= #
|
32
|
+
# === initialize
|
33
|
+
# ========================================================================= #
|
34
|
+
def initialize
|
35
|
+
super()
|
36
|
+
reset
|
37
|
+
if ::EnvironmentInformation.is_on_roebe?
|
38
|
+
require 'open_in_browser'
|
39
|
+
# ===================================================================== #
|
40
|
+
# Tell us which port will be used:
|
41
|
+
# ===================================================================== #
|
42
|
+
target = "http://localhost:#{USE_THIS_PORT}/"
|
43
|
+
e sfancy(target)
|
44
|
+
Thread.new {
|
45
|
+
sleep 1.0
|
46
|
+
OpenInBrowser[target]
|
47
|
+
}
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
# ========================================================================= #
|
52
|
+
# === reset
|
53
|
+
# ========================================================================= #
|
54
|
+
def reset
|
55
|
+
end
|
56
|
+
|
57
|
+
# ========================================================================= #
|
58
|
+
# === html_end
|
59
|
+
# ========================================================================= #
|
60
|
+
def html_end
|
61
|
+
'<idv></body></html>'
|
62
|
+
end
|
63
|
+
|
64
|
+
# ========================================================================= #
|
65
|
+
# === return_html_start
|
66
|
+
#
|
67
|
+
# This method will include all parts up to the first main <div>
|
68
|
+
# element of the webpage.
|
69
|
+
# ========================================================================= #
|
70
|
+
def return_html_start
|
71
|
+
"<html><head><title>\n"\
|
72
|
+
"Sinatra-Interface of the EnvironmentInformation project\n"\
|
73
|
+
"</title></head><body>"\
|
74
|
+
"<div style=\"padding:2px; margin-left:0.5em\">"
|
75
|
+
end
|
76
|
+
|
77
|
+
# ========================================================================= #
|
78
|
+
# === / Entry point
|
79
|
+
#
|
80
|
+
# This is the root of our web-application.
|
81
|
+
# ========================================================================= #
|
82
|
+
get('/') {
|
83
|
+
# ======================================================================= #
|
84
|
+
# We will initialize the main Hash next, that is kept in
|
85
|
+
# EnvironmentInformation.
|
86
|
+
# ======================================================================= #
|
87
|
+
::EnvironmentInformation.build_up_and_return_the_main_hash
|
88
|
+
inner_content =
|
89
|
+
h2('Displaying information about the local computersystem')+
|
90
|
+
uniform_p_tag('Operating system in use:',
|
91
|
+
::EnvironmentInformation.operating_system?)+
|
92
|
+
uniform_p_tag('OS Bit type (architecture):',
|
93
|
+
::EnvironmentInformation.bit_type?)+
|
94
|
+
uniform_p_tag('CPU Model:',
|
95
|
+
::EnvironmentInformation.cpu_model?)+
|
96
|
+
uniform_p_tag('CFLAGS in use:',
|
97
|
+
::EnvironmentInformation.cflags_in_use?)+
|
98
|
+
uniform_p_tag('RAM (in MB):',
|
99
|
+
::EnvironmentInformation.ram?)+
|
100
|
+
uniform_p_tag('Screen resolution:',
|
101
|
+
::EnvironmentInformation.screen_resolution?.to_s)
|
102
|
+
inner_content = inner_content.dup
|
103
|
+
# ======================================================================= #
|
104
|
+
# Next, add the individual components:
|
105
|
+
# ======================================================================= #
|
106
|
+
%i(
|
107
|
+
gcc
|
108
|
+
glibc
|
109
|
+
linux_kernel
|
110
|
+
binutils
|
111
|
+
awk
|
112
|
+
ruby
|
113
|
+
rubygems
|
114
|
+
coreutils
|
115
|
+
diffutils
|
116
|
+
bison
|
117
|
+
boost
|
118
|
+
cmake
|
119
|
+
file
|
120
|
+
flex
|
121
|
+
intltool
|
122
|
+
gettext
|
123
|
+
grep
|
124
|
+
gnupg
|
125
|
+
).each {|this_component|
|
126
|
+
inner_content << sinatra_paragraph_showing_this_component(this_component).to_s
|
127
|
+
}
|
128
|
+
return_html_start+
|
129
|
+
div(css_style: 'font-size: normal; margin-top:1px; margin-bottom: 1px;') {
|
130
|
+
inner_content
|
131
|
+
}+
|
132
|
+
html_end
|
133
|
+
}
|
134
|
+
|
135
|
+
# ========================================================================= #
|
136
|
+
# === uniform_p_tag
|
137
|
+
# ========================================================================= #
|
138
|
+
def uniform_p_tag(i, content)
|
139
|
+
i = i.to_s
|
140
|
+
unless i.end_with? ':'
|
141
|
+
i = i.dup if i.frozen?
|
142
|
+
i << ':'
|
143
|
+
end
|
144
|
+
p(
|
145
|
+
"#{i}<br><b style=\"color: darkblue; margin-left:1.5em\">#{content}"\
|
146
|
+
"</b>",
|
147
|
+
css_style: 'margin-left: 2.5em;
|
148
|
+
margin: 4px;
|
149
|
+
padding: 5px;
|
150
|
+
padding-top: 0.2em'
|
151
|
+
)
|
152
|
+
end
|
153
|
+
|
154
|
+
# ========================================================================= #
|
155
|
+
# === sinatra_paragraph_showing_this_component
|
156
|
+
#
|
157
|
+
# This method was added primarily so that we can use a unified (and
|
158
|
+
# consistent) style for display.
|
159
|
+
# ========================================================================= #
|
160
|
+
def sinatra_paragraph_showing_this_component(
|
161
|
+
i = :gcc
|
162
|
+
)
|
163
|
+
content = "return_version_of_#{i}".to_s
|
164
|
+
content = ::EnvironmentInformation.send(content)
|
165
|
+
# ======================================================================= #
|
166
|
+
# Next, we grab it from the main Hash.
|
167
|
+
# ======================================================================= #
|
168
|
+
case i
|
169
|
+
when :awk,
|
170
|
+
:bison,
|
171
|
+
:boost,
|
172
|
+
:coreutils,
|
173
|
+
:binutils,
|
174
|
+
:cmake,
|
175
|
+
:diffutils,
|
176
|
+
:findutils,
|
177
|
+
:file,
|
178
|
+
:flex,
|
179
|
+
:gcc,
|
180
|
+
:gettext,
|
181
|
+
:glibc,
|
182
|
+
:grep,
|
183
|
+
:gnupg,
|
184
|
+
:intltool,
|
185
|
+
:ruby,
|
186
|
+
:rubygems
|
187
|
+
i = i.to_s.capitalize+' Version'
|
188
|
+
when :linux_kernel
|
189
|
+
i = 'Linux Kernel'
|
190
|
+
end
|
191
|
+
# ======================================================================= #
|
192
|
+
# Finally return the proper <p> tag:
|
193
|
+
# ======================================================================= #
|
194
|
+
uniform_p_tag(i, content)
|
195
|
+
end
|
196
|
+
|
197
|
+
end
|
198
|
+
|
199
|
+
# =========================================================================== #
|
200
|
+
# === EnvironmentInformation.start_sinatra_interface
|
201
|
+
#
|
202
|
+
# This method can be used to start the sinatra interface.
|
203
|
+
# =========================================================================== #
|
204
|
+
def self.start_sinatra_interface
|
205
|
+
puts 'Trying to start the sinatra-interface of EnvironmentInformation next.'
|
206
|
+
::EnvironmentInformation::Sinatra.run!
|
207
|
+
end
|
208
|
+
|
209
|
+
end
|
210
|
+
|
211
|
+
if __FILE__ == $PROGRAM_NAME
|
212
|
+
EnvironmentInformation.start_sinatra_interface
|
213
|
+
end # envi --sinatra
|
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# This small .cgi file just demonstrates how to use the information
|
6
|
+
# from the EnvironmentInformation project in a .cgi page.
|
7
|
+
# =========================================================================== #
|
8
|
+
# http://localhost/DATA/PROGRAMMING_LANGUAGES/RUBY/src/environment_information/lib/environment_information/www/webobject_interface.cgi
|
9
|
+
# =========================================================================== #
|
10
|
+
require 'web_object/autoinclude'
|
11
|
+
|
12
|
+
use_this_title = 'WebObject interface to EnvironmentInformation'
|
13
|
+
|
14
|
+
english {
|
15
|
+
title use_this_title
|
16
|
+
fav 'PC/RUBY/RUBY_FAVICON.png'
|
17
|
+
body_css_class 's4px padt2px marpad2px VERDANAs'
|
18
|
+
body_css_style 'background-color: #d3d2d1;'
|
19
|
+
font_size 'def'
|
20
|
+
|
21
|
+
doc('mar0px') {
|
22
|
+
h1 sg(:buero_klammer, '','drag_buero_klammer')+
|
23
|
+
use_this_title
|
24
|
+
# ========================================================================= #
|
25
|
+
# Tap into showing the information from the EnvironmentInformation project.
|
26
|
+
# This is actually built into WebObject since as of February 2020.
|
27
|
+
# ========================================================================= #
|
28
|
+
WebObject.display_information_about_the_environment
|
29
|
+
}}}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# =========================================================================== #
|
2
|
+
# x = YAML.load_file('array_default_programs_on_linux.yml')
|
3
|
+
# =========================================================================== #
|
4
|
+
|
5
|
+
- !ruby/symbol operating_system
|
6
|
+
- !ruby/symbol operating_system_bit_type
|
7
|
+
- !ruby/symbol cpuinfo
|
8
|
+
- !ruby/symbol ram
|
9
|
+
- !ruby/symbol screen_resolution
|
10
|
+
- !ruby/symbol cflags
|
11
|
+
- !ruby/symbol gcc
|
12
|
+
- !ruby/symbol glibc
|
13
|
+
- !ruby/symbol linux
|
14
|
+
- !ruby/symbol binutils
|