]> git.armaanb.net Git - gen-shell.git/blob - src/diag.cpp
added install instructions
[gen-shell.git] / src / diag.cpp
1 ////////////////////////////////////////////////////////////////////////////////
2 //
3 // Copyright 2006 - 2017, Paul Beckingham, Federico Hernandez, 2020 Armaan Bhojwani.
4 //
5 // Permission is hereby granted, free of charge, to any person obtaining a copy
6 // of this software and associated documentation files (the "Software"), to deal
7 // in the Software without restriction, including without limitation the rights
8 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 // copies of the Software, and to permit persons to whom the Software is
10 // furnished to do so, subject to the following conditions:
11 //
12 // The above copyright notice and this permission notice shall be included
13 // in all copies or substantial portions of the Software.
14 //
15 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
16 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18 // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 // SOFTWARE.
22 //
23 // http://www.opensource.org/licenses/mit-license.php
24 //
25 ////////////////////////////////////////////////////////////////////////////////
26
27 #include <cmake.h>
28 #include <iostream>
29 #include <string>
30 #include <vector>
31 #include <cstring>
32 #include <stdlib.h>
33 #include <FS.h>
34 #include <Color.h>
35 #include <shared.h>
36 #include <format.h>
37
38 #ifdef HAVE_READLINE
39 #include <readline/readline.h>
40 #include <readline/history.h>
41 #endif
42
43 ////////////////////////////////////////////////////////////////////////////////
44 int cmdDiagnostics ()
45 {
46   Color bold ("bold");
47
48   std::cout << "\n"
49             << bold.colorize (PACKAGE_STRING)
50             << "\n"
51             << "   " << "Platform: " << osName ()
52             << "\n\n";
53
54   // Compiler.
55   std::cout << bold.colorize ("Compiler")
56             << "\n"
57 #ifdef __VERSION__
58             << "    " << "Version: "
59             << __VERSION__ << "\n"
60 #endif
61             << "       " << "Caps:"
62 #ifdef __STDC__
63             << " +stdc"
64 #endif
65 #ifdef __STDC_HOSTED__
66             << " +stdc_hosted"
67 #endif
68 #ifdef __STDC_VERSION__
69             << " +" << __STDC_VERSION__
70 #endif
71 #ifdef _POSIX_VERSION
72             << " +" << _POSIX_VERSION
73 #endif
74 #ifdef _POSIX2_C_VERSION
75             << " +" << _POSIX2_C_VERSION
76 #endif
77 #ifdef _ILP32
78             << " +ILP32"
79 #endif
80 #ifdef _LP64
81             << " +LP64"
82 #endif
83             << " +c"      << 8 * sizeof (char)
84             << " +i"      << 8 * sizeof (int)
85             << " +l"      << 8 * sizeof (long)
86             << " +vp"     << 8 * sizeof (void*)
87             << " +time_t" << 8 * sizeof (time_t)
88             << "\n";
89
90   // Compiler compliance level.
91   std::cout << " Compliance: "
92             << cppCompliance ()
93             << "\n\n";
94
95   std::cout << bold.colorize ("Build Features")
96             << "\n";
97
98   std::cout << "libreadline: "
99 #ifdef HAVE_READLINE
100 #ifdef RL_VERSION_MAJOR
101             << RL_VERSION_MAJOR << "." << RL_VERSION_MINOR
102 #elif defined RL_READLINE_VERSION
103             << "0x" << std::hex << RL_READLINE_VERSION
104 #endif
105 #else
106             << "n/a"
107 #endif
108             << "\n";
109
110   std::cout << " Build type: "
111 #ifdef CMAKE_BUILD_TYPE
112             << CMAKE_BUILD_TYPE
113 #else
114             << "-"
115 #endif
116             << "\n\n";
117
118   std::cout << bold.colorize ("Configuration")
119             << "\n";
120
121   auto env = getenv ("TASKRC");
122   std::cout << "     TASKRC: "
123             << (env ? env : "")
124             << "\n";
125
126   env = getenv ("TASKDATA");
127   std::cout << "   TASKDATA: "
128             << (env ? env : "")
129             << "\n";
130 }
131
132 ////////////////////////////////////////////////////////////////////////////////