Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR is fairly hefty.
A
Segment
class is implemented to serve as the basic building block for thePipeline
. This clarifies the link between the fundamentalmake_*()
functions and thePipeline
object. In particular, eachmake_*()
call constructs aSegment
which is appended to thePipeline
.The
Segment
class has anexecute()
method, which replicates the execution behaviour of themake_*()
functions. HenceSegment$execute()
can be run to rebuild the targets associated with a given segment without adding a new segment to thePipeline
as would be done if we calledmake_*()
again.This makes it straightforward to implement a
Pipeline$build()
method: we simply sort theSegment
s topologically and then callexecute()
on each in turn.The
Segment
contains all the information that the oldmakepipe_result
S3 class did and therefore makes the latter redundant. The execution metadata (e.g. execution result, execution time, etc.) is updated via theSegment$update_result()
method wheneverSegment$execute()
is called