-
Notifications
You must be signed in to change notification settings - Fork 310
/
Copy pathargs.ts
107 lines (94 loc) · 2.9 KB
/
args.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
import { LogLevel } from "@pnp/logging";
export function getProcessArgs(): IProcessArgs {
// we need to load up the appropriate settings based on where we are running
let mode: "cmd" | "online" | "online-noweb" = "cmd";
let site: string = null;
let skipWeb = false;
let deleteWeb = false;
let logging = LogLevel.Off;
let deleteAllWebs = false;
let record = false;
let recordMode: "read" | "write" = "read";
for (let i = 0; i < process.argv.length; i++) {
const arg = process.argv[i];
if (/^--mode/i.test(arg)) {
switch (process.argv[++i]) {
case "pr":
mode = "online-noweb";
break;
case "push":
mode = "online";
}
}
if (/^--site/i.test(arg)) {
site = process.argv[++i];
}
if (/^--skip-web/i.test(arg)) {
skipWeb = true;
}
if (/^--cleanup/i.test(arg)) {
deleteWeb = true;
}
if (/^--deleteAllWebs/i.test(arg)) {
deleteAllWebs = true;
}
if (/^--logging/i.test(arg)) {
if (/Verbose|Info|Warning|Error/i.test(process.argv[i + 1])) {
switch (process.argv[++i].toLowerCase()) {
case "verbose":
logging = LogLevel.Verbose;
break;
case "info":
logging = LogLevel.Info;
break;
case "warning":
logging = LogLevel.Warning;
break;
case "error":
logging = LogLevel.Error;
break;
}
} else {
logging = LogLevel.Info;
}
}
if (/^--record/i.test(arg)) {
record = true;
if (/write/i.test(process.argv[i + 1])) {
switch (process.argv[++i].toLowerCase()) {
case "write":
recordMode = "write";
break;
}
}
}
}
const processArgs = {
mode,
site,
skipWeb,
deleteWeb,
logging,
deleteAllWebs,
record,
recordMode,
};
console.log("*****************************");
console.log("Testing command args:");
const keys = Object.keys(processArgs);
for (let i = 0; i < keys.length; i++) {
console.log(`${keys[i]}: ${processArgs[keys[i]]}`);
}
console.log("*****************************");
return processArgs;
}
export interface IProcessArgs {
mode: "cmd" | "online" | "online-noweb";
site: string | null;
skipWeb: boolean;
deleteWeb: boolean;
logging: LogLevel;
deleteAllWebs: boolean;
record: boolean;
recordMode: "read" | "write";
}