On Saturday, 18 November 2023 at 07:47:19 UTC, BoQsc wrote:
`program("someProgramName").pipe("someOtherProgramName");`
Executes and pipes output to another program.
`program();` - Only executes the program.
Serious answer: have a function handle this, instead of the
semicolon.
`program("p1").pipe("p2").run;` - does that
`program("p1").run;` - does the other
Supposedly this is the "builder pattern" but the wikipedia entry
seems to be deliberately bad.
Unserious answer, especially unsuitable for your concrete example
where you probably want subprocesses to run reliably and in
order: do something with object lifetime functions.
```d
import std.stdio : writeln;
class Program {
string program;
bool used;
this(string p) { program = p; }
~this() { if (!used) writeln("You forgot to chain program: ",
program); }
}
Program a(string p) {
return new Program(p);
}
void b(Program p) {
p.used = true;
writeln("using program: ", p.program);
}
void main() {
a("2");
a("1").b();
}
```