update comp bun/node
This commit is contained in:
@@ -4,7 +4,7 @@
|
|||||||
import {decodeBase64, encodeBase64} from "jsr:@std/encoding/base64";
|
import {decodeBase64, encodeBase64} from "jsr:@std/encoding/base64";
|
||||||
import {dirname, fromFileUrl} from "https://deno.land/std/path/mod.ts";
|
import {dirname, fromFileUrl} from "https://deno.land/std/path/mod.ts";
|
||||||
import {spawn, SpawnOptionsWithoutStdio} from "node:child_process";
|
import {spawn, SpawnOptionsWithoutStdio} from "node:child_process";
|
||||||
import { readFile,readFileSync } from 'node:fs';
|
import {mkdir, readFile, readFileSync, rm, writeFile} from "node:fs";
|
||||||
|
|
||||||
// reference: https://docs.deno.com/examples/hex_base64_encoding/
|
// reference: https://docs.deno.com/examples/hex_base64_encoding/
|
||||||
// import { decodeBase64, encodeBase64 } from "jsr:@std/encoding/base64";
|
// import { decodeBase64, encodeBase64 } from "jsr:@std/encoding/base64";
|
||||||
@@ -714,12 +714,12 @@ export function getHomeDir(): string | null {
|
|||||||
|
|
||||||
export function homeDir(): string | null {
|
export function homeDir(): string | null {
|
||||||
// if (Deno.build.os === "windows") {
|
// if (Deno.build.os === "windows") {
|
||||||
// const userProfile = Deno.env.get("USERPROFILE");
|
// const userProfile = osEnv("USERPROFILE");
|
||||||
// if (userProfile) {
|
// if (userProfile) {
|
||||||
// return userProfile;
|
// return userProfile;
|
||||||
// }
|
// }
|
||||||
// const homeDrive = Deno.env.get("HOMEDRIVE");
|
// const homeDrive = osEnv("HOMEDRIVE");
|
||||||
// const homePath = Deno.env.get("HOMEPATH");
|
// const homePath = osEnv("HOMEPATH");
|
||||||
// if (homeDrive && homePath) {
|
// if (homeDrive && homePath) {
|
||||||
// return homeDrive + homePath;
|
// return homeDrive + homePath;
|
||||||
// }
|
// }
|
||||||
@@ -762,15 +762,20 @@ export async function existsPath(path: string): Promise<boolean> {
|
|||||||
}
|
}
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
fs.stat(path, (err, stats) => {
|
fs.stat(path, (err, stats) => {
|
||||||
if (err) {
|
err ? resolve(false) : resolve(stats !== null);
|
||||||
resolve(false);
|
|
||||||
} else {
|
|
||||||
resolve(stats != null);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function isDenoNotFound(e) {
|
||||||
|
return e instanceof Error && e.name == "NotFound";
|
||||||
|
}
|
||||||
|
|
||||||
|
function isNodeNotFound(e) {
|
||||||
|
return (e.errno ?? 0 === -2) && e.message &&
|
||||||
|
e.message.includes("no such file or directory");
|
||||||
|
}
|
||||||
|
|
||||||
export async function readFileToString(
|
export async function readFileToString(
|
||||||
filename: string,
|
filename: string,
|
||||||
): Promise<string | null> {
|
): Promise<string | null> {
|
||||||
@@ -778,18 +783,18 @@ export async function readFileToString(
|
|||||||
try {
|
try {
|
||||||
return await Deno.readTextFile(resolveFilename(filename));
|
return await Deno.readTextFile(resolveFilename(filename));
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (e instanceof Error && e.name == "NotFound") {
|
if (isDenoNotFound(e)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
readFile(resolveFilename(filename), 'utf8', (err, buffer) => {
|
readFile(resolveFilename(filename), "utf8", (err, buffer) => {
|
||||||
if (err) {
|
if (err && isNodeNotFound(err)) {
|
||||||
reject(err);
|
resolve(null);
|
||||||
} else {
|
} else {
|
||||||
resolve(buffer);
|
err ? reject(err) : resolve(buffer);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -800,13 +805,20 @@ export function readFileToStringSync(filename: string): string | null {
|
|||||||
try {
|
try {
|
||||||
return Deno.readTextFileSync(resolveFilename(filename));
|
return Deno.readTextFileSync(resolveFilename(filename));
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (e instanceof Error && e.name == "NotFound") {
|
if (isDenoNotFound(e)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return readFileSync(resolveFilename(filename), 'utf8');
|
try {
|
||||||
|
return readFileSync(resolveFilename(filename), "utf8");
|
||||||
|
} catch (err) {
|
||||||
|
if (isNodeNotFound(err)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function writeStringToFile(
|
export async function writeStringToFile(
|
||||||
@@ -816,14 +828,49 @@ export async function writeStringToFile(
|
|||||||
const newFilename = resolveFilename(filename);
|
const newFilename = resolveFilename(filename);
|
||||||
if (data == null) {
|
if (data == null) {
|
||||||
if (await existsPath(newFilename)) {
|
if (await existsPath(newFilename)) {
|
||||||
await Deno.remove(newFilename);
|
await removePath(newFilename);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
const parentDirname = dirname(newFilename);
|
const parentDirname = dirname(newFilename);
|
||||||
if (!await existsPath(parentDirname)) {
|
if (!await existsPath(parentDirname)) {
|
||||||
await Deno.mkdir(parentDirname, { recursive: true });
|
await makeDirectory(parentDirname);
|
||||||
}
|
}
|
||||||
await Deno.writeTextFile(newFilename, data);
|
if (isDeno()) {
|
||||||
|
await Deno.writeTextFile(newFilename, data);
|
||||||
|
} else {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
writeFile(newFilename, data, (err) => {
|
||||||
|
err ? reject(err) : resolve();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function removePath(path: string): Promise<void> {
|
||||||
|
if (isDeno()) {
|
||||||
|
await Deno.remove(newFilename);
|
||||||
|
} else {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
rm(path, (err) => {
|
||||||
|
err ? reject(err) : resolve();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function makeDirectory(
|
||||||
|
directory: string,
|
||||||
|
recursive?: boolean,
|
||||||
|
): Promise<void> {
|
||||||
|
if (isDeno()) {
|
||||||
|
await Deno.mkdir(parentDirname, { recursive: recursive ?? true });
|
||||||
|
} else {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
mkdir(directory, { recursive: recursive ?? true }, (err) => {
|
||||||
|
err ? reject(err) : resolve();
|
||||||
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -259,11 +259,11 @@
|
|||||||
"ssh.ts": {
|
"ssh.ts": {
|
||||||
"script_name": "ssh.ts",
|
"script_name": "ssh.ts",
|
||||||
"script_length": 7011,
|
"script_length": 7011,
|
||||||
"script_sha256": "30095c6f3f1ad698a0be6254c564bd6a5a5404ed7ae9eef0c2491c2640770f8a",
|
"script_sha256": "474b2352fcd97ff4327383125b3a643860ee5f1d6661710ad43827b1b8107ff0",
|
||||||
"script_full_url": "https://git.hatter.ink/hatter/ts-scripts/raw/branch/main/single-scripts/ssh.ts",
|
"script_full_url": "https://git.hatter.ink/hatter/ts-scripts/raw/branch/main/single-scripts/ssh.ts",
|
||||||
"single_script_file": true,
|
"single_script_file": true,
|
||||||
"publish_time": 1768111677531,
|
"publish_time": 1768111677531,
|
||||||
"update_time": 1770533214189
|
"update_time": 1770819890077
|
||||||
},
|
},
|
||||||
"term-color.ts": {
|
"term-color.ts": {
|
||||||
"script_name": "term-color.ts",
|
"script_name": "term-color.ts",
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
import {parseArgs} from "node:util";
|
import {parseArgs} from "node:util";
|
||||||
|
|
||||||
import {execCommandShell, log, readFileToString, term,} from "https://script.hatter.ink/@32/deno-commons-mod.ts";
|
import {execCommandShell, log, readFileToString, term,} from "https://script.hatter.ink/@39/deno-commons-mod.ts";
|
||||||
import JSON5 from "npm:json5";
|
import JSON5 from "npm:json5";
|
||||||
|
|
||||||
class SshTsArgs {
|
class SshTsArgs {
|
||||||
@@ -216,5 +216,5 @@ async function main() {
|
|||||||
}
|
}
|
||||||
await main();
|
await main();
|
||||||
|
|
||||||
// @SCRIPT-SIGNATURE-V1: yk-r1.ES256.20260208T142616+08:00.MEYCIQDb99eHtM0E2g2/SJc2
|
// @SCRIPT-SIGNATURE-V1: yk-r1.ES256.20260211T222426+08:00.MEQCIBUaOjb8a7K/MhtnyCNB
|
||||||
// cLX9TpTZIY6WFl1hR0F9E3RmhwIhAJMoT77cJYjJwvLySwe8QYzGrpWHe4ROBIdRXiQERNMT
|
// nFaiDnFC1XR30+HUCAUsonBmAiAiinGYmYEA20TuGWogH3pSqIH3X1YDH9T7pbV3l1kuHA==
|
||||||
|
|||||||
Reference in New Issue
Block a user