Skip to content

Commit d670120

Browse files
committed
standardised file layout
1 parent 7a4164b commit d670120

6 files changed

Lines changed: 92 additions & 41 deletions

File tree

bin/hsm

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#!/usr/bin/env node
2+
require("../lib/hsm")

index.ts renamed to lib/hsm.ts

Lines changed: 80 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,25 @@
1-
#!/usr/bin/env node
2-
31
import { readFile, mkdir as mkDir, writeFile, rmdir as rmDir } from "fs/promises"
42
import { resolve as resolvePath } from "path"
53
import { homedir as homeDir } from "os"
64
import { build, clear, push, sync, watch } from "hackmud_env-tools"
7-
import { red, yellow, green, blue } from "ansi-colors"
5+
import c, { redBright, yellowBright, greenBright, blueBright, cyanBright, magentaBright, bold, dim } from "ansi-colors"
6+
7+
// let o = ""
8+
9+
// for (let key in c) {
10+
// if (![ "alias", "theme", "define", "create", "hasAnsi", "hasColor", "unstyle", "noop", "noop", "clear", "none", "stripColor", "reset", "gray" ].includes(key)) {
11+
// const value: any = c[key]
812

9-
type ArgValue = boolean | number | string | ArgValue[]
13+
// if (typeof value == "function")
14+
// o += value(key) + " "
15+
// }
16+
// }
17+
18+
// console.log(o)
19+
20+
// console.log(c.redBright("test"), c.redBright.dim("test"), c.red("test"), c.red.dim("test"))
21+
22+
type ArgValue = boolean | number | string/* | ArgValue[]*/
1023

1124
const configDir = resolvePath(homeDir(), ".config")
1225
const configFile = resolvePath(configDir, "hsm.json")
@@ -67,48 +80,81 @@ for (let arg of process.argv.slice(2)) {
6780
break
6881
case "push":
6982
break
70-
case "sync":
83+
case "sync": {
84+
const config = await getConfig()
85+
86+
if (config.hackmudPath) {
87+
const srcPath = commands[1] || "."
88+
const hackmudPath = config.hackmudPath
89+
const users = options.get("users")?.toString().split(",") || []
90+
const scripts = options.get("scripts")?.toString().split(",") || []
91+
92+
const colours = [ redBright, greenBright, yellowBright, blueBright, magentaBright, cyanBright ]
93+
94+
const userColours = new Map<string, string>()
95+
96+
sync(srcPath, hackmudPath, users, scripts, (file, { minLength, srcLength, users }) => {
97+
if (users.length)
98+
console.log(`synced ${dim(file)} to ${users.map(user => {
99+
let colour = userColours.get(user)
100+
101+
if (!colour)
102+
userColours.set(user, colour = colours[Math.floor(Math.random() * colours.length)](user))
103+
104+
return colour
105+
}).join(", ")} saving ${bold((srcLength - minLength).toString())} chars`)
106+
})
107+
} else
108+
console.log("you need to set hackmudPath in config before you can use this command")
109+
71110
break
111+
}
112+
72113
case "watch":
73114
break
74-
case "sync":
75-
// console.log(await sync())
76-
break
77-
115+
78116
case "config":
79117
switch (commands[1]) {
80118
case "get":
81-
console.log(exploreObject(await getConfig(), ...commands.slice(2)))
119+
console.log(exploreObject(await getConfig(), commands.slice(2)))
82120
break
83-
case "delete":
84-
break
85-
case "set":
121+
122+
case "delete": {
123+
const config = await getConfig()
86124
const keys = commands.slice(2)
87125

88126
if (keys.length) {
89-
let value
90-
91-
if (keys.length == 1) {
92-
value = undefined
93-
} else {
94-
value = keys.pop()
95-
}
96-
97-
console.log({ keys, value })
127+
delete exploreObject(config, keys.slice(0, -1))?.[keys.slice(-1)[0]]
128+
console.log(config)
98129
} else
99130
help()
131+
132+
break
133+
}
100134

101-
// // exploreObject(await getConfig(), ...keys.slice(0, -1))[keys.slice(-1)[0]] = value
135+
case "set": {
136+
const config = await getConfig()
137+
const keys = commands.slice(2)
138+
const value = keys.pop()
139+
140+
if (keys.length) {
141+
let object = config
142+
143+
for (let key of keys.slice(0, -1))
144+
object = typeof object[key] == "object" ? object[key] : object[key] = {}
102145

103-
// let object = await getConfig()
146+
object[keys.slice(-1)[0]] = value
104147

105-
// for (let key of keys.slice(0, -1))
106-
// object = object[key] || {}
148+
if (config.hackmudPath)
149+
config.hackmudPath = resolvePath(config.hackmudPath)
107150

108-
// object[keys.slice(-1)[0]] = value
151+
console.log(config)
152+
} else
153+
help()
109154

110-
// console.log(await getConfig())
111155
break
156+
}
157+
112158
default:
113159
if (commands[1])
114160
console.log("unknown command")
@@ -165,7 +211,7 @@ function help() {
165211
break
166212
default:
167213
// console.log("hsm <build, clear, push, sync, watch, sync, config, help / h, version / v>")
168-
console.log(`${red("hsm")} <${yellow("command")}> [...${yellow("option")}s]\n\n${yellow("command")}s:\n ${green("build")} - ${blue("info")}\n ${green("clear")} - ${blue("info")}\n\n${yellow("option")}s:\n help, h - info\n version, v - info`)
214+
console.log(`${redBright("hsm")} <${yellowBright("command")}> [...${yellowBright("option")}s]\n\n${yellowBright("command")}s:\n ${greenBright("build")} - ${blueBright("info")}\n ${greenBright("clear")} - ${blueBright("info")}\n\n${yellowBright("option")}s:\n help, h - info\n version, v - info`)
169215
}
170216
}
171217

@@ -187,9 +233,12 @@ async function getConfig() {
187233
return config
188234
}
189235

190-
function exploreObject(object: any, ...keys: string[]) {
236+
function exploreObject(object: any, keys: string[], createPath = false) {
191237
for (let key of keys)
192-
object = object?.[key]
238+
if (createPath)
239+
object = typeof object[key] == "object" ? object[key] : object[key] = {}
240+
else
241+
object = object?.[key]
193242

194243
return object
195244
}

package-lock.json

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22
"name": "hackmud-script-manager",
33
"version": "1.0.0",
44
"description": "",
5-
"main": "index.js",
5+
"files": [
6+
"bin/hsm",
7+
"lib/hsm.ts"
8+
],
69
"scripts": {
710
"build": "npx tsc",
811
"watch": "npx tsc --watch"
@@ -19,16 +22,13 @@
1922
"homepage": "https://github.com/samualtnorman/hackmud-script-manager#readme",
2023
"dependencies": {
2124
"ansi-colors": "^4.1.1",
22-
"hackmud_env-tools": "^1.0.2"
25+
"hackmud_env-tools": "^1.1.0"
2326
},
2427
"devDependencies": {
2528
"@types/node": "^14.6.0",
2629
"typescript": "^4.0.2"
2730
},
2831
"bin": {
29-
"hsm": "index.js"
30-
},
31-
"files": [
32-
"index.js"
33-
]
32+
"hsm": "bin/hsm"
33+
}
3434
}

test/hackmud/user_0.key

Whitespace-only changes.

test/hackmud/user_1.key

Whitespace-only changes.

0 commit comments

Comments
 (0)