コード例 #1
0
        static void Main(string[] args)
        {
            Console.WriteLine("NETBump Debug Tool");

            var projectFile = @"C:\Development\NETBump\src\NETBump.Debug\NETBump.Debug.csproj";

            var assemblyConfigurationAttribute = typeof(Program).Assembly.GetCustomAttribute <AssemblyConfigurationAttribute>();
            var configuration = assemblyConfigurationAttribute?.Configuration;

            //configuration = "Patch";
            var settings = new Settings();
            var bump     = new VersionBumper(projectFile, configuration, settings);
            // bump.ProjectPath = @"C:\Development\MSBump\_testfiles\MSBump.Test.csproj";


            var result = bump.BumpVersion();

            Console.WriteLine($"Bump version result: {result}");
            Console.ReadKey();
        }
コード例 #2
0
        /// <summary>
        /// Bump the version of changed modules or a specified module.
        /// </summary>
        private static void BumpVersions()
        {
            var changedModules = new List <string>();

            foreach (var directory in _projectDirectories)
            {
                var changeLogs = Directory.GetFiles(directory, "ChangeLog.md", SearchOption.AllDirectories)
                                 .Where(f => !f.Contains("Stack") && IsChangeLogUpdated(f))
                                 .Select(f => GetModuleManifestPath(Directory.GetParent(f).FullName))
                                 .Where(m => m.Contains(_moduleNameFilter))
                                 .ToList();
                changedModules.AddRange(changeLogs);
            }

            foreach (var projectModuleManifestPath in changedModules)
            {
                var moduleFileName = Path.GetFileName(projectModuleManifestPath);
                var moduleName     = moduleFileName.Replace(".psd1", "");

                var outputModuleManifest = _outputDirectories
                                           .SelectMany(d => Directory.GetDirectories(d, moduleName))
                                           .SelectMany(d => Directory.GetFiles(d, moduleFileName))
                                           .ToList();
                if (outputModuleManifest.Count == 0)
                {
                    throw new FileNotFoundException("No module manifest file found in output directories");
                }
                else if (outputModuleManifest.Count > 1)
                {
                    throw new IndexOutOfRangeException("Multiple module manifest files found in output directories");
                }

                var outputModuleManifestFile = outputModuleManifest.FirstOrDefault();

                _versionBumper = new VersionBumper(new VersionFileHelper(_rootDirectory, outputModuleManifestFile, projectModuleManifestPath));

                _versionBumper.BumpAllVersions();
            }
        }
コード例 #3
0
        /// <summary>
        /// Bump the version of changed modules or a specified module.
        /// </summary>
        private static void BumpVersions()
        {
            var changedModules = new List <string>();

            foreach (var directory in _projectDirectories)
            {
                var changeLogs = Directory.GetFiles(directory, "ChangeLog.md", SearchOption.AllDirectories)
                                 .Where(f => !ModuleFilter.IsAzureStackModule(f) && IsChangeLogUpdated(f))
                                 .Select(f => GetModuleManifestPath(Directory.GetParent(f).FullName))
                                 .Where(m => m.Contains(_moduleNameFilter))
                                 .ToList();
                changedModules.AddRange(changeLogs);
            }

            var executingAssemblyPath      = Assembly.GetExecutingAssembly().Location;
            var versionControllerDirectory = Directory.GetParent(executingAssemblyPath).FullName;
            var miniVersionFile            = Path.Combine(versionControllerDirectory, "MinimalVersion.csv");

            if (File.Exists(miniVersionFile))
            {
                var lines = File.ReadAllLines(miniVersionFile).Skip(1).Where(c => !string.IsNullOrEmpty(c));
                foreach (var line in lines)
                {
                    var cols = line.Split(",").Select(c => c.StartsWith("\"") ? c.Substring(1) : c)
                               .Select(c => c.EndsWith("\"") ? c.Substring(0, c.Length - 1) : c)
                               .Select(c => c.Trim()).ToArray();
                    if (cols.Length >= 2)
                    {
                        _minimalVersion.Add(cols[0], new AzurePSVersion(cols[1]));
                    }
                }
            }

            foreach (var projectModuleManifestPath in changedModules)
            {
                var moduleFileName = Path.GetFileName(projectModuleManifestPath);
                var moduleName     = moduleFileName.Replace(".psd1", "");

                var outputModuleManifest = _outputDirectories
                                           .SelectMany(d => Directory.GetDirectories(d, moduleName))
                                           .SelectMany(d => Directory.GetFiles(d, moduleFileName))
                                           .ToList();
                if (outputModuleManifest.Count == 0)
                {
                    throw new FileNotFoundException("No module manifest file found in output directories");
                }
                else if (outputModuleManifest.Count > 1)
                {
                    throw new IndexOutOfRangeException("Multiple module manifest files found in output directories");
                }

                var outputModuleManifestFile = outputModuleManifest.FirstOrDefault();

                _versionBumper = new VersionBumper(new VersionFileHelper(_rootDirectory, outputModuleManifestFile, projectModuleManifestPath));

                if (_minimalVersion.ContainsKey(moduleName))
                {
                    _versionBumper.MinimalVersion = _minimalVersion[moduleName];
                }

                _versionBumper.BumpAllVersions();
            }
        }
