public async Task <SettingsConfiguration> Get( string path, bool directExe, FilePath?buildMetaPath, CancellationToken cancel, bool build) { var meta = buildMetaPath != null?_metaFileReader.Read(buildMetaPath.Value) : default; if (_shortCircuitSettingsProvider.Shortcircuit && meta?.SettingsConfiguration != null) { return(meta.SettingsConfiguration); } var settingsConfig = await ExecuteSettingsRetrieval(path, directExe, cancel, build); if (meta != null && buildMetaPath != null) { meta.SettingsConfiguration = settingsConfig; _writeShortCircuitMeta.WriteMeta(buildMetaPath.Value, meta); } return(settingsConfig); }
public async Task <ErrorResponse> Compile(RunnerRepoInfo info, CancellationToken cancel) { try { if (_shortCircuitCompilation.ShouldShortCircuit(info)) { _logger.Information("Short circuiting {Path} compilation because meta matched", info.ProjPath); return(ErrorResponse.Success); } } catch (Exception e) { _logger.Warning(e, "Failed when checking if we could short circuit compilation"); } try { _logger.Information("Clearing short circuit meta"); _fs.File.Delete(info.MetaPath); } catch (Exception e) { _logger.Error(e, "Failed when clearing short circuit meta"); } var resp = await _build.Compile(info.ProjPath, cancel).ConfigureAwait(false); if (resp.Failed) { return(resp); } try { _writeShortCircuitMeta.WriteMeta(info); } catch (Exception e) { _logger.Error(e, "Failed when saving short circuit meta"); return(ErrorResponse.Fail(e)); } return(resp); }