rexx-things/projects/oorexx/address-test.rex
2025-03-21 22:27:26 +00:00

68 lines
1.7 KiB
Rexx
Executable File

#!/usr/bin/env rexx
/* Rexx */
Address system "pwd" with output stem pwd.
.environment~pwd = pwd.1
Address system "ls -lAh "||.environment~pwd With output stem dir.
dirlist1 = .array~new()
Do i = 1 to dir.0
if dir.i~StartsWith("total") then nop
Else call add_to_array1(dir.i)
End
dirjson1 = .json~new()~toJSON(dirlist1)
say dirjson1
Say " "
call SysFileTree .environment~pwd||"/", file., 'BL'
dirlist2 = .array~new()
do i = 1 to file.0
call add_to_array2(file.i)
end
dirjson2 = .json~new()~toJSON(dirlist2)
Say dirjson2
Exit
add_to_array1: PROCEDURE expose dirlist1
parse arg attrs filecnt . . filesz . . . filenm
dirlist1~append(.directory~new())
dirlist1[dirlist1~last]['name'] = filenm
if attrs~startsWith("d") then dirlist1[dirlist1~last]['type'] = 'dir'
else dirlist1[dirlist1~last]['type'] = 'file'
if attrs~startsWith("d") then NOP
else dirlist1[dirlist1~last]['bytes'] = filesz
Return dirlist1
add_to_array2: PROCEDURE expose dirlist2
/* 3/16/25 2:29p 558 -rwxrwxr-x /home/gmgauthier/Projects/rexx-things/projects/oorexx/params.rex */
parse arg . . filesz attrs filepath
filenm = parse_filename(filepath)
dirlist2~append(.directory~new())
dirlist2[dirlist2~last]['name'] = filenm
if attrs~startsWith("d") then dirlist2[dirlist2~last]['type'] = 'dir'
else dirlist2[dirlist2~last]['type'] = 'file'
if attrs~startsWith("d") then NOP
else dirlist2[dirlist2~last]['bytes'] = filesz
Return dirlist2
parse_filename: procedure
parse arg filepath
/* Parse the filepath to get just the filename */
parse var filepath . '/' filename
do while pos('/', filename) > 0
parse var filename . '/' filename
end
return filename
::requires 'json.cls'