diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2025-04-07 18:14:20 -0400 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2025-04-07 18:14:20 -0400 |
| commit | 3efd7d9cfbd330ebb45f39648ee96a3e429a06f9 (patch) | |
| tree | 29acb9e2b2370bd155fed24fba79d01b553a24f3 /lib/shell | |
| parent | 15fabfb9be3e3620e4b96983a49017116cea40e2 (diff) | |
Move core libraries into their own folder
Diffstat (limited to 'lib/shell')
| -rw-r--r-- | lib/shell/shell.tm | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/lib/shell/shell.tm b/lib/shell/shell.tm new file mode 100644 index 00000000..da03f843 --- /dev/null +++ b/lib/shell/shell.tm @@ -0,0 +1,44 @@ +use commands + +lang Shell + convert(text:Text -> Shell) + return Shell.from_text("'" ++ text.replace($/'/, `'"'"'`) ++ "'") + + convert(texts:[Text] -> Shell) + return Shell.from_text(" ".join([Shell(t).text for t in texts])) + + convert(path:Path -> Shell) + return Shell(Text(path.expand_home())) + + convert(paths:[Path] -> Shell) + return Shell.from_text(" ".join([Shell(Text(p)).text for p in paths])) + + convert(n:Int -> Shell) return Shell.from_text(Text(n)) + convert(n:Int64 -> Shell) return Shell.from_text(Text(n)) + convert(n:Int32 -> Shell) return Shell.from_text(Text(n)) + convert(n:Int16 -> Shell) return Shell.from_text(Text(n)) + convert(n:Int8 -> Shell) return Shell.from_text(Text(n)) + convert(n:Num -> Shell) return Shell.from_text(Text(n)) + convert(n:Num32 -> Shell) return Shell.from_text(Text(n)) + + func command(shell:Shell -> Command) + return Command("sh", ["-c", shell.text]) + + func result(shell:Shell, input="", input_bytes:[Byte]=[] -> ProgramResult) + return shell.command().result(input=input, input_bytes=input_bytes) + + func run(shell:Shell -> ExitType) + return shell.command().run() + + func get_output(shell:Shell, input="", trim_newline=yes -> Text?) + return shell.command().get_output(input=input, trim_newline=trim_newline) + + func get_output_bytes(shell:Shell, input="", input_bytes:[Byte]=[] -> [Byte]?) + return shell.command().get_output_bytes(input=input, input_bytes=input_bytes) + + func by_line(shell:Shell -> func(->Text?)?) + return shell.command().by_line() + +func main(command:Shell) + for line in command.by_line()! + >> line |
