@fnndsc/brasa 0.56.1 → 0.56.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/buildinfo.json +1 -1
- package/dist/builtins/berth/berth.d.ts +90 -3
- package/dist/builtins/berth/berth.js +129 -76
- package/dist/builtins/berth/berth.js.map +1 -1
- package/dist/builtins/berth/berthClose.d.ts +25 -6
- package/dist/builtins/berth/berthClose.js +8 -64
- package/dist/builtins/berth/berthClose.js.map +1 -1
- package/dist/builtins/berth/berthCube.d.ts +3 -2
- package/dist/builtins/berth/berthCube.js +9 -16
- package/dist/builtins/berth/berthCube.js.map +1 -1
- package/dist/builtins/berth/berthProcesses.js +33 -3
- package/dist/builtins/berth/berthProcesses.js.map +1 -1
- package/dist/builtins/debug.d.ts +24 -3
- package/dist/builtins/debug.js +66 -13
- package/dist/builtins/debug.js.map +1 -1
- package/dist/builtins/fs/acl.args.d.ts +5 -38
- package/dist/builtins/fs/acl.args.js +6 -72
- package/dist/builtins/fs/acl.args.js.map +1 -1
- package/dist/builtins/fs/acl.d.ts +100 -10
- package/dist/builtins/fs/acl.js +222 -68
- package/dist/builtins/fs/acl.js.map +1 -1
- package/dist/builtins/fs/cat.args.d.ts +14 -15
- package/dist/builtins/fs/cat.args.js +13 -40
- package/dist/builtins/fs/cat.args.js.map +1 -1
- package/dist/builtins/fs/cat.d.ts +40 -3
- package/dist/builtins/fs/cat.js +92 -13
- package/dist/builtins/fs/cat.js.map +1 -1
- package/dist/builtins/fs/cd.d.ts +24 -6
- package/dist/builtins/fs/cd.js +71 -18
- package/dist/builtins/fs/cd.js.map +1 -1
- package/dist/builtins/fs/configWrite.d.ts +24 -8
- package/dist/builtins/fs/configWrite.js +77 -36
- package/dist/builtins/fs/configWrite.js.map +1 -1
- package/dist/builtins/fs/cp.d.ts +39 -4
- package/dist/builtins/fs/cp.js +122 -56
- package/dist/builtins/fs/cp.js.map +1 -1
- package/dist/builtins/fs/download.d.ts +31 -4
- package/dist/builtins/fs/download.js +75 -38
- package/dist/builtins/fs/download.js.map +1 -1
- package/dist/builtins/fs/du.d.ts +59 -33
- package/dist/builtins/fs/du.js +111 -79
- package/dist/builtins/fs/du.js.map +1 -1
- package/dist/builtins/fs/edit.d.ts +19 -4
- package/dist/builtins/fs/edit.js +77 -16
- package/dist/builtins/fs/edit.js.map +1 -1
- package/dist/builtins/fs/find.d.ts +25 -0
- package/dist/builtins/fs/find.js +76 -5
- package/dist/builtins/fs/find.js.map +1 -1
- package/dist/builtins/fs/ls.d.ts +69 -4
- package/dist/builtins/fs/ls.js +84 -45
- package/dist/builtins/fs/ls.js.map +1 -1
- package/dist/builtins/fs/mkdir.d.ts +28 -18
- package/dist/builtins/fs/mkdir.js +95 -66
- package/dist/builtins/fs/mkdir.js.map +1 -1
- package/dist/builtins/fs/mv.d.ts +34 -4
- package/dist/builtins/fs/mv.js +129 -64
- package/dist/builtins/fs/mv.js.map +1 -1
- package/dist/builtins/fs/pull.args.d.ts +56 -17
- package/dist/builtins/fs/pull.args.js +16 -66
- package/dist/builtins/fs/pull.args.js.map +1 -1
- package/dist/builtins/fs/pull.d.ts +62 -0
- package/dist/builtins/fs/pull.js +123 -31
- package/dist/builtins/fs/pull.js.map +1 -1
- package/dist/builtins/fs/pwd.d.ts +19 -5
- package/dist/builtins/fs/pwd.js +62 -8
- package/dist/builtins/fs/pwd.js.map +1 -1
- package/dist/builtins/fs/rm.d.ts +58 -21
- package/dist/builtins/fs/rm.js +99 -82
- package/dist/builtins/fs/rm.js.map +1 -1
- package/dist/builtins/fs/rmdir.d.ts +29 -11
- package/dist/builtins/fs/rmdir.js +87 -36
- package/dist/builtins/fs/rmdir.js.map +1 -1
- package/dist/builtins/fs/touch.d.ts +44 -9
- package/dist/builtins/fs/touch.js +91 -27
- package/dist/builtins/fs/touch.js.map +1 -1
- package/dist/builtins/fs/tree.d.ts +36 -9
- package/dist/builtins/fs/tree.js +126 -36
- package/dist/builtins/fs/tree.js.map +1 -1
- package/dist/builtins/fs/upload.d.ts +22 -3
- package/dist/builtins/fs/upload.js +82 -14
- package/dist/builtins/fs/upload.js.map +1 -1
- package/dist/builtins/fs/xattr.args.d.ts +12 -33
- package/dist/builtins/fs/xattr.args.js +17 -95
- package/dist/builtins/fs/xattr.args.js.map +1 -1
- package/dist/builtins/fs/xattr.d.ts +98 -8
- package/dist/builtins/fs/xattr.js +163 -24
- package/dist/builtins/fs/xattr.js.map +1 -1
- package/dist/builtins/games/bytes.d.ts +201 -5
- package/dist/builtins/games/bytes.js +255 -54
- package/dist/builtins/games/bytes.js.map +1 -1
- package/dist/builtins/games/chimes.d.ts +180 -3
- package/dist/builtins/games/chimes.js +203 -26
- package/dist/builtins/games/chimes.js.map +1 -1
- package/dist/builtins/games/chrislab.d.ts +101 -3
- package/dist/builtins/games/chrislab.js +117 -17
- package/dist/builtins/games/chrislab.js.map +1 -1
- package/dist/builtins/games/cowsay.d.ts +93 -2
- package/dist/builtins/games/cowsay.js +90 -31
- package/dist/builtins/games/cowsay.js.map +1 -1
- package/dist/builtins/games/figlet.d.ts +70 -2
- package/dist/builtins/games/figlet.js +83 -6
- package/dist/builtins/games/figlet.js.map +1 -1
- package/dist/builtins/games/lab.d.ts +104 -5
- package/dist/builtins/games/lab.js +144 -6
- package/dist/builtins/games/lab.js.map +1 -1
- package/dist/builtins/games/lolcat.d.ts +61 -1
- package/dist/builtins/games/lolcat.js +59 -24
- package/dist/builtins/games/lolcat.js.map +1 -1
- package/dist/builtins/games/morse.d.ts +36 -1
- package/dist/builtins/games/morse.js +50 -2
- package/dist/builtins/games/morse.js.map +1 -1
- package/dist/builtins/games/numbers.d.ts +241 -5
- package/dist/builtins/games/numbers.js +298 -23
- package/dist/builtins/games/numbers.js.map +1 -1
- package/dist/builtins/games/play.d.ts +96 -6
- package/dist/builtins/games/play.js +137 -6
- package/dist/builtins/games/play.js.map +1 -1
- package/dist/builtins/games/qr.d.ts +40 -1
- package/dist/builtins/games/qr.js +51 -2
- package/dist/builtins/games/qr.js.map +1 -1
- package/dist/builtins/games/show.d.ts +131 -6
- package/dist/builtins/games/show.js +208 -20
- package/dist/builtins/games/show.js.map +1 -1
- package/dist/builtins/games/sky.d.ts +178 -4
- package/dist/builtins/games/sky.js +228 -12
- package/dist/builtins/games/sky.js.map +1 -1
- package/dist/builtins/games/text.d.ts +258 -7
- package/dist/builtins/games/text.js +310 -29
- package/dist/builtins/games/text.js.map +1 -1
- package/dist/builtins/games/trek.d.ts +67 -3
- package/dist/builtins/games/trek.js +63 -10
- package/dist/builtins/games/trek.js.map +1 -1
- package/dist/builtins/games/wtf.d.ts +58 -1
- package/dist/builtins/games/wtf.js +67 -6
- package/dist/builtins/games/wtf.js.map +1 -1
- package/dist/builtins/help.d.ts +41 -3
- package/dist/builtins/help.js +92 -796
- package/dist/builtins/help.js.map +1 -1
- package/dist/builtins/net/connect.d.ts +36 -3
- package/dist/builtins/net/connect.js +84 -26
- package/dist/builtins/net/connect.js.map +1 -1
- package/dist/builtins/net/cubepath.d.ts +49 -5
- package/dist/builtins/net/cubepath.js +69 -27
- package/dist/builtins/net/cubepath.js.map +1 -1
- package/dist/builtins/net/logout.d.ts +13 -4
- package/dist/builtins/net/logout.js +49 -3
- package/dist/builtins/net/logout.js.map +1 -1
- package/dist/builtins/net/netstat.d.ts +29 -4
- package/dist/builtins/net/netstat.js +64 -23
- package/dist/builtins/net/netstat.js.map +1 -1
- package/dist/builtins/net/pacs.d.ts +169 -15
- package/dist/builtins/net/pacs.js +92 -33
- package/dist/builtins/net/pacs.js.map +1 -1
- package/dist/builtins/net/query.args.d.ts +95 -0
- package/dist/builtins/net/query.args.js +26 -0
- package/dist/builtins/net/query.args.js.map +1 -0
- package/dist/builtins/net/query.d.ts +98 -5
- package/dist/builtins/net/query.js +89 -83
- package/dist/builtins/net/query.js.map +1 -1
- package/dist/builtins/net/status.d.ts +5 -3
- package/dist/builtins/net/status.js +5 -12
- package/dist/builtins/net/status.js.map +1 -1
- package/dist/builtins/parametersofplugin.d.ts +82 -3
- package/dist/builtins/parametersofplugin.js +79 -23
- package/dist/builtins/parametersofplugin.js.map +1 -1
- package/dist/builtins/proc.d.ts +210 -3
- package/dist/builtins/proc.js +210 -119
- package/dist/builtins/proc.js.map +1 -1
- package/dist/builtins/res/compute.d.ts +67 -3
- package/dist/builtins/res/compute.js +121 -35
- package/dist/builtins/res/compute.js.map +1 -1
- package/dist/builtins/res/dicom.d.ts +55 -7
- package/dist/builtins/res/dicom.js +86 -52
- package/dist/builtins/res/dicom.js.map +1 -1
- package/dist/builtins/res/expect.d.ts +52 -3
- package/dist/builtins/res/expect.js +92 -29
- package/dist/builtins/res/expect.js.map +1 -1
- package/dist/builtins/res/feed.d.ts +475 -3
- package/dist/builtins/res/feed.js +253 -158
- package/dist/builtins/res/feed.js.map +1 -1
- package/dist/builtins/res/files.d.ts +517 -3
- package/dist/builtins/res/files.js +124 -44
- package/dist/builtins/res/files.js.map +1 -1
- package/dist/builtins/res/gather.d.ts +113 -3
- package/dist/builtins/res/gather.js +153 -44
- package/dist/builtins/res/gather.js.map +1 -1
- package/dist/builtins/res/gather.process.d.ts +27 -19
- package/dist/builtins/res/gather.process.js +29 -59
- package/dist/builtins/res/gather.process.js.map +1 -1
- package/dist/builtins/res/group.d.ts +284 -3
- package/dist/builtins/res/group.js +147 -76
- package/dist/builtins/res/group.js.map +1 -1
- package/dist/builtins/res/image.d.ts +30 -2
- package/dist/builtins/res/image.js +62 -10
- package/dist/builtins/res/image.js.map +1 -1
- package/dist/builtins/res/play.d.ts +71 -9
- package/dist/builtins/res/play.js +124 -82
- package/dist/builtins/res/play.js.map +1 -1
- package/dist/builtins/res/plugininstance.d.ts +307 -2
- package/dist/builtins/res/plugininstance.js +122 -50
- package/dist/builtins/res/plugininstance.js.map +1 -1
- package/dist/builtins/res/pluginmeta.d.ts +244 -2
- package/dist/builtins/res/pluginmeta.js +98 -40
- package/dist/builtins/res/pluginmeta.js.map +1 -1
- package/dist/builtins/res/record.d.ts +37 -3
- package/dist/builtins/res/record.js +127 -57
- package/dist/builtins/res/record.js.map +1 -1
- package/dist/builtins/res/resourceList.d.ts +136 -0
- package/dist/builtins/res/resourceList.js +51 -0
- package/dist/builtins/res/resourceList.js.map +1 -0
- package/dist/builtins/res/tag.d.ts +244 -3
- package/dist/builtins/res/tag.js +97 -41
- package/dist/builtins/res/tag.js.map +1 -1
- package/dist/builtins/res/user.d.ts +122 -3
- package/dist/builtins/res/user.js +83 -21
- package/dist/builtins/res/user.js.map +1 -1
- package/dist/builtins/res/workflow.d.ts +244 -2
- package/dist/builtins/res/workflow.js +97 -40
- package/dist/builtins/res/workflow.js.map +1 -1
- package/dist/builtins/store.d.ts +85 -3
- package/dist/builtins/store.js +135 -68
- package/dist/builtins/store.js.map +1 -1
- package/dist/builtins/sys/apropos.d.ts +80 -5
- package/dist/builtins/sys/apropos.js +121 -15
- package/dist/builtins/sys/apropos.js.map +1 -1
- package/dist/builtins/sys/cal.d.ts +44 -5
- package/dist/builtins/sys/cal.js +57 -10
- package/dist/builtins/sys/cal.js.map +1 -1
- package/dist/builtins/sys/command.d.ts +20 -0
- package/dist/builtins/sys/command.js +31 -0
- package/dist/builtins/sys/command.js.map +1 -1
- package/dist/builtins/sys/context.d.ts +13 -3
- package/dist/builtins/sys/context.js +51 -4
- package/dist/builtins/sys/context.js.map +1 -1
- package/dist/builtins/sys/date.d.ts +56 -5
- package/dist/builtins/sys/date.js +63 -9
- package/dist/builtins/sys/date.js.map +1 -1
- package/dist/builtins/sys/echo.d.ts +63 -2
- package/dist/builtins/sys/echo.js +87 -8
- package/dist/builtins/sys/echo.js.map +1 -1
- package/dist/builtins/sys/fortune.d.ts +27 -2
- package/dist/builtins/sys/fortune.js +44 -2
- package/dist/builtins/sys/fortune.js.map +1 -1
- package/dist/builtins/sys/grep.d.ts +245 -11
- package/dist/builtins/sys/grep.js +418 -131
- package/dist/builtins/sys/grep.js.map +1 -1
- package/dist/builtins/sys/joblets.d.ts +66 -7
- package/dist/builtins/sys/joblets.js +101 -14
- package/dist/builtins/sys/joblets.js.map +1 -1
- package/dist/builtins/sys/motd.d.ts +37 -3
- package/dist/builtins/sys/motd.js +49 -8
- package/dist/builtins/sys/motd.js.map +1 -1
- package/dist/builtins/sys/notes.d.ts +75 -3
- package/dist/builtins/sys/notes.js +90 -29
- package/dist/builtins/sys/notes.js.map +1 -1
- package/dist/builtins/sys/physicalmode.d.ts +24 -3
- package/dist/builtins/sys/physicalmode.js +68 -14
- package/dist/builtins/sys/physicalmode.js.map +1 -1
- package/dist/builtins/sys/tasks.d.ts +74 -5
- package/dist/builtins/sys/tasks.js +102 -14
- package/dist/builtins/sys/tasks.js.map +1 -1
- package/dist/builtins/sys/textFilters.d.ts +673 -41
- package/dist/builtins/sys/textFilters.js +719 -264
- package/dist/builtins/sys/textFilters.js.map +1 -1
- package/dist/builtins/sys/timing.d.ts +24 -3
- package/dist/builtins/sys/timing.js +67 -14
- package/dist/builtins/sys/timing.js.map +1 -1
- package/dist/builtins/sys/variables.d.ts +70 -4
- package/dist/builtins/sys/variables.js +103 -31
- package/dist/builtins/sys/variables.js.map +1 -1
- package/dist/builtins/sys/version.d.ts +27 -2
- package/dist/builtins/sys/version.js +48 -3
- package/dist/builtins/sys/version.js.map +1 -1
- package/dist/builtins/sys/weather.d.ts +92 -15
- package/dist/builtins/sys/weather.js +71 -45
- package/dist/builtins/sys/weather.js.map +1 -1
- package/dist/builtins/sys/whoami.d.ts +38 -18
- package/dist/builtins/sys/whoami.js +112 -8
- package/dist/builtins/sys/whoami.js.map +1 -1
- package/dist/builtins/utils.d.ts +1 -38
- package/dist/builtins/utils.js +1 -87
- package/dist/builtins/utils.js.map +1 -1
- package/dist/chris/backend.js +2 -0
- package/dist/chris/backend.js.map +1 -1
- package/dist/chris/chrisCommands.js +62 -159
- package/dist/chris/chrisCommands.js.map +1 -1
- package/dist/chris/commandFallback.d.ts +12 -0
- package/dist/chris/commandFallback.js +47 -0
- package/dist/chris/commandFallback.js.map +1 -1
- package/dist/chris/files.js +24 -85
- package/dist/chris/files.js.map +1 -1
- package/dist/chris/filesystem.js +7 -5
- package/dist/chris/filesystem.js.map +1 -1
- package/dist/chris/help.js +0 -1082
- package/dist/chris/help.js.map +1 -1
- package/dist/chris/kinds.d.ts +30 -0
- package/dist/chris/kinds.js +154 -0
- package/dist/chris/kinds.js.map +1 -0
- package/dist/chris/mounts.d.ts +4 -4
- package/dist/chris/mounts.js +9 -16
- package/dist/chris/mounts.js.map +1 -1
- package/dist/chris/navigation.d.ts +2 -3
- package/dist/chris/navigation.js +6 -20
- package/dist/chris/navigation.js.map +1 -1
- package/dist/chris/pacsResources.d.ts +259 -0
- package/dist/chris/pacsResources.js +168 -0
- package/dist/chris/pacsResources.js.map +1 -0
- package/dist/chris/promptContext.d.ts +6 -0
- package/dist/chris/promptContext.js +3 -1
- package/dist/chris/promptContext.js.map +1 -1
- package/dist/core/argumentKinds.d.ts +107 -0
- package/dist/core/argumentKinds.js +223 -0
- package/dist/core/argumentKinds.js.map +1 -0
- package/dist/core/backend.d.ts +4 -1
- package/dist/core/backend.js.map +1 -1
- package/dist/core/commandDeclaration.d.ts +453 -0
- package/dist/core/commandDeclaration.js +52 -0
- package/dist/core/commandDeclaration.js.map +1 -0
- package/dist/core/commandParse.d.ts +64 -0
- package/dist/core/commandParse.js +468 -0
- package/dist/core/commandParse.js.map +1 -0
- package/dist/core/commandRegistry.d.ts +37 -0
- package/dist/core/commandRegistry.js +100 -3
- package/dist/core/commandRegistry.js.map +1 -1
- package/dist/core/commandSchema.d.ts +32 -0
- package/dist/core/commandSchema.js +117 -0
- package/dist/core/commandSchema.js.map +1 -0
- package/dist/core/commandUsage.d.ts +62 -0
- package/dist/core/commandUsage.js +247 -0
- package/dist/core/commandUsage.js.map +1 -0
- package/dist/core/coreCommands.js +66 -214
- package/dist/core/coreCommands.js.map +1 -1
- package/dist/core/dispatch.js +15 -8
- package/dist/core/dispatch.js.map +1 -1
- package/dist/core/paths.d.ts +51 -0
- package/dist/core/paths.js +86 -2
- package/dist/core/paths.js.map +1 -1
- package/dist/core/preprocess.d.ts +10 -9
- package/dist/core/preprocess.js +10 -20
- package/dist/core/preprocess.js.map +1 -1
- package/dist/core/warmupFailures.d.ts +34 -2
- package/dist/core/warmupFailures.js +43 -2
- package/dist/core/warmupFailures.js.map +1 -1
- package/dist/lib/completer/cfsPaths.d.ts +14 -0
- package/dist/lib/completer/cfsPaths.js +91 -0
- package/dist/lib/completer/cfsPaths.js.map +1 -0
- package/dist/lib/completer/declared.d.ts +15 -0
- package/dist/lib/completer/declared.js +189 -0
- package/dist/lib/completer/declared.js.map +1 -0
- package/dist/lib/completer/index.js +33 -79
- package/dist/lib/completer/index.js.map +1 -1
- package/dist/lib/parser.d.ts +5 -8
- package/dist/lib/parser.js +2 -11
- package/dist/lib/parser.js.map +1 -1
- package/dist/lib/vfs/vfs.d.ts +2 -1
- package/dist/lib/vfs/vfs.js +9 -6
- package/dist/lib/vfs/vfs.js.map +1 -1
- package/dist/lib/wildcard.js +2 -3
- package/dist/lib/wildcard.js.map +1 -1
- package/dist/notes.json +1 -1
- package/package.json +6 -5
package/dist/builtins/fs/edit.js
CHANGED
|
@@ -1,17 +1,39 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @file
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
2
|
+
* @file `edit`: a ChRIS file opened in the surface's local editor, and
|
|
3
|
+
* saved back when it changed.
|
|
4
|
+
*
|
|
5
|
+
* The editor mechanics live in the surface, so this command knows nothing
|
|
6
|
+
* of processes or terminals: it reads the file, hands the content to the
|
|
7
|
+
* surface, and writes the result back. The file is read and written where
|
|
8
|
+
* the store keeps it (`storePath_resolve`): a path through a link edits the
|
|
9
|
+
* file the link points at.
|
|
10
|
+
*
|
|
11
|
+
* Declared in one record (`editCommand`): one CFS path.
|
|
12
|
+
*
|
|
13
|
+
* Key components:
|
|
14
|
+
* - editCommand: the declaration.
|
|
15
|
+
* - builtin_edit: the declaration run over words already split.
|
|
16
|
+
* - EDIT_OPENED_LINE: what `edit` says when a pane took the file.
|
|
17
|
+
*
|
|
18
|
+
* Typical usage:
|
|
19
|
+
* ```ts
|
|
20
|
+
* await builtin_edit(['~/uploads/config.yaml']);
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* Dependencies: chili's read and replace for a store file; salsa's
|
|
24
|
+
* dispatcher for a projected one; the session's surface for the editor.
|
|
25
|
+
*
|
|
26
|
+
* @module
|
|
7
27
|
*/
|
|
8
28
|
import { vfsOutcome_convertToResult } from '@fnndsc/fond';
|
|
9
29
|
import { writeFileSync, unlinkSync, existsSync } from 'fs';
|
|
10
30
|
import { tmpdir } from 'os';
|
|
11
31
|
import { join, extname, posix } from 'path';
|
|
12
32
|
import chalk from 'chalk';
|
|
13
|
-
import { path_resolve, error_stripDebugPrefix } from '../utils.js';
|
|
33
|
+
import { path_resolve, storePath_resolve, error_stripDebugPrefix } from '../utils.js';
|
|
14
34
|
import { surface_get, capability_require, CapabilityError } from '../../core/surface.js';
|
|
35
|
+
import { command_declare } from '../../core/commandDeclaration.js';
|
|
36
|
+
import { declaredCommand_run } from '../../core/commandParse.js';
|
|
15
37
|
import { files_cat } from '@fnndsc/chili/commands/fs/cat.js';
|
|
16
38
|
import { file_replaceContent } from '@fnndsc/chili/commands/fs/edit.js';
|
|
17
39
|
import { listCache_get } from '@fnndsc/cumin';
|
|
@@ -20,18 +42,52 @@ import { errorStack } from '@fnndsc/fond';
|
|
|
20
42
|
import { exitCode_set } from '../../core/handlerRun.js';
|
|
21
43
|
/** What `edit` says when the surface opened an editor that stays open. */
|
|
22
44
|
export const EDIT_OPENED_LINE = '(opened in the editor)';
|
|
45
|
+
/** What an `edit` line may hold: one ChRIS file (a wildcard may name it, when it matches one). */
|
|
46
|
+
const EDIT_GRAMMAR = {
|
|
47
|
+
operands: [
|
|
48
|
+
{ name: 'file', kind: 'cfsPath', glob: true, summary: 'The ChRIS file to edit' },
|
|
49
|
+
],
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* `edit <file>`: the declaration.
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```ts
|
|
56
|
+
* commands_register({ declarations: [editCommand] }, 'backend');
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
export const editCommand = command_declare({
|
|
60
|
+
name: 'edit',
|
|
61
|
+
grammar: EDIT_GRAMMAR,
|
|
62
|
+
help: {
|
|
63
|
+
summary: 'Edit a ChRIS file in $EDITOR',
|
|
64
|
+
description: 'Edit a ChRIS file in $EDITOR: fetches it, opens it, and saves it back on write. Uses $EDITOR (or $VISUAL, or vi as fallback). Does nothing if the file is unchanged on exit. On save it deletes the original and re-uploads: the file path is preserved, its ID changes. On upload failure the edited content is preserved in /tmp.',
|
|
65
|
+
category: 'Files',
|
|
66
|
+
examples: [
|
|
67
|
+
'edit /home/chris/uploads/config.yaml',
|
|
68
|
+
'edit notes.txt',
|
|
69
|
+
'EDITOR=nano edit report.json',
|
|
70
|
+
],
|
|
71
|
+
},
|
|
72
|
+
handler: async (args) => edit_run(args.operands.file),
|
|
73
|
+
});
|
|
74
|
+
/**
|
|
75
|
+
* `edit` over words already split: the declaration's parse and handler.
|
|
76
|
+
*
|
|
77
|
+
* @param args - The words after `edit`.
|
|
78
|
+
* @returns The edit outcome, or the refusal of a bad line.
|
|
79
|
+
*/
|
|
80
|
+
export async function builtin_edit(args) {
|
|
81
|
+
return declaredCommand_run(editCommand, args);
|
|
82
|
+
}
|
|
23
83
|
/**
|
|
24
84
|
* Opens a ChRIS file in the surface's local editor. On save, replaces the
|
|
25
85
|
* original via delete + re-upload. No-ops if content is unchanged.
|
|
26
86
|
*
|
|
27
|
-
* @param
|
|
87
|
+
* @param named - The file as the operator typed it.
|
|
28
88
|
* @returns An envelope carrying the edit outcome.
|
|
29
89
|
*/
|
|
30
|
-
|
|
31
|
-
if (args.length === 0) {
|
|
32
|
-
exitCode_set(1);
|
|
33
|
-
return envelope_error('', undefined, `${chalk.red('Usage: edit <file>')}\n`);
|
|
34
|
-
}
|
|
90
|
+
async function edit_run(named) {
|
|
35
91
|
// Editing needs a surface that can open a local editor. A surface without
|
|
36
92
|
// the capability (a headless or browser host) fails here with a clear
|
|
37
93
|
// message instead of assuming a terminal exists.
|
|
@@ -43,17 +99,19 @@ export async function builtin_edit(args) {
|
|
|
43
99
|
exitCode_set(1);
|
|
44
100
|
return envelope_error('', undefined, `${chalk.red(message)}\n`);
|
|
45
101
|
}
|
|
46
|
-
|
|
102
|
+
// Read and written where the store keeps it: a path through a link (a
|
|
103
|
+
// run's output under /proc/jobs, a `.chrislink`) edits what it points at.
|
|
104
|
+
const target = await storePath_resolve(named);
|
|
47
105
|
const ext = extname(target).toLowerCase();
|
|
48
106
|
if (!path_isEditable(target)) {
|
|
49
107
|
exitCode_set(1);
|
|
50
|
-
return envelope_error('', undefined, `${chalk.red(`edit: ${
|
|
108
|
+
return envelope_error('', undefined, `${chalk.red(`edit: ${named}: binary file (${ext}), cannot edit as text`)}\n`);
|
|
51
109
|
}
|
|
52
110
|
// A projection's file (a feed's note under /proc) is read and written
|
|
53
111
|
// through the projection that owns it, never through CUBE's store.
|
|
54
112
|
const { vfsDispatcher } = await import('@fnndsc/salsa');
|
|
55
113
|
if (vfsDispatcher.path_isVirtual(target)) {
|
|
56
|
-
return projectedFile_edit(
|
|
114
|
+
return projectedFile_edit(named, target, ext, {
|
|
57
115
|
read: async (at) => vfsOutcome_convertToResult(await vfsDispatcher.read(at), 'read', at),
|
|
58
116
|
write: async (at, content) => vfsOutcome_convertToResult(await vfsDispatcher.write(at, content), 'write', at).ok,
|
|
59
117
|
});
|
|
@@ -88,9 +146,12 @@ export async function builtin_edit(args) {
|
|
|
88
146
|
try {
|
|
89
147
|
writeFileSync(tmpPath, edit.content, 'utf8');
|
|
90
148
|
const result = await file_replaceContent(target, tmpPath);
|
|
149
|
+
// The folder's listing is stale by both its names: where the store
|
|
150
|
+
// keeps it, and the path the file was reached by.
|
|
91
151
|
listCache_get().cache_invalidate(posix.dirname(target));
|
|
152
|
+
listCache_get().cache_invalidate(posix.dirname(await path_resolve(named)));
|
|
92
153
|
if (result.success) {
|
|
93
|
-
return envelope_ok(`${chalk.green(`Saved: ${
|
|
154
|
+
return envelope_ok(`${chalk.green(`Saved: ${named}`)}\n`);
|
|
94
155
|
}
|
|
95
156
|
const apiErr = errorStack.stack_pop();
|
|
96
157
|
let renderedErr = `${chalk.red(`edit: Save failed — ${result.error}`)}\n`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../../src/builtins/fs/edit.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../../src/builtins/fs/edit.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ExpressionDeclaration } from '../../core/commandDeclaration.js';
|
|
1
2
|
import { type CommandEnvelope } from '@fnndsc/menu';
|
|
2
3
|
/** One entry the walk visits. */
|
|
3
4
|
export interface FindNode {
|
|
@@ -80,3 +81,27 @@ export declare function find_evaluate(expr: FindExpr, node: FindNode, out: strin
|
|
|
80
81
|
* @returns The selected paths, and why any part of the walk failed.
|
|
81
82
|
*/
|
|
82
83
|
export declare function builtin_find(args: string[]): Promise<CommandEnvelope>;
|
|
84
|
+
/**
|
|
85
|
+
* Completes one word of a `find` line: a path among the starting points, a
|
|
86
|
+
* test or operator once the expression has begun (or when a dash is typed),
|
|
87
|
+
* and `-type`'s and `-status`'s words.
|
|
88
|
+
*
|
|
89
|
+
* @param words - The words before the one completed.
|
|
90
|
+
* @param word - The word typed so far.
|
|
91
|
+
* @returns The candidates.
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```ts
|
|
95
|
+
* await find_complete(['.', '-type'], ''); // ['f', 'd', 'l']
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
export declare function find_complete(words: readonly string[], word: string): Promise<string[]>;
|
|
99
|
+
/**
|
|
100
|
+
* `find [path...] [expression]`: the declaration, an expression grammar.
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* ```ts
|
|
104
|
+
* commands_register({ declarations: [findCommand] });
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
export declare const findCommand: ExpressionDeclaration;
|
package/dist/builtins/fs/find.js
CHANGED
|
@@ -6,7 +6,10 @@
|
|
|
6
6
|
* The walk reads every folder through the listing cache (`vfs.listing_get`),
|
|
7
7
|
* the same listings `ls` reads, so a tree already seen is walked without a
|
|
8
8
|
* word to CUBE; only a folder never listed, or one whose listing expired, is
|
|
9
|
-
* fetched.
|
|
9
|
+
* fetched. A starting point is walked where the store keeps it
|
|
10
|
+
* (`storePath_resolve`: a run's `data` path, a link named on the line, as
|
|
11
|
+
* POSIX's `-H`), and links met below it are not followed (POSIX's default),
|
|
12
|
+
* the paths printed as the starting point was typed. A long walk says how far
|
|
10
13
|
* it has got, and Ctrl-C stops it, saying where; a folder that cannot be read
|
|
11
14
|
* is named and the command fails, as POSIX `find` does, without stopping the
|
|
12
15
|
* walk.
|
|
@@ -17,11 +20,15 @@
|
|
|
17
20
|
* `-mindepth N`; actions `-print` (the default) and `-print0`. Anything else
|
|
18
21
|
* is refused by name.
|
|
19
22
|
*
|
|
23
|
+
* Declared in one record (`findCommand`) as an expression grammar: its words
|
|
24
|
+
* are tests and operators, not options, so it parses them itself and
|
|
25
|
+
* completes them itself (`find_complete`).
|
|
26
|
+
*
|
|
20
27
|
* @module
|
|
21
28
|
*/
|
|
22
29
|
import chalk from 'chalk';
|
|
23
30
|
import path from 'path';
|
|
24
|
-
import { path_resolve } from '../utils.js';
|
|
31
|
+
import { path_resolve, storePath_resolve } from '../utils.js';
|
|
25
32
|
import { vfs } from '../../lib/vfs/vfs.js';
|
|
26
33
|
import { vfsDispatcher_get } from '../../core/filesystem.js';
|
|
27
34
|
import { spinner } from '../../lib/spinner.js';
|
|
@@ -299,8 +306,10 @@ export async function builtin_find(args) {
|
|
|
299
306
|
};
|
|
300
307
|
try {
|
|
301
308
|
for (const start of query.starts) {
|
|
302
|
-
|
|
303
|
-
const
|
|
309
|
+
// Walked where the store keeps it: a run's data path, a link on the line.
|
|
310
|
+
const resolved = await storePath_resolve(start);
|
|
311
|
+
const logical = await path_resolve(start);
|
|
312
|
+
const shownRoot = start.startsWith('~') ? logical : start;
|
|
304
313
|
const self = await vfs.listing_get(resolved, { directory: true });
|
|
305
314
|
const entry = self.ok ? self.value.items[0] : undefined;
|
|
306
315
|
if (entry === undefined) {
|
|
@@ -309,7 +318,7 @@ export async function builtin_find(args) {
|
|
|
309
318
|
continue;
|
|
310
319
|
}
|
|
311
320
|
const rootType = itemType_derive(entry);
|
|
312
|
-
visit({ shown: shownRoot, name: path.posix.basename(
|
|
321
|
+
visit({ shown: shownRoot, name: path.posix.basename(logical) || logical, type: rootType, date: entry.date || undefined, depth: 0 });
|
|
313
322
|
if (rootType !== 'd')
|
|
314
323
|
continue;
|
|
315
324
|
// Depth first, in listing order: an entry, then everything beneath it.
|
|
@@ -426,4 +435,66 @@ export async function builtin_find(args) {
|
|
|
426
435
|
const failed = failures !== unjudgedNote;
|
|
427
436
|
return { status: failed ? 'error' : 'ok', rendered: out.join(''), renderedErr: failures === '' ? undefined : (failed ? chalk.red(failures) : chalk.yellow(failures)) };
|
|
428
437
|
}
|
|
438
|
+
/** find's tests, operators and actions, as completion offers them. */
|
|
439
|
+
const FIND_PRIMARIES = [
|
|
440
|
+
'-name', '-iname', '-path', '-ipath', '-type', '-newermt', '-status', '-plugin', '-pipeline', '-workflow',
|
|
441
|
+
'-maxdepth', '-mindepth', '-print', '-print0', '-true', '-false', '-not', '-o', '-or', '-a', '-and',
|
|
442
|
+
];
|
|
443
|
+
/** The tests that take the next word as their argument. */
|
|
444
|
+
const FIND_TAKES_ARGUMENT = new Set([
|
|
445
|
+
'-name', '-iname', '-path', '-ipath', '-wholename', '-type', '-newermt', '-status', '-plugin', '-pipeline', '-workflow', '-maxdepth', '-mindepth',
|
|
446
|
+
]);
|
|
447
|
+
/** The statuses `-status` most often asks for. */
|
|
448
|
+
const FIND_STATUSES = ['finishedSuccessfully', 'finishedWithError', 'started', 'scheduled', 'waiting', 'cancelled'];
|
|
449
|
+
/**
|
|
450
|
+
* Completes one word of a `find` line: a path among the starting points, a
|
|
451
|
+
* test or operator once the expression has begun (or when a dash is typed),
|
|
452
|
+
* and `-type`'s and `-status`'s words.
|
|
453
|
+
*
|
|
454
|
+
* @param words - The words before the one completed.
|
|
455
|
+
* @param word - The word typed so far.
|
|
456
|
+
* @returns The candidates.
|
|
457
|
+
*
|
|
458
|
+
* @example
|
|
459
|
+
* ```ts
|
|
460
|
+
* await find_complete(['.', '-type'], ''); // ['f', 'd', 'l']
|
|
461
|
+
* ```
|
|
462
|
+
*/
|
|
463
|
+
export async function find_complete(words, word) {
|
|
464
|
+
const previous = words.at(-1);
|
|
465
|
+
if (previous === '-type')
|
|
466
|
+
return ['f', 'd', 'l'].filter((kind) => kind.startsWith(word));
|
|
467
|
+
if (previous === '-status')
|
|
468
|
+
return FIND_STATUSES.filter((status) => status.startsWith(word));
|
|
469
|
+
if (previous !== undefined && FIND_TAKES_ARGUMENT.has(previous))
|
|
470
|
+
return [];
|
|
471
|
+
const begun = words.some((one) => /^[-!(]/.test(one));
|
|
472
|
+
if (begun || word.startsWith('-'))
|
|
473
|
+
return FIND_PRIMARIES.filter((primary) => primary.startsWith(word));
|
|
474
|
+
const { cfsPaths_complete } = await import('../../lib/completer/cfsPaths.js');
|
|
475
|
+
return cfsPaths_complete(word);
|
|
476
|
+
}
|
|
477
|
+
/**
|
|
478
|
+
* `find [path...] [expression]`: the declaration, an expression grammar.
|
|
479
|
+
*
|
|
480
|
+
* @example
|
|
481
|
+
* ```ts
|
|
482
|
+
* commands_register({ declarations: [findCommand] });
|
|
483
|
+
* ```
|
|
484
|
+
*/
|
|
485
|
+
export const findCommand = {
|
|
486
|
+
name: 'find',
|
|
487
|
+
grammar: 'expression',
|
|
488
|
+
help: {
|
|
489
|
+
usage: 'find [path...] [expression]',
|
|
490
|
+
summary: 'Walk folders and print the paths an expression selects',
|
|
491
|
+
description: "Walk from each path (. when none) and print the paths the expression selects. Tests and actions join by implicit AND, -o, ! (or -not) and parentheses. A starting point is walked where the store keeps it, so a run's data path and a link named on the line are walked at their target; links met below it are not followed. Folders are read from the listing cache, so a tree already seen is walked without asking CUBE; /proc/jobs is answered whole from the session's job index. A long walk says how far it has got; Ctrl-C stops it and says where. Tests: -name PATTERN and -iname PATTERN (the entry's name matches a shell pattern; -iname ignores case); -path PATTERN and -ipath PATTERN (the printed path matches; * crosses /); -type f|d|l (a file, a folder, a link); -newermt DATE (changed after DATE: 2026-10-10, or an ISO time); -status PATTERN (a job's or feed's status in /proc/jobs: finishedWithError, started, ...); -plugin PATTERN (the plugin a job ran in /proc/jobs: pl-dircopy, 'pl-dy*'); -pipeline PATTERN (the pipeline whose run made a job in /proc/jobs; '' is a direct run); -workflow ID (the pipeline run that made a job in /proc/jobs). Options: -maxdepth N and -mindepth N (descend at most N levels; test only from level N). Actions: -print (the default) and -print0 (end each path with NUL).",
|
|
492
|
+
category: 'Files',
|
|
493
|
+
posix: { group: 'Files', differs: 'walks the namespace through the listing cache; a starting point is walked at its target, links below it are not followed' },
|
|
494
|
+
examples: ["find ~ -name '*.nii'", 'find ~/feeds -maxdepth 2 -type d', "find . -name '*.json' -o -name '*.csv'", 'find /proc/jobs -plugin pl-dircopy -status finishedWithError', 'find /proc/jobs -maxdepth 1 -newermt 2026-10-10'],
|
|
495
|
+
},
|
|
496
|
+
holds: [],
|
|
497
|
+
handler: (args) => builtin_find(args),
|
|
498
|
+
complete: find_complete,
|
|
499
|
+
};
|
|
429
500
|
//# sourceMappingURL=find.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find.js","sourceRoot":"","sources":["../../../src/builtins/fs/find.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"find.js","sourceRoot":"","sources":["../../../src/builtins/fs/find.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE9D,OAAO,EAAE,GAAG,EAAmB,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AACvG,OAAO,EAAE,UAAU,EAAgC,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,cAAc,EAA0C,MAAM,cAAc,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AA6CxD,8DAA8D;AAC9D,MAAM,iBAAiB,GAAW,IAAI,CAAC;AAEvC,iDAAiD;AACjD,MAAM,YAAY,GAAwB,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAEzE;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAe,EAAE,aAAsB,KAAK;IAClF,IAAI,MAAM,GAAW,EAAE,CAAC;IACxB,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChD,MAAM,EAAE,GAAW,OAAO,CAAC,CAAC,CAAW,CAAC;QACxC,IAAI,EAAE,KAAK,GAAG;YAAE,MAAM,IAAI,IAAI,CAAC;aAC1B,IAAI,EAAE,KAAK,GAAG;YAAE,MAAM,IAAI,GAAG,CAAC;aAC9B,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACpB,MAAM,KAAK,GAAW,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAClD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;gBAAC,MAAM,IAAI,KAAK,CAAC;gBAAC,SAAS;YAAC,CAAC;YAChD,MAAM,IAAI,GAAW,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC3F,MAAM,IAAI,IAAI,IAAI,GAAG,CAAC;YACtB,CAAC,GAAG,KAAK,CAAC;QACZ,CAAC;aAAM,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YACjD,MAAM,IAAK,OAAO,CAAC,EAAE,CAAC,CAAY,CAAC,OAAO,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;QAC7E,CAAC;;YAAM,MAAM,IAAI,EAAE,CAAC,OAAO,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,IAAI,MAAM,CAAC,IAAI,MAAM,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,IAAc;IACvC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,CAAC,GAAW,CAAC,CAAC;IAClB,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAW,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAW,CAAC,CAAC;IAC9F,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAa,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACtC,IAAI,EAAE,GAAW,CAAC,CAAC;IACnB,IAAI,QAAQ,GAAW,MAAM,CAAC,iBAAiB,CAAC;IAChD,IAAI,QAAQ,GAAW,CAAC,CAAC;IACzB,IAAI,IAAI,GAAY,KAAK,CAAC;IAC1B,IAAI,QAAQ,GAAY,KAAK,CAAC;IAC9B,IAAI,UAAU,GAAkB,IAAI,CAAC;IAErC,MAAM,QAAQ,GAAG,CAAC,SAAiB,EAAU,EAAE;QAC7C,MAAM,KAAK,GAAuB,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9C,IAAI,KAAK,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,SAAS,SAAS,oBAAoB,CAAC,CAAC;QACjF,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,CAAC,SAAiB,EAAU,EAAE;QAC1C,MAAM,KAAK,GAAW,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,SAAS,SAAS,yBAAyB,KAAK,GAAG,CAAC,CAAC;QAC/F,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,GAAa,EAAE;QAC7B,MAAM,IAAI,GAAuB,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3C,IAAI,IAAI,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QAC9F,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,EAAE,EAAE,CAAC;YACL,MAAM,KAAK,GAAa,EAAE,EAAE,CAAC;YAC7B,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YACpE,EAAE,EAAE,CAAC;YACL,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,IAAc,CAAC;QACnB,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,OAAO,CAAC;YAAC,KAAK,QAAQ,CAAC,CAAC,CAAC;gBAC5B,MAAM,EAAE,GAAW,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC;gBAC9E,IAAI,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAc,EAAW,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/E,MAAM;YACR,CAAC;YACD,KAAK,OAAO,CAAC;YAAC,KAAK,QAAQ,CAAC;YAAC,KAAK,YAAY,CAAC,CAAC,CAAC;gBAC/C,MAAM,EAAE,GAAW,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC;gBAC9E,IAAI,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAc,EAAW,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChF,MAAM;YACR,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,IAAI,GAAW,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACpC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,GAAG,CAAC,CAAC;gBACnG,IAAI,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAc,EAAW,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBAC/E,MAAM;YACR,CAAC;YACD,KAAK,WAAW,CAAC;YAAC,KAAK,WAAW,CAAC,CAAC,CAAC;gBACnC,MAAM,MAAM,GAAW,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACtC,MAAM,EAAE,GAAW,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACzD,MAAM,KAAK,GAA4B,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;gBACtF,QAAQ,GAAG,IAAI,CAAC;gBAChB,IAAI,KAAK,KAAK,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,UAAU,KAAK,IAAI;oBAAE,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;gBACrG,IAAI,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAc,EAAW,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,SAAS,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAW,CAAC,EAAE,CAAC;gBACxH,MAAM;YACR,CAAC;YACD,KAAK,SAAS,CAAC;YAAC,KAAK,SAAS,CAAC,CAAC,CAAC;gBAC/B,MAAM,EAAE,GAAW,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;gBACjE,MAAM,KAAK,GAAwB,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAC5E,IAAI,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAc,EAAW,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,SAAS,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAW,CAAC,EAAE,CAAC;gBACxH,MAAM;YACR,CAAC;YACD,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,MAAM,IAAI,GAAW,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACpC,MAAM,IAAI,GAAW,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,GAAG,CAAC,CAAC;gBACtF,IAAI,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAc,EAAW,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;gBACpH,MAAM;YACR,CAAC;YACD,KAAK,WAAW;gBAAE,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;gBAAC,IAAI,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAY,EAAE,CAAC,IAAI,EAAE,CAAC;gBAAC,MAAM;YACpG,KAAK,WAAW;gBAAE,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;gBAAC,IAAI,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAY,EAAE,CAAC,IAAI,EAAE,CAAC;gBAAC,MAAM;YACpG,KAAK,OAAO;gBAAE,IAAI,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAY,EAAE,CAAC,IAAI,EAAE,CAAC;gBAAC,MAAM;YACxE,KAAK,QAAQ;gBAAE,IAAI,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAY,EAAE,CAAC,KAAK,EAAE,CAAC;gBAAC,MAAM;YAC1E,KAAK,QAAQ;gBAAE,IAAI,GAAG,IAAI,CAAC;gBAAC,IAAI,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;gBAAC,MAAM;YAC7E,KAAK,SAAS;gBAAE,IAAI,GAAG,IAAI,CAAC;gBAAC,IAAI,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;gBAAC,MAAM;YAC9E,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,GAAG,CAAC,CAAC;QAChE,CAAC;QACD,EAAE,EAAE,CAAC;QACL,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IACF,MAAM,GAAG,GAAG,GAAa,EAAE;QACzB,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,MAAM,EAAE,CAAC;YAAC,EAAE,EAAE,CAAC;YAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC;QAAC,CAAC;QAChG,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC,CAAC;IACF,MAAM,GAAG,GAAG,GAAa,EAAE;QACzB,IAAI,IAAI,GAAa,GAAG,EAAE,CAAC;QAC3B,OAAO,EAAE,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC;YAC3F,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,MAAM;gBAAE,EAAE,EAAE,CAAC;YACrD,IAAI,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC;QAC7C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IACF,MAAM,EAAE,GAAG,GAAa,EAAE;QACxB,IAAI,IAAI,GAAa,GAAG,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC;YAAC,EAAE,EAAE,CAAC;YAAC,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC;QAAC,CAAC;QACtG,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,IAAI,GAAa,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAY,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC/F,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM;YAAE,OAAO,qBAAqB,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC;QAChE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IAC1E,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,IAAc,EAAE,IAAc,EAAE,GAAa;IACzE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,KAAK,CAAC,CAAC,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAC/F,KAAK,IAAI,CAAC,CAAC,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAC9F,KAAK,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAC3D,KAAK,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,KAAK,OAAO;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;YAAC,OAAO,IAAI,CAAC;IACnE,CAAC;AACH,CAAC;AAED,yEAAyE;AACzE,SAAS,gBAAgB,CAAC,IAAiB;IACzC,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1E,MAAM,KAAK,GAA2B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnE,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,4CAA4C;AAC5C,SAAS,eAAe,CAAC,IAAiB;IACxC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,GAAG,CAAC;IACrC,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACjD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAc;IAC/C,MAAM,KAAK,GAAuB,UAAU,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,YAAY,CAAC,CAAC,CAAC,CAAC;QAChB,OAAO,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChE,CAAC;IACD,0BAA0B,EAAE,CAAC;IAC7B,MAAM,MAAM,GAA4B,6BAA6B,EAAE,CAAC;IACxE,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,QAAQ,GAAW,EAAE,CAAC;IAC1B,IAAI,OAAO,GAAW,CAAC,CAAC;IACxB,IAAI,KAAK,GAAW,CAAC,CAAC;IACtB,MAAM,SAAS,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;IACrC,IAAI,SAAS,GAAY,KAAK,CAAC;IAC/B,MAAM,QAAQ,GAAG,GAAS,EAAE;QAC1B,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,iBAAiB;YAAE,OAAO;QACvD,MAAM,KAAK,GAAW,SAAS,OAAO,UAAU,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,YAAY,KAAK,QAAQ,CAAC;QAClG,IAAI,SAAS;YAAE,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;aAAM,CAAC;YAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAAC,SAAS,GAAG,IAAI,CAAC;QAAC,CAAC;IAC/F,CAAC,CAAC;IACF,kFAAkF;IAClF,IAAI,QAAQ,GAAW,CAAC,CAAC;IACzB,MAAM,KAAK,GAAG,CAAC,IAAc,EAAQ,EAAE;QACrC,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;YAAE,QAAQ,EAAE,CAAC;QAC1H,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ;YAAE,OAAO;QACxC,MAAM,MAAM,GAAW,GAAG,CAAC,MAAM,CAAC;QAClC,MAAM,OAAO,GAAY,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAC9D,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,OAAO;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QACxD,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM;YAAE,KAAK,EAAE,CAAC;IACnC,CAAC,CAAC;IAEF,IAAI,CAAC;QACH,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjC,0EAA0E;YAC1E,MAAM,QAAQ,GAAW,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACxD,MAAM,OAAO,GAAW,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;YAClD,MAAM,SAAS,GAAW,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;YAClE,MAAM,IAAI,GAAuB,MAAM,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACtF,MAAM,KAAK,GAA4B,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACjF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,UAAU,CAAC,SAAS,EAAE,CAAC;gBACvB,QAAQ,IAAI,UAAU,KAAK,gCAAgC,CAAC;gBAC5D,SAAS;YACX,CAAC;YACD,MAAM,QAAQ,GAAoB,eAAe,CAAC,KAAK,CAAC,CAAC;YACzD,KAAK,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YACpI,IAAI,QAAQ,KAAK,GAAG;gBAAE,SAAS;YAC/B,uEAAuE;YACvE,MAAM,IAAI,GAAG,KAAK,EAAE,IAAY,EAAE,KAAa,EAAE,KAAa,EAAE,QAAsC,CAAC,IAAc,EAAY,EAAE,CAAC,IAAI,EAAoB,EAAE;gBAC5J,IAAI,MAAM,EAAE,OAAO;oBAAE,OAAO,KAAK,CAAC;gBAClC,IAAI,KAAK,IAAI,KAAK,CAAC,QAAQ;oBAAE,OAAO,IAAI,CAAC;gBACzC,MAAM,MAAM,GAAuB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC/D,OAAO,EAAE,CAAC;gBACV,QAAQ,EAAE,CAAC;gBACX,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;oBACf,MAAM,GAAG,GAAW,UAAU,CAAC,SAAS,EAAE,EAAE,OAAO,IAAI,gBAAgB,CAAC;oBACxE,QAAQ,IAAI,UAAU,KAAK,MAAM,GAAG,IAAI,CAAC;oBACzC,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;oBACtC,MAAM,IAAI,GAAa,KAAK,CAAC;wBAC3B,KAAK,EAAE,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE;wBAChE,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC;wBAC3B,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,SAAS;wBAC5B,KAAK,EAAE,KAAK,GAAG,CAAC;wBAChB,MAAM,EAAE,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;wBACjE,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC;qBAC/B,CAAC,CAAC;oBACH,KAAK,CAAC,IAAI,CAAC,CAAC;oBACZ,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;wBAAE,OAAO,KAAK,CAAC;gBACxH,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC,CAAC;YACF,oEAAoE;YACpE,wDAAwD;YACxD,8GAA8G;YAC9G,+GAA+G;YAC/G,0GAA0G;YAC1G,mEAAmE;YACnE,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;gBAC3D,sEAAsE;gBACtE,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;gBAC3D,MAAM,GAAG,GAAwC,MAAM,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAC1F,MAAM,IAAI,GAAgB,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC5C,MAAM,KAAK,GAAG,CAAC,IAAc,EAAY,EAAE;oBACzC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;wBAAE,OAAO,IAAI,CAAC;oBAC3C,MAAM,EAAE,GAAW,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;oBACjE,OAAO,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBAC7E,CAAC,CAAC;gBACF,IAAI,OAAO,GAAY,KAAK,CAAC;gBAC7B,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;oBAC/B,MAAM,GAAG,GAAW,QAAQ,MAAM,EAAE,CAAC;oBACrC,KAAK,CAAC,EAAE,KAAK,EAAE,SAAS,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;oBACxG,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,SAAS,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,GAAG,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;wBAAC,OAAO,GAAG,IAAI,CAAC;wBAAC,MAAM;oBAAC,CAAC;gBAChJ,CAAC;gBACD,IAAI,OAAO,EAAE,CAAC;oBAAC,QAAQ,IAAI,gCAAgC,OAAO,aAAa,KAAK,iBAAiB,CAAC;oBAAC,MAAM;gBAAC,CAAC;gBAC/G,SAAS;YACX,CAAC;YACD,MAAM,IAAI,GAAsB,MAAM,iBAAiB,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAS,EAAE,CAAC,IAAI,CAAC,CAAC;YACpG,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAClB,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,GAAW,EAAU,EAAE,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;gBAClG,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBACjC,IAAI,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ;wBAAE,SAAS;oBAC3C,KAAK,CAAC;wBACJ,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC;wBACjC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI;wBACrB,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,IAAmB,CAAC;wBAChD,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,SAAS;wBAClC,KAAK,EAAE,KAAK,CAAC,KAAK;wBAClB,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM;wBACpD,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC;wBAC/B,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC;wBACnC,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC;qBACpC,CAAC,CAAC;gBACL,CAAC;gBACD,IAAI,OAAO,GAAY,KAAK,CAAC;gBAC7B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBAClC,MAAM,KAAK,GAAW,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;oBAC5C,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;wBAAC,OAAO,GAAG,IAAI,CAAC;wBAAC,MAAM;oBAAC,CAAC;gBAC5G,CAAC;gBACD,IAAI,OAAO,EAAE,CAAC;oBAAC,QAAQ,IAAI,gCAAgC,OAAO,aAAa,KAAK,iBAAiB,CAAC;oBAAC,MAAM;gBAAC,CAAC;gBAC/G,SAAS;YACX,CAAC;YACD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1C,QAAQ,IAAI,gCAAgC,OAAO,aAAa,KAAK,iBAAiB,CAAC;gBACvF,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,IAAI,SAAS;YAAE,OAAO,CAAC,IAAI,EAAE,CAAC;IAChC,CAAC;IAED,4EAA4E;IAC5E,MAAM,YAAY,GAAW,QAAQ,GAAG,CAAC;QACvC,CAAC,CAAC,SAAS,QAAQ,OAAO,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,wCAAwC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,mFAAmF,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,QAAQ;QAClP,CAAC,CAAC,EAAE,CAAC;IACP,IAAI,QAAQ,KAAK,EAAE;QAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACrC,QAAQ,IAAI,YAAY,CAAC;IACzB,MAAM,MAAM,GAAY,QAAQ,KAAK,YAAY,CAAC;IAClD,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;AACzK,CAAC;AAED,sEAAsE;AACtE,MAAM,cAAc,GAA0B;IAC5C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW;IACzG,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM;CACpG,CAAC;AAEF,2DAA2D;AAC3D,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CAAC;IACvD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW;CAClJ,CAAC,CAAC;AAEH,kDAAkD;AAClD,MAAM,aAAa,GAA0B,CAAC,sBAAsB,EAAE,mBAAmB,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;AAE3I;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAwB,EAAE,IAAY;IACxE,MAAM,QAAQ,GAAuB,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAY,EAAW,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1G,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,MAAc,EAAW,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9G,IAAI,QAAQ,KAAK,SAAS,IAAI,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IAC3E,MAAM,KAAK,GAAY,KAAK,CAAC,IAAI,CAAC,CAAC,GAAW,EAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAChF,IAAI,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,OAAe,EAAW,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACxH,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;IAC9E,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAA0B;IAChD,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,YAAY;IACrB,IAAI,EAAE;QACJ,KAAK,EAAE,6BAA6B;QACpC,OAAO,EAAE,wDAAwD;QACjE,WAAW,EAAE,sxCAAsxC;QACnyC,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,0HAA0H,EAAE;QAC9J,QAAQ,EAAE,CAAC,sBAAsB,EAAE,kCAAkC,EAAE,wCAAwC,EAAE,8DAA8D,EAAE,iDAAiD,CAAC;KACpO;IACD,KAAK,EAAE,EAAE;IACT,OAAO,EAAE,CAAC,IAAc,EAA4B,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC;IACzE,QAAQ,EAAE,aAAa;CACxB,CAAC"}
|
package/dist/builtins/fs/ls.d.ts
CHANGED
|
@@ -2,11 +2,76 @@ import { type ListingItem, type CommandEnvelope } from '@fnndsc/menu';
|
|
|
2
2
|
/** Valid sort fields for ls. */
|
|
3
3
|
type LsSortField = 'name' | 'size' | 'date' | 'owner';
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
* Supports a virtual `/bin` directory for plugins and multiple paths (e.g., from wildcard expansion).
|
|
5
|
+
* `ls [-l1hfrdaA] [--sort <field>] [path…]`: the declaration.
|
|
7
6
|
*
|
|
8
|
-
* @
|
|
9
|
-
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* commands_register({ declarations: [lsCommand] });
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
export declare const lsCommand: import("../../core/commandDeclaration.js").CommandDeclaration<{
|
|
13
|
+
readonly operands: readonly [{
|
|
14
|
+
readonly name: "path";
|
|
15
|
+
readonly kind: "cfsPath";
|
|
16
|
+
readonly optional: true;
|
|
17
|
+
readonly repeat: true;
|
|
18
|
+
readonly glob: true;
|
|
19
|
+
readonly summary: "What to list; the working directory when none is given";
|
|
20
|
+
}];
|
|
21
|
+
readonly options: {
|
|
22
|
+
readonly long: {
|
|
23
|
+
readonly short: "l";
|
|
24
|
+
readonly summary: "Long format: detail, feed and plugin titles, each row numbered";
|
|
25
|
+
};
|
|
26
|
+
readonly oneColumn: {
|
|
27
|
+
readonly short: "1";
|
|
28
|
+
readonly summary: "One entry per line";
|
|
29
|
+
};
|
|
30
|
+
readonly human: {
|
|
31
|
+
readonly short: "h";
|
|
32
|
+
readonly summary: "Human-readable sizes (with -l)";
|
|
33
|
+
};
|
|
34
|
+
readonly refresh: {
|
|
35
|
+
readonly short: "f";
|
|
36
|
+
readonly long: "refresh";
|
|
37
|
+
readonly summary: "Read afresh, past the cache";
|
|
38
|
+
};
|
|
39
|
+
readonly reverse: {
|
|
40
|
+
readonly short: "r";
|
|
41
|
+
readonly long: "reverse";
|
|
42
|
+
readonly summary: "Reverse the sort";
|
|
43
|
+
};
|
|
44
|
+
readonly directory: {
|
|
45
|
+
readonly short: "d";
|
|
46
|
+
readonly summary: "List a folder itself, not its contents";
|
|
47
|
+
};
|
|
48
|
+
readonly all: {
|
|
49
|
+
readonly short: "a";
|
|
50
|
+
readonly long: "all";
|
|
51
|
+
readonly summary: "Taken: nothing in a listing is hidden";
|
|
52
|
+
};
|
|
53
|
+
readonly almostAll: {
|
|
54
|
+
readonly short: "A";
|
|
55
|
+
readonly long: "almost-all";
|
|
56
|
+
readonly summary: "Taken: nothing in a listing is hidden";
|
|
57
|
+
};
|
|
58
|
+
readonly sort: {
|
|
59
|
+
readonly long: "sort";
|
|
60
|
+
readonly summary: "Sort by";
|
|
61
|
+
readonly value: {
|
|
62
|
+
readonly name: "field";
|
|
63
|
+
readonly kind: "enum";
|
|
64
|
+
readonly values: readonly ["name", "size", "date", "owner"];
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
}>;
|
|
69
|
+
/**
|
|
70
|
+
* `ls` over words already split: the declaration's parse and handler, for a
|
|
71
|
+
* caller holding words rather than a line.
|
|
72
|
+
*
|
|
73
|
+
* @param args - The words after `ls`.
|
|
74
|
+
* @returns The listing, or the refusal of a bad line.
|
|
10
75
|
*/
|
|
11
76
|
export declare function builtin_ls(args: string[]): Promise<CommandEnvelope>;
|
|
12
77
|
/** Typed invocation options for ls. */
|
package/dist/builtins/fs/ls.js
CHANGED
|
@@ -1,65 +1,104 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @file
|
|
3
|
-
*
|
|
2
|
+
* @file `ls`: lists folders and files of ChRIS's filesystem (CFS).
|
|
3
|
+
*
|
|
4
|
+
* Declared in one record (`lsCommand`): its grammar, its help and its
|
|
5
|
+
* handler. Paths glob; options may stand anywhere among them.
|
|
6
|
+
*
|
|
7
|
+
* Key components:
|
|
8
|
+
* - lsCommand: the declaration.
|
|
9
|
+
* - builtin_ls: the declaration run over words already split.
|
|
10
|
+
* - ls_run: the typed core behind both, and the typed API.
|
|
11
|
+
*
|
|
12
|
+
* Typical usage:
|
|
13
|
+
* ```ts
|
|
14
|
+
* await builtin_ls(['-l', 'docs']);
|
|
15
|
+
* await ls_run({ paths: ['docs'], long: true });
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* Dependencies: the session's filesystem, its listing cache and its cwd.
|
|
19
|
+
*
|
|
20
|
+
* @module
|
|
4
21
|
*/
|
|
5
22
|
import { answerNumbering_derive, handle_word, numberedFooter_render } from '../../session/answer.js';
|
|
6
23
|
import chalk from 'chalk';
|
|
7
|
-
import {
|
|
24
|
+
import { path_resolve } from '../utils.js';
|
|
8
25
|
import { listingCache_get, vfsDispatcher_get } from '../../core/filesystem.js';
|
|
9
26
|
import { itemType_isContainer } from '../../core/itemKinds.js';
|
|
10
27
|
import { errorStack } from '@fnndsc/fond';
|
|
11
28
|
import { session } from '../../session/index.js';
|
|
12
29
|
import { vfs } from '../../lib/vfs/vfs.js';
|
|
13
|
-
import { envelope_error } from '@fnndsc/menu';
|
|
14
30
|
import { exitCode_set } from '../../core/handlerRun.js';
|
|
15
|
-
|
|
16
|
-
|
|
31
|
+
import { command_declare } from '../../core/commandDeclaration.js';
|
|
32
|
+
import { declaredCommand_run } from '../../core/commandParse.js';
|
|
33
|
+
/** What an `ls` line may hold. `-a` and `-A` are taken and already hold: nothing in a listing is hidden. */
|
|
34
|
+
const LS_GRAMMAR = {
|
|
35
|
+
operands: [
|
|
36
|
+
{ name: 'path', kind: 'cfsPath', optional: true, repeat: true, glob: true, summary: 'What to list; the working directory when none is given' },
|
|
37
|
+
],
|
|
38
|
+
options: {
|
|
39
|
+
long: { short: 'l', summary: 'Long format: detail, feed and plugin titles, each row numbered' },
|
|
40
|
+
oneColumn: { short: '1', summary: 'One entry per line' },
|
|
41
|
+
human: { short: 'h', summary: 'Human-readable sizes (with -l)' },
|
|
42
|
+
refresh: { short: 'f', long: 'refresh', summary: 'Read afresh, past the cache' },
|
|
43
|
+
reverse: { short: 'r', long: 'reverse', summary: 'Reverse the sort' },
|
|
44
|
+
directory: { short: 'd', summary: 'List a folder itself, not its contents' },
|
|
45
|
+
all: { short: 'a', long: 'all', summary: 'Taken: nothing in a listing is hidden' },
|
|
46
|
+
almostAll: { short: 'A', long: 'almost-all', summary: 'Taken: nothing in a listing is hidden' },
|
|
47
|
+
sort: { long: 'sort', summary: 'Sort by', value: { name: 'field', kind: 'enum', values: ['name', 'size', 'date', 'owner'] } },
|
|
48
|
+
},
|
|
49
|
+
};
|
|
17
50
|
/**
|
|
18
|
-
*
|
|
19
|
-
* in the listing is hidden.
|
|
20
|
-
*/
|
|
21
|
-
const LS_OPTIONS = ['l', 'h', '1', 'r', 'reverse', 'd', 'f', 'refresh', 'sort', 'a', 'A', 'all', 'almost-all'];
|
|
22
|
-
/** ls's long options that are switches, so the word after one is a path, never its value. */
|
|
23
|
-
const LS_SWITCHES = ['refresh', 'reverse', 'all', 'almost-all'];
|
|
24
|
-
/**
|
|
25
|
-
* An ls refusal, said before anything is listed.
|
|
51
|
+
* `ls [-l1hfrdaA] [--sort <field>] [path…]`: the declaration.
|
|
26
52
|
*
|
|
27
|
-
* @
|
|
28
|
-
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```ts
|
|
55
|
+
* commands_register({ declarations: [lsCommand] });
|
|
56
|
+
* ```
|
|
29
57
|
*/
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
58
|
+
export const lsCommand = command_declare({
|
|
59
|
+
name: 'ls',
|
|
60
|
+
grammar: LS_GRAMMAR,
|
|
61
|
+
help: {
|
|
62
|
+
summary: 'List directory contents',
|
|
63
|
+
description: "List the folders and files of ChRIS's filesystem: the working directory, or each path given (a wildcard matches paths). Several paths list files first, together, then each folder under its own name. The long format shows feed and plugin instance titles, and numbers each row with the handle an index names it by (@FIL2).",
|
|
64
|
+
category: 'Navigation',
|
|
65
|
+
posix: { group: 'Files', differs: "lists ChRIS's filesystem (CFS), not this machine's; -l numbers rows" },
|
|
66
|
+
examples: [
|
|
67
|
+
'ls # List current directory',
|
|
68
|
+
'ls -l # Long format with titles',
|
|
69
|
+
'ls -lh # Long format with human sizes',
|
|
70
|
+
'ls -f # Force refresh from server',
|
|
71
|
+
'ls /home/user/data # List specific directory',
|
|
72
|
+
'ls *.txt # List matching files (wildcard)',
|
|
73
|
+
'ls --sort=size -r # Sort by size, reversed',
|
|
74
|
+
'ls data -l # Options may follow the paths',
|
|
75
|
+
'',
|
|
76
|
+
'# Long format shows feed and plugin instance titles:',
|
|
77
|
+
'# d user 0 2025-05-18 feed_875 Brain MRI Analysis',
|
|
78
|
+
'# d user 0 2025-05-18 pl-dircopy_33314 pl-dircopy v2.1.2',
|
|
79
|
+
],
|
|
80
|
+
},
|
|
81
|
+
holds: [],
|
|
82
|
+
handler: async (args) => ls_run({
|
|
83
|
+
paths: args.operands.path,
|
|
84
|
+
long: args.options.long,
|
|
85
|
+
human: args.options.human,
|
|
86
|
+
oneColumn: args.options.oneColumn,
|
|
87
|
+
sort: args.options.sort ?? 'name',
|
|
88
|
+
reverse: args.options.reverse,
|
|
89
|
+
directory: args.options.directory,
|
|
90
|
+
refresh: args.options.refresh,
|
|
91
|
+
}),
|
|
92
|
+
});
|
|
33
93
|
/**
|
|
34
|
-
*
|
|
35
|
-
*
|
|
94
|
+
* `ls` over words already split: the declaration's parse and handler, for a
|
|
95
|
+
* caller holding words rather than a line.
|
|
36
96
|
*
|
|
37
|
-
* @param args -
|
|
38
|
-
* @returns
|
|
97
|
+
* @param args - The words after `ls`.
|
|
98
|
+
* @returns The listing, or the refusal of a bad line.
|
|
39
99
|
*/
|
|
40
100
|
export async function builtin_ls(args) {
|
|
41
|
-
|
|
42
|
-
const unknown = optionsUnknown_refusal('ls', parsed, LS_OPTIONS);
|
|
43
|
-
if (unknown !== null)
|
|
44
|
-
return ls_refusal(unknown);
|
|
45
|
-
let sortBy = 'name';
|
|
46
|
-
if (parsed['sort'] !== undefined) {
|
|
47
|
-
const sortValue = String(parsed['sort']);
|
|
48
|
-
if (!LS_SORT_FIELDS.includes(sortValue)) {
|
|
49
|
-
return ls_refusal(`ls: invalid argument '${sortValue}' for '--sort' (valid: ${LS_SORT_FIELDS.join(', ')})`);
|
|
50
|
-
}
|
|
51
|
-
sortBy = sortValue;
|
|
52
|
-
}
|
|
53
|
-
return ls_run({
|
|
54
|
-
paths: parsed._,
|
|
55
|
-
long: !!parsed['l'],
|
|
56
|
-
human: !!parsed['h'],
|
|
57
|
-
oneColumn: !!parsed['1'],
|
|
58
|
-
sort: sortBy,
|
|
59
|
-
reverse: !!parsed['reverse'] || !!parsed['r'],
|
|
60
|
-
directory: !!parsed['d'],
|
|
61
|
-
refresh: !!parsed['refresh'] || !!parsed['f'],
|
|
62
|
-
});
|
|
101
|
+
return declaredCommand_run(lsCommand, args);
|
|
63
102
|
}
|
|
64
103
|
/**
|
|
65
104
|
* Prefixes each entry line of a long listing with its handle, and adds the
|