mirror of
				https://github.com/ohwgiles/laminar.git
				synced 2025-06-13 12:54:29 +00:00 
			
		
		
		
	resolves #33: laminar start output should reference run number
This commit is contained in:
		
							parent
							
								
									68d08f369b
								
							
						
					
					
						commit
						4d2388c271
					
				@ -111,22 +111,25 @@ int main(int argc, char** argv) {
 | 
				
			|||||||
            fprintf(stderr, "Usage %s start <jobName>\n", argv[0]);
 | 
					            fprintf(stderr, "Usage %s start <jobName>\n", argv[0]);
 | 
				
			||||||
            return EINVAL;
 | 
					            return EINVAL;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        kj::Vector<capnp::RemotePromise<LaminarCi::StartResults>> promises;
 | 
					        struct: public kj::TaskSet::ErrorHandler {
 | 
				
			||||||
 | 
					            void taskFailed(kj::Exception&&) override {}
 | 
				
			||||||
 | 
					        } ignoreFailed;
 | 
				
			||||||
 | 
					        kj::TaskSet ts(ignoreFailed);
 | 
				
			||||||
        int jobNameIndex = 2;
 | 
					        int jobNameIndex = 2;
 | 
				
			||||||
        // make a request for each job specified on the commandline
 | 
					        // make a request for each job specified on the commandline
 | 
				
			||||||
        do {
 | 
					        do {
 | 
				
			||||||
            auto req = laminar.startRequest();
 | 
					            auto req = laminar.startRequest();
 | 
				
			||||||
            req.setJobName(argv[jobNameIndex]);
 | 
					            req.setJobName(argv[jobNameIndex]);
 | 
				
			||||||
            int n = setParams(argc - jobNameIndex - 1, &argv[jobNameIndex + 1], req);
 | 
					            int n = setParams(argc - jobNameIndex - 1, &argv[jobNameIndex + 1], req);
 | 
				
			||||||
            promises.add(req.send());
 | 
					            ts.add(req.send().then([&ret,argv,jobNameIndex](capnp::Response<LaminarCi::StartResults> resp){
 | 
				
			||||||
            jobNameIndex += n + 1;
 | 
					                printf("%s:%d\n", argv[jobNameIndex], resp.getBuildNum());
 | 
				
			||||||
        } while(jobNameIndex < argc);
 | 
					                if(resp.getResult() != LaminarCi::JobResult::SUCCESS) {
 | 
				
			||||||
        // pend on the promises
 | 
					 | 
				
			||||||
        for(auto& p : promises) {
 | 
					 | 
				
			||||||
            if(p.wait(waitScope).getResult() != LaminarCi::JobResult::SUCCESS) {
 | 
					 | 
				
			||||||
                    ret = EFAILED;
 | 
					                    ret = EFAILED;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
        }
 | 
					            }));
 | 
				
			||||||
 | 
					            jobNameIndex += n + 1;
 | 
				
			||||||
 | 
					        } while(jobNameIndex < argc);
 | 
				
			||||||
 | 
					        ts.onEmpty().wait(waitScope);
 | 
				
			||||||
    } else if(strcmp(argv[1], "set") == 0) {
 | 
					    } else if(strcmp(argv[1], "set") == 0) {
 | 
				
			||||||
        if(argc < 3) {
 | 
					        if(argc < 3) {
 | 
				
			||||||
            fprintf(stderr, "Usage %s set param=value\n", argv[0]);
 | 
					            fprintf(stderr, "Usage %s set param=value\n", argv[0]);
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
interface LaminarCi {
 | 
					interface LaminarCi {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    trigger @0 (jobName :Text, params :List(JobParam)) -> (result :MethodResult);
 | 
					    trigger @0 (jobName :Text, params :List(JobParam)) -> (result :MethodResult);
 | 
				
			||||||
    start @1 (jobName :Text, params :List(JobParam)) -> (result :JobResult);
 | 
					    start @1 (jobName :Text, params :List(JobParam)) -> (result :JobResult, buildNum :UInt32);
 | 
				
			||||||
    set @2 (jobName :Text, buildNum :UInt32, param :JobParam) -> (result :MethodResult);
 | 
					    set @2 (jobName :Text, buildNum :UInt32, param :JobParam) -> (result :MethodResult);
 | 
				
			||||||
    lock @3 (lockName :Text) -> ();
 | 
					    lock @3 (lockName :Text) -> ();
 | 
				
			||||||
    release @4 (lockName :Text) -> ();
 | 
					    release @4 (lockName :Text) -> ();
 | 
				
			||||||
 | 
				
			|||||||
@ -114,9 +114,11 @@ public:
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
        std::shared_ptr<Run> run = laminar.queueJob(jobName, params);
 | 
					        std::shared_ptr<Run> run = laminar.queueJob(jobName, params);
 | 
				
			||||||
        if(const Run* r = run.get()) {
 | 
					        if(const Run* r = run.get()) {
 | 
				
			||||||
 | 
					            uint num = r->build;
 | 
				
			||||||
            runWaiters[r].emplace_back(kj::newPromiseAndFulfiller<RunState>());
 | 
					            runWaiters[r].emplace_back(kj::newPromiseAndFulfiller<RunState>());
 | 
				
			||||||
            return runWaiters[r].back().promise.then([context](RunState state) mutable {
 | 
					            return runWaiters[r].back().promise.then([context,num](RunState state) mutable {
 | 
				
			||||||
                context.getResults().setResult(fromRunState(state));
 | 
					                context.getResults().setResult(fromRunState(state));
 | 
				
			||||||
 | 
					                context.getResults().setBuildNum(num);
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            context.getResults().setResult(LaminarCi::JobResult::UNKNOWN);
 | 
					            context.getResults().setResult(LaminarCi::JobResult::UNKNOWN);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user