예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
 public abstract T Hydrate(ICliConfiguration config, T args, ILogger log = null);