コード例 #4
0
        /// <summary>
        /// Bump the version of changed modules or a specified module.
        /// </summary>
        private static void BumpVersions()
        {
            string targetRepositories = null;

            using (PowerShell powershell = PowerShell.Create())
            {
                powershell.AddScript("Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process;");
                powershell.AddScript("Register-PackageSource -Name PSGallery -Location https://www.powershellgallery.com/api/v2 -ProviderName PowerShellGet");
                powershell.AddScript("Register-PackageSource -Name TestGallery -Location https://www.poshtestgallery.com/api/v2 -ProviderName PowerShellGet");
                powershell.AddScript("Get-PSRepository");
                var    repositories = powershell.Invoke();
                string psgallery    = null;
                string testgallery  = null;
                foreach (var repo in repositories)
                {
                    if ("https://www.powershellgallery.com/api/v2".Equals(repo.Properties["SourceLocation"]?.Value))
                    {
                        psgallery = repo.Properties["Name"]?.Value?.ToString();
                    }
                    if ("https://www.poshtestgallery.com/api/v2".Equals(repo.Properties["SourceLocation"]?.Value))
                    {
                        testgallery = repo.Properties["Name"]?.Value?.ToString();
                    }
                }
                if (psgallery == null)
                {
                    throw new Exception("Cannot calculate module version because PSGallery is not available.");
                }
                targetRepositories = psgallery;
                if (testgallery == null)
                {
                    Console.WriteLine("Warning: Cannot calculate module version precisely because TestGallery is not available.");
                }
                else
                {
                    targetRepositories += $",{testgallery}";
                }
            }

            var changedModules = new List <string>();

            foreach (var directory in _projectDirectories)
            {
                var changeLogs = Directory.GetFiles(directory, "ChangeLog.md", SearchOption.AllDirectories)
                                 .Where(f => !ModuleFilter.IsAzureStackModule(f) && IsChangeLogUpdated(f))
                                 .Select(f => GetModuleManifestPath(Directory.GetParent(f).FullName))
                                 .Where(m => m.Contains(_moduleNameFilter))
                                 .ToList();
                changedModules.AddRange(changeLogs);
            }

            var executingAssemblyPath      = Assembly.GetExecutingAssembly().Location;
            var versionControllerDirectory = Directory.GetParent(executingAssemblyPath).FullName;
            var miniVersionFile            = Path.Combine(versionControllerDirectory, "MinimalVersion.csv");

            if (File.Exists(miniVersionFile))
            {
                var lines = File.ReadAllLines(miniVersionFile).Skip(1).Where(c => !string.IsNullOrEmpty(c));
                foreach (var line in lines)
                {
                    var cols = line.Split(",").Select(c => c.StartsWith("\"") ? c.Substring(1) : c)
                               .Select(c => c.EndsWith("\"") ? c.Substring(0, c.Length - 1) : c)
                               .Select(c => c.Trim()).ToArray();
                    if (cols.Length >= 2)
                    {
                        _minimalVersion.Add(cols[0], new AzurePSVersion(cols[1]));
                    }
                }
            }
            //Make Az.Accounts as the first module to calcuate
            changedModules = changedModules.OrderBy(c => c == "Az.Accounts" ? "" : c).ToList();
            foreach (var projectModuleManifestPath in changedModules)
            {
                var moduleFileName = Path.GetFileName(projectModuleManifestPath);
                var moduleName     = moduleFileName.Replace(".psd1", "");

                var outputModuleManifest = _outputDirectories
                                           .SelectMany(d => Directory.GetDirectories(d, moduleName))
                                           .SelectMany(d => Directory.GetFiles(d, moduleFileName))
                                           .ToList();
                if (outputModuleManifest.Count == 0)
                {
                    throw new FileNotFoundException("No module manifest file found in output directories");
                }
                else if (outputModuleManifest.Count > 1)
                {
                    throw new IndexOutOfRangeException("Multiple module manifest files found in output directories");
                }

                var outputModuleManifestFile = outputModuleManifest.FirstOrDefault();

                _versionBumper = new VersionBumper(new VersionFileHelper(_rootDirectory, outputModuleManifestFile, projectModuleManifestPath));
                _versionBumper.PSRepositories = targetRepositories;
                if (_minimalVersion.ContainsKey(moduleName))
                {
                    _versionBumper.MinimalVersion = _minimalVersion[moduleName];
                }

                _versionBumper.BumpAllVersions();
            }
        }