-
Notifications
You must be signed in to change notification settings - Fork 0
/
updateVsCodeStyles.ts
119 lines (92 loc) · 2.78 KB
/
updateVsCodeStyles.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
108
109
110
111
112
113
114
115
116
117
118
119
import { exists } from "@std/fs/exists"
import { copy } from "@std/fs/copy"
type Options = {
font?: string
css?: string
backup?: boolean
}
type Result =
| {
type: "ERROR"
message: string
}
| {
type: "SUCCESSFUL"
tasks: string[]
}
export const updateVsCodeStyles = async (
options?: Options
): Promise<Result> => {
const tasks: string[] = []
if (Deno.build.os !== "windows") {
return {
type: "ERROR",
message: "This script only works on Windows!",
}
}
const HOME_DIR = Deno.env.get("USERPROFILE")
if (!HOME_DIR) {
return {
type: "ERROR",
message: 'Could not find "USERPROFILE"!',
}
}
const WORKBENCH_DIR = `${HOME_DIR}\\AppData\\Local\\Programs\\Microsoft VS Code\\resources\\app\\out\\vs\\workbench`
const CSS_PATH = `${WORKBENCH_DIR}\\workbench.desktop.main.css`
const CSS_BACKUP_PATH = `${WORKBENCH_DIR}\\workbench.desktop.main.backup.css`
if (options?.["backup"]) {
if (!(await exists(CSS_BACKUP_PATH))) {
return {
type: "ERROR",
message: `Could not find: "${CSS_BACKUP_PATH}".`,
}
}
tasks.push(`✅ Found backup: "${CSS_BACKUP_PATH}".`)
await copy(CSS_BACKUP_PATH, CSS_PATH, {
overwrite: true,
})
tasks.push(`✅ Reverted changes: "${CSS_BACKUP_PATH}".`)
await Deno.remove(CSS_BACKUP_PATH)
tasks.push(`✅ Deleted backup: "${CSS_BACKUP_PATH}".`)
return {
type: "SUCCESSFUL",
tasks,
}
}
if (!(await exists(CSS_PATH))) {
return {
type: "ERROR",
message: `Could not find "${CSS_PATH}"!`,
}
}
tasks.push(`✅ Found: "${CSS_PATH}".`)
if (!(await exists(CSS_BACKUP_PATH))) {
await copy(CSS_PATH, CSS_BACKUP_PATH)
tasks.push(`✅ Created backup: "${CSS_BACKUP_PATH}".`)
}
const CSS_CONTENT = await Deno.readTextFile(CSS_BACKUP_PATH)
let newCssContent = CSS_CONTENT
if (options?.["font"]) {
newCssContent = newCssContent.replace(
"Segoe WPC,Segoe UI,sans-serif",
options["font"]
)
newCssContent +=
"\n" +
`
.composite.viewlet .scm-editor-placeholder,
.composite.viewlet .view-lines.monaco-mouse-cursor-text {
font-family: ${options["font"]} !important;
}
`
}
if (options?.["css"]) {
newCssContent += "\n" + options["css"]
}
await Deno.writeTextFile(CSS_PATH, newCssContent)
tasks.push("✅ The file content was rewritten.")
return {
type: "SUCCESSFUL",
tasks,
}
}