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