Skip to content

Commit b3736e4

Browse files
committed
Add fallback if dir does not exist
1 parent f5af7a7 commit b3736e4

File tree

1 file changed

+18
-13
lines changed

1 file changed

+18
-13
lines changed

manifest.js

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
import os from 'os'
2-
import path from 'path'
3-
import fs from 'fs'
1+
import { homedir, hostname } from 'node:os'
2+
import { join } from 'node:path'
3+
import { readdir, stat } from 'node:fs/promises'
4+
import { start } from 'node:repl'
45

5-
const host = os.hostname().toLowerCase()
6+
const host = hostname().toLowerCase()
67
const rxrc = 'node_modules/@rxrc'
78

8-
const targetRoot = os.homedir()
9+
const targetRoot = homedir()
910

1011
const ioType = 'linux'
1112
const pkgType = 'pacman'
@@ -194,17 +195,17 @@ const symlinks = async () => [{
194195
pkgs: ['awesome']
195196
}, {
196197
src: '.config/awesome/themes/powerarrow-dark/wall.png',
197-
dst: await randomFile('drive/wallpaper/hosts/mjolnir'),
198+
dst: await randomFile('drive/wallpaper/hosts/mjolnir') ?? '.config/awesome/themes/powerarrow/wall.png',
198199
hosts: ['pixelbook', 'mjolnir', 'gungnir'],
199200
pkgs: ['awesome']
200201
}, {
201202
src: '.config/awesome/themes/powerarrow-dark/wall.png',
202-
dst: await randomFile('drive/wallpaper/hosts/freyja/vert'),
203+
dst: await randomFile('drive/wallpaper/hosts/freyja/vert') ?? '.config/awesome/themes/powerarrow/wall.png',
203204
hosts: ['freyja'],
204205
pkgs: ['awesome']
205206
}, {
206207
src: '.config/awesome/themes/powerarrow-dark/wall.png-2',
207-
dst: await randomFile('drive/wallpaper/hosts/freyja'),
208+
dst: await randomFile('drive/wallpaper/hosts/freyja') ?? '.config/awesome/themes/powerarrow/wall.png',
208209
hosts: ['freyja'],
209210
pkgs: ['awesome']
210211
}, {
@@ -231,15 +232,19 @@ export default async () => ({
231232
})
232233

233234
const randomFile = async dir => {
234-
const rootDir = path.join(targetRoot, dir)
235-
const files = await fs.promises.readdir(rootDir)
236-
if (!files.length) throw new Error(`No files in ${rootDir}`)
235+
const rootDir = join(targetRoot, dir)
236+
237+
const dirStat = await stat(rootDir)
238+
if (!dirStat.isDirectory) return null
239+
240+
const files = await readdir(rootDir)
241+
if (!files.length) return null
237242

238243
const checkRandom = async () => {
239244
const randomIndex = Math.floor(Math.random() * files.length)
240245
const file = files[randomIndex]
241-
const stats = await fs.promises.stat(path.join(rootDir, file))
242-
if (stats.isFile()) return path.join(dir, file)
246+
const stats = await stat(join(rootDir, file))
247+
if (stats.isFile()) return join(dir, file)
243248
files.splice(randomIndex, 1)
244249
return checkRandom()
245250
}

0 commit comments

Comments
 (0)