Phasor 3.3.0
Stack VM based Programming Language
Loading...
Searching...
No Matches
phasor_help.phs
Go to the documentation of this file.
1using("stdio", "stdsys", "stdstr", "stdtype", "stdfile", "stdmeta");
2
3fn getDocCmd(part: string, type: int) -> string {
4 var sb = sb_new();
5 var os = sys_os();
6 if (os == "win32") {
7 sb_append(sb, "C:/Program%20Files/Phasor%20Programming%20Language/man/man");
8 sb_append(sb, type);
9 sb_append(sb, "/");
10 sb_append(sb, part);
11 sb_append(sb, ".");
12 sb_append(sb, type);
13 sb_append(sb, ".");
14 sb_append(sb, "pdf");
15 var path = sb_to_string(sb);
16 sb_free(sb);
17 return concat("\"start file:///", concat(path, "\""));
18 } else if (os == "Linux" || os == "FreeBSD" || os == "UNIX" || os == "Darwin") {
19 sb_append(sb, type);
20 sb_append(sb, " ");
21 sb_append(sb, part);
22 var args = sb_to_string(sb);
23 sb_free(sb);
24 return concat("man ", args);
25 } else {
26 putf_error("Could not find documentation for %s(%d) on %s", part, type, os);
27 shutdown(-1);
28 return "cd ."; // noop if somehow reached
29 }
30}
31
32fn showHelp(programName: string, exitCode: int) -> void {
33 var winStr = "C:\\Program Files\\Phasor Programming Language\\man\\man<section>\n \<page>.<section>.pdf";
34 var unixStr = "/usr/share/man/man<section>/<page>.<section>(.gz)";
35 var osxStr = "/usr/local/share/man/man<section>/<page>.<section>(.gz)";
36 var osStr;
37 var os = sys_os();
38 if (os == "win32") {
39 osStr = winStr;
40 } else if (os == "Linux" || os == "FreeBSD" || os == "UNIX") {
41 osStr = unixStr;
42 } else if (os == "Darwin") {
43 osStr = osxStr;
44 } else {
45 osStr = "https://phasor-docs.pages.dev/man?f=<page>.<section>";
46 }
47
48 var helpStr = c_fmt(`
49
50PHASOR-HELP(1) Phasor %s PHASOR-HELP(1)
51
52NAME
53 %s - open Phasor manual pages
54
55SYNOPSIS
56 %s <page> <section>
57 %s --help
58 %s -h
59
60ARGUMENTS
61 <page>
62 The name of the manual page to open.
63
64 <section>
65 The manual section number. This is an integer corresponding to
66 standard manual sections.
67
68EXAMPLES
69 %s phasor 1
70 Open the section 1 manual page for "phasor".
71
72 %s phsb 5
73 Open the section 5 manual page for "phsb".
74
75 %s phasorstd_io 3
76 Open the section 3 manual page for "phasorstd_io".
77
78FILES
79 %s
80
81SEE ALSO
82 MAN(1)
83
84 - 1 -
85`, phs_version(), programName, programName, programName, programName, programName, programName, programName, osStr);
86 if (exitCode == 0) puts(helpStr);
87 else puts_error(helpStr);
88 shutdown(exitCode);
89}
90
91fn main() -> int {
92 if (sys_argc() == 3) {
93 var page = to_string(sys_argv(1));
94 var section = to_int(sys_argv(2));
95 sys_shell(getDocCmd(page, section));
96 } else {
97 showHelp(fstem(sys_argv(0)), 1);
98 }
99 return 0;
100}
101
102shutdown(main());