hackmud-script-manager 0.20.4-9596502 → 0.20.4-9d6d467
Sign up to get free protection for your applications and to get access to all the features.
- package/bin/hsm.js +13 -5
- package/package.json +1 -1
- package/push.d.ts +5 -1
- package/push.js +12 -6
package/bin/hsm.js
CHANGED
@@ -12,7 +12,7 @@ import { pull } from "../pull.js"
|
|
12
12
|
import { syncMacros } from "../syncMacros.js"
|
13
13
|
import "@samual/lib/readDirectoryWithStats"
|
14
14
|
import "@samual/lib/copyFilePersistent"
|
15
|
-
const version = "0.20.4-
|
15
|
+
const version = "0.20.4-9d6d467",
|
16
16
|
options = new Map(),
|
17
17
|
commands = [],
|
18
18
|
userColours = new Cache(user => {
|
@@ -119,7 +119,7 @@ switch (commands[0]) {
|
|
119
119
|
logHelp()
|
120
120
|
break
|
121
121
|
}
|
122
|
-
const { push } = await pushModule,
|
122
|
+
const { push, MissingSourceFolderError, MissingHackmudFolderError, NoUsersError } = await pushModule,
|
123
123
|
infos = await push(sourcePath, hackmudPath, {
|
124
124
|
scripts,
|
125
125
|
onPush: info => logInfo(info, hackmudPath),
|
@@ -127,9 +127,17 @@ switch (commands[0]) {
|
|
127
127
|
mangleNames: shouldMangleNames,
|
128
128
|
forceQuineCheats: shouldforceQuineCheats
|
129
129
|
})
|
130
|
-
infos instanceof Error
|
130
|
+
if (infos instanceof Error) {
|
131
131
|
logError(infos.message)
|
132
|
-
|
132
|
+
if (infos instanceof MissingSourceFolderError || infos instanceof NoUsersError) {
|
133
|
+
console.log()
|
134
|
+
logHelp()
|
135
|
+
} else
|
136
|
+
infos instanceof MissingHackmudFolderError &&
|
137
|
+
log(
|
138
|
+
`If this is not where your hackmud folder is, you can specify it with the\n${colourN("--hackmud-path")}=${colourB("<path>")} option or ${colourN("HSM_HACKMUD_PATH")} environment variable`
|
139
|
+
)
|
140
|
+
} else infos.length || logError("Could not find any scripts to push")
|
133
141
|
}
|
134
142
|
break
|
135
143
|
case "dev":
|
@@ -246,7 +254,7 @@ switch (commands[0]) {
|
|
246
254
|
typeDeclaration = await generateTypeDeclaration(sourcePath, getHackmudPath())
|
247
255
|
let typeDeclarationPath = resolve(outputPath)
|
248
256
|
await writeFile(typeDeclarationPath, typeDeclaration).catch(error => {
|
249
|
-
assert(error instanceof Error, "src/bin/hsm.ts:
|
257
|
+
assert(error instanceof Error, "src/bin/hsm.ts:340:35")
|
250
258
|
if ("EISDIR" != error.code) throw error
|
251
259
|
typeDeclarationPath = resolve(typeDeclarationPath, "player.d.ts")
|
252
260
|
return writeFile(typeDeclarationPath, typeDeclaration)
|
package/package.json
CHANGED
package/push.d.ts
CHANGED
@@ -22,6 +22,10 @@ export declare class MissingSourceFolderError extends Error {
|
|
22
22
|
}
|
23
23
|
export declare class MissingHackmudFolderError extends Error {
|
24
24
|
}
|
25
|
+
export declare class NoUsersError extends Error {
|
26
|
+
}
|
27
|
+
export declare class NoScriptsError extends Error {
|
28
|
+
}
|
25
29
|
/** Push scripts from a source directory to the hackmud directory.
|
26
30
|
*
|
27
31
|
* Pushes files directly in the source folder to all users
|
@@ -29,4 +33,4 @@ export declare class MissingHackmudFolderError extends Error {
|
|
29
33
|
* @param hackmudPath directory created by hackmud containing user data including scripts
|
30
34
|
* @param options {@link PushOptions details}
|
31
35
|
* @returns array of info on pushed scripts */
|
32
|
-
export declare function push(sourcePath: string, hackmudPath: string, { scripts, onPush, minify, mangleNames, forceQuineCheats }?: PushOptions): Promise<MissingSourceFolderError | MissingHackmudFolderError | Info[]>;
|
36
|
+
export declare function push(sourcePath: string, hackmudPath: string, { scripts, onPush, minify, mangleNames, forceQuineCheats }?: PushOptions): Promise<MissingSourceFolderError | MissingHackmudFolderError | NoUsersError | NoScriptsError | Info[]>;
|
package/push.js
CHANGED
@@ -46,6 +46,10 @@ class MissingSourceFolderError extends Error {}
|
|
46
46
|
Object.defineProperty(MissingSourceFolderError.prototype, "name", { value: "MissingSourceFolderError" })
|
47
47
|
class MissingHackmudFolderError extends Error {}
|
48
48
|
Object.defineProperty(MissingHackmudFolderError.prototype, "name", { value: "MissingHackmudFolderError" })
|
49
|
+
class NoUsersError extends Error {}
|
50
|
+
Object.defineProperty(NoUsersError.prototype, "name", { value: "NoUsersError" })
|
51
|
+
class NoScriptsError extends Error {}
|
52
|
+
Object.defineProperty(NoScriptsError.prototype, "name", { value: "NoScriptsError" })
|
49
53
|
async function push(
|
50
54
|
sourcePath,
|
51
55
|
hackmudPath,
|
@@ -68,7 +72,7 @@ async function push(
|
|
68
72
|
const sourceFolderFolders = sourceFolder.filter(({ stats }) => stats.isDirectory()),
|
69
73
|
allUsers = new Set([
|
70
74
|
...scripts
|
71
|
-
.map(scriptName => ensure(scriptName.split(".")[0], "src/push.ts:
|
75
|
+
.map(scriptName => ensure(scriptName.split(".")[0], "src/push.ts:82:65"))
|
72
76
|
.filter(name => "*" != name),
|
73
77
|
...sourceFolderFolders.map(({ name }) => name),
|
74
78
|
...hackmudFolder.filter(({ stats }) => stats.isDirectory()).map(({ name }) => name),
|
@@ -77,13 +81,15 @@ async function push(
|
|
77
81
|
.map(({ name }) => name.slice(0, -4))
|
78
82
|
])
|
79
83
|
if (!allUsers.size)
|
80
|
-
|
84
|
+
return new NoUsersError(
|
85
|
+
"Could not find any users. Either provide the names of your users or log into a user in hackmud"
|
86
|
+
)
|
81
87
|
const usersToScriptsToPush = new Cache(_user => new Map()),
|
82
88
|
scriptNamesToUsers = new Cache(_scriptName => new Set())
|
83
89
|
for (const script of scripts) {
|
84
90
|
const [user, scriptName] = script.split(".")
|
85
|
-
assert(user, "src/push.ts:
|
86
|
-
assert(scriptName, "src/push.ts:
|
91
|
+
assert(user, "src/push.ts:105:16")
|
92
|
+
assert(scriptName, "src/push.ts:106:22")
|
87
93
|
"*" == user ? scriptNamesToUsers.set(scriptName, allUsers) : scriptNamesToUsers.get(scriptName).add(user)
|
88
94
|
}
|
89
95
|
const sourceFolderFiles = sourceFolder.filter(({ stats }) => stats.isFile()),
|
@@ -114,7 +120,7 @@ async function push(
|
|
114
120
|
for (const [scriptName, users] of scriptNamesToUsers)
|
115
121
|
for (const user of users)
|
116
122
|
if (!usersToScriptsToPush.get(user).has(scriptName))
|
117
|
-
|
123
|
+
return new NoScriptsError(`Could not find script ${user}.${scriptName} to push`)
|
118
124
|
const pathsToUsers = new Cache(_path => new Set())
|
119
125
|
for (const [user, scriptsToPush] of usersToScriptsToPush)
|
120
126
|
for (const path of scriptsToPush.values()) pathsToUsers.get(path).add(user)
|
@@ -151,4 +157,4 @@ async function push(
|
|
151
157
|
)
|
152
158
|
return allInfo
|
153
159
|
}
|
154
|
-
export { MissingHackmudFolderError, MissingSourceFolderError, push }
|
160
|
+
export { MissingHackmudFolderError, MissingSourceFolderError, NoScriptsError, NoUsersError, push }
|