From dd1579607a83b4d960324e2ad8078831128f4b9f Mon Sep 17 00:00:00 2001 From: Nathan McCarty Date: Fri, 14 Feb 2025 23:01:44 -0500 Subject: [PATCH] Automatically search parent directories for the ipkg --- lib/IUtils.rakumod | 21 ++++++++++++++------- lib/IUtils/Compiler.rakumod | 12 +++++++----- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/lib/IUtils.rakumod b/lib/IUtils.rakumod index 0540148..e94a3f7 100644 --- a/lib/IUtils.rakumod +++ b/lib/IUtils.rakumod @@ -33,12 +33,14 @@ class Test { say $_.out.trim.lines.map(*.indent($indent-level + 2)) .join("\n"); } - if $_.err.trim { - say colored('stderr:', 'underline') - .indent($indent-level + 2); - say $_.err.trim.lines.map(*.indent($indent-level + 2)) - .join("\n"); - } + # say $_.err.elems; + # if $_.err.trim { + # say $_.err.trim.lines.elems; + # say colored('stderr:', 'underline') + # .indent($indent-level + 2); + # say $_.err.trim.lines.map(*.indent($indent-level + 2)) + # .join("\n"); + # } return True; } } @@ -143,5 +145,10 @@ sub scan-ipkg(IO::Path:D $ipkg --> PackageInfo:D) { sub scan-packages(--> Array[PackageInfo:D]) is export { my PackageInfo:D @ipkgs = paths(:file(*.ends-with(".ipkg"))).map(*.IO.&scan-ipkg); - return @ipkgs; + # Check out the parents if we didn't find an ipkg + if @ipkgs { + return @ipkgs; + } else { + indir $*CWD.parent, {scan-packages}; + } } diff --git a/lib/IUtils/Compiler.rakumod b/lib/IUtils/Compiler.rakumod index 14cb559..2c998c1 100644 --- a/lib/IUtils/Compiler.rakumod +++ b/lib/IUtils/Compiler.rakumod @@ -79,7 +79,8 @@ sub idris-run(*@cmd) is export { my $err = $proc.err.slurp(:close); if !$proc || $out.contains("Error:") { IdrisError.new( - out => $out, err => $err, + out => $out, + err => $err, exit-code => $proc.exitcode, command => @cmd.Str) .throw; } @@ -110,12 +111,13 @@ sub idris-exec($expr, $file, $output-type? = Unit) is export { } } # Run the expression - my $proc = run 'build/exec/iutils_out', :out, :err; - my $out = $proc.out.slurp(:close); - my $err = $proc.err.slurp(:close); + my $proc = run 'build/exec/iutils_out', :out, :!err; + my $out = $proc.out.slurp(); + # my $err = $proc.err.slurp(); unless $proc { ExpressionError.new( - out => $out, err => $err, + out => $out, + # err => $err, exit-code => $proc.exitcode, expr => $expr ).throw; }