Skip to content

Instantly share code, notes, and snippets.

@niner
Created September 1, 2016 10:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save niner/b23726cdef53b0a95f3461fc616702c4 to your computer and use it in GitHub Desktop.
Save niner/b23726cdef53b0a95f3461fc616702c4 to your computer and use it in GitHub Desktop.
raccoon out of process build
diff --git a/tools/raccoon b/tools/raccoon
index 6eac5cd..6d7c1a1 100644
--- a/tools/raccoon
+++ b/tools/raccoon
@@ -8,15 +8,16 @@ sub find-meta-file($dir) {
}
sub build(Distribution::Locally $dist) {
- return unless $dist.meta<builder>:exists;
+ run($*EXECUTABLE, $*PROGRAM-NAME, 'build', $dist.prefix);
+}
- my Distribution::Builder $builder = (require ::($dist.meta<builder>));
- $builder.new(:$dist).configure.build;
+sub path-to-dist(IO::Path $from) {
+ Distribution::Path.new($from, :file(find-meta-file($from)));
}
multi sub MAIN($from is copy = '.', :$to!, :$for!) {
$from = $from.IO;
- my $dist = Distribution::Path.new($from, :file(find-meta-file($from)));
+ my $dist = path-to-dist($from);
build($dist);
@@ -33,7 +34,7 @@ multi sub MAIN($from is copy = '.', :$to!, :$for!) {
multi sub MAIN($from is copy = '.', :$to = 'site', Bool :$force) {
$from = $from.IO;
- my $dist = Distribution::Path.new($from, :file(find-meta-file($from)));
+ my $dist = path-to-dist($from);
build($dist);
@@ -46,4 +47,13 @@ multi sub MAIN($from is copy = '.', :$to = 'site', Bool :$force) {
);
}
+multi sub MAIN('build', $from) {
+ my $dist = path-to-dist($from.IO);
+
+ return unless $dist.meta<builder>:exists;
+
+ my Distribution::Builder $builder = (require ::($dist.meta<builder>));
+ $builder.new(:$dist).configure.build;
+}
+
# vim: ft=perl6
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment