aboutsummaryrefslogtreecommitdiff
path: root/aoc2023/build/packages/simplifile/src/simplifile_js.mjs
diff options
context:
space:
mode:
authorHJ <thechairman@thechairman.info>2024-02-03 15:09:54 -0500
committerHJ <thechairman@thechairman.info>2024-02-03 15:09:54 -0500
commit96a3c5c179d8d3fff24eb2953e45f8dd15e2714c (patch)
tree0a67bc0cfeabe51740bb049c61f16f1ac3bdd4ff /aoc2023/build/packages/simplifile/src/simplifile_js.mjs
parent547fe03cf43105f46160e2dd9afff21637eaaf47 (diff)
downloadgleam_aoc-96a3c5c179d8d3fff24eb2953e45f8dd15e2714c.tar.gz
gleam_aoc-96a3c5c179d8d3fff24eb2953e45f8dd15e2714c.zip
cleanup
Diffstat (limited to 'aoc2023/build/packages/simplifile/src/simplifile_js.mjs')
-rw-r--r--aoc2023/build/packages/simplifile/src/simplifile_js.mjs102
1 files changed, 102 insertions, 0 deletions
diff --git a/aoc2023/build/packages/simplifile/src/simplifile_js.mjs b/aoc2023/build/packages/simplifile/src/simplifile_js.mjs
new file mode 100644
index 0000000..faf4109
--- /dev/null
+++ b/aoc2023/build/packages/simplifile/src/simplifile_js.mjs
@@ -0,0 +1,102 @@
+import fs from "node:fs"
+import path from "node:path"
+import { BitArray, Ok, Error as GError, toList} from "./gleam.mjs";
+
+export function readBits(filepath) {
+ try {
+ const contents = fs.readFileSync(path.normalize(filepath))
+ return new Ok(new BitArray(new Uint8Array(contents)))
+ } catch(e) {
+ return new GError(stringifyError(e))
+ }
+}
+
+export function writeBits(contents, filepath) {
+ try {
+ fs.writeFileSync(path.normalize(filepath), contents.buffer)
+ return new Ok(undefined)
+ } catch (e) {
+ return new GError(stringifyError(e))
+ }
+}
+
+export function appendBits(contents, filepath) {
+ try {
+ fs.appendFileSync(path.normalize(filepath), contents.buffer)
+ return new Ok(undefined)
+ } catch (e) {
+ return new GError(stringifyError(e))
+ }
+}
+
+function stringifyError(e) {
+ return e.code
+}
+
+export function isFile(filepath) {
+ let fp = path.normalize(filepath)
+ return fs.existsSync(fp) && fs.lstatSync(fp).isFile();
+}
+
+export function isDirectory(filepath) {
+ let fp = path.normalize(filepath)
+ return fs.existsSync(fp) && fs.lstatSync(fp).isDirectory();
+}
+
+export function makeDirectory(filepath) {
+ try {
+ fs.mkdirSync(path.normalize(filepath))
+ return new Ok(undefined)
+ } catch (e) {
+ return new GError(stringifyError(e))
+ }
+}
+
+export function createDirAll(filepath) {
+ try {
+ fs.mkdirSync(filepath, { recursive: true })
+ return new Ok(undefined)
+ } catch (e) {
+ return new GError(stringifyError(e))
+ }
+}
+
+export function deleteFileOrDirRecursive(fileOrDirPath) {
+ try {
+ if (isDirectory(fileOrDirPath)) {
+ fs.rmSync(path.normalize(fileOrDirPath), { recursive: true })
+ } else {
+ fs.unlinkSync(path.normalize(fileOrDirPath))
+ }
+ return new Ok(undefined)
+ } catch (e) {
+ return new GError(stringifyError(e))
+ }
+}
+
+export function listContents(filepath) {
+ try {
+ const stuff = toList(fs.readdirSync(path.normalize(filepath)))
+ return new Ok(stuff)
+ } catch(e) {
+ return new GError(stringifyError(e))
+ }
+}
+
+export function copyFile(srcpath, destpath) {
+ try {
+ fs.copyFileSync(path.normalize(srcpath), path.normalize(destpath))
+ return new Ok(undefined)
+ } catch (e) {
+ return new GError(stringifyError(e))
+ }
+}
+
+export function renameFile(srcpath, destpath) {
+ try {
+ fs.renameSync(path.normalize(srcpath), path.normalize(destpath))
+ return new Ok(undefined)
+ } catch (e) {
+ return new GError(stringifyError(e))
+ }
+} \ No newline at end of file