Esempio n. 1
0
        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);
        }