protected DirPath ResolveSolutionDir(ICliConfiguration config, ILogger log) { var slnDir = config["SolutionDir", 0]?.ToDir(); if (slnDir == null || slnDir.Name.StartsWith("-")) { slnDir = ".".ToDir().FullName().ToDir(); log.Info($"{"SolutionDir"} not set. Will try to resolve automatically."); } if (slnDir.Exists() == false) { throw new CliException($"Directory not found: {slnDir.FullName()}", 404); } do { log.Debug($"Looking for sln files in {slnDir.FullName().Highlight()}"); if (slnDir.EnumerateFiles("*.sln").Any()) { log.Info($"SolutionDir resolved to: {slnDir.FullName().Highlight()}"); return(slnDir); } slnDir = slnDir.Parent; } while (slnDir != null); throw new CliException($"No solution files found in {".".ToDir().FullName()} or any parent dir", 404); }
public override BuildArgs Hydrate(ICliConfiguration config, BuildArgs args, ILogger log = null) { args.SolutionDir = ResolveSolutionDir(config, log); if (config.HasValue(nameof(BuildArgs.Version)) == false) { args.Version = ResolveVersionFromGit(args.SolutionDir, log); } if (config.HasValue(nameof(args.ReleaseProjects)) == false) { args.ReleaseProjects = ResolveReleaseProjects(args.SolutionDir, args.ReleaseProjectFilter, args.ExcludeProjectFilter, log); } if (args.ReleaseArtifactsDir.IsRooted() == false) { args.ReleaseArtifactsDir = args.SolutionDir.Add(args.ReleaseArtifactsDir.RawPath); } return(args); }
public abstract T Hydrate(ICliConfiguration config, T args, ILogger log = null);