Example #1
0
        public MSBuildWorkspaceUpgradeContext(
            UpgradeOptions options,
            ITargetTFMSelector tfmSelector,
            ITargetFrameworkMonikerFactory tfmFactory,
            IVisualStudioFinder vsFinder,
            ILogger <MSBuildWorkspaceUpgradeContext> logger)
        {
            if (options is null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            _projectCache = new Dictionary <string, IProject>(StringComparer.OrdinalIgnoreCase);
            _path         = options.ProjectPath;
            _tfmSelector  = tfmSelector ?? throw new ArgumentNullException(nameof(tfmSelector));
            TfmFactory    = tfmFactory ?? throw new ArgumentNullException(nameof(tfmFactory));
            _logger       = logger;

            var vsPath = vsFinder.GetLatestVisualStudioPath();

            if (vsPath is null)
            {
                throw new UpgradeException("Could not find a Visual Studio install to use for upgrade.");
            }

            _vsPath = vsPath;

            GlobalProperties  = CreateProperties();
            ProjectCollection = new ProjectCollection(globalProperties: GlobalProperties);
        }
Example #2
0
        public MSBuildWorkspaceUpgradeContext(
            UpgradeOptions options,
            IVisualStudioFinder vsFinder,
            IPackageRestorer restorer,
            ITargetFrameworkMonikerComparer comparer,
            IComponentIdentifier componentIdentifier,
            ILogger <MSBuildWorkspaceUpgradeContext> logger,
            IUpgradeContextProperties properties)
        {
            if (options is null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            if (vsFinder is null)
            {
                throw new ArgumentNullException(nameof(vsFinder));
            }

            _projectCache        = new Dictionary <string, IProject>(StringComparer.OrdinalIgnoreCase);
            InputPath            = options.ProjectPath;
            _restorer            = restorer;
            _comparer            = comparer;
            _componentIdentifier = componentIdentifier ?? throw new ArgumentNullException(nameof(componentIdentifier));
            _logger     = logger ?? throw new ArgumentNullException(nameof(logger));
            _properties = properties ?? throw new ArgumentNullException(nameof(properties));

            _vsPath = vsFinder.GetLatestVisualStudioPath();

            GlobalProperties  = CreateProperties();
            ProjectCollection = new ProjectCollection(globalProperties: GlobalProperties);
        }
Example #3
0
        private static void HandleConfigOptions()
        {
            configOptions = new UpgradeOptions();
            configOptions.Initialize();

            VehicleUpgrader.SetBonusSpeedMultipliers(configOptions.SeamothBonusSpeedMultiplier, configOptions.ExosuitBonusSpeedMultiplier);
        }
Example #4
0
 public MSBuildTargetTFMSelector(UpgradeOptions options, IOptions <TFMSelectorOptions> selectorOptions, ITargetFrameworkMonikerComparer tfmComparer, ILogger <MSBuildTargetTFMSelector> logger)
 {
     _tfmComparer    = tfmComparer ?? throw new ArgumentNullException(nameof(tfmComparer));
     _logger         = logger ?? throw new ArgumentNullException(nameof(logger));
     _currentTFMBase = selectorOptions?.Value.CurrentTFMBase ?? DefaultCurrentTFMBase;
     _ltsTFMBase     = selectorOptions?.Value.LTSTFMBase ?? DefaultLTSTFMBase;
     _upgradeTarget  = options?.UpgradeTarget ?? throw new ArgumentNullException(nameof(options));
 }
        public NonInteractiveUserInput(UpgradeOptions options)
        {
            if (options is null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            _waitPeriod = TimeSpan.FromSeconds(options.NonInteractiveWait);
        }
Example #6
0
        public static UpgradeOrchestrator Create(UpgradeOptions options)
        {
#if MACOS_BUILD
            return(new MacUpgradeOrchestrator(options));
#elif WINDOWS_BUILD
            return(new WindowsUpgradeOrchestrator(options));
#else
            throw new NotImplementedException();
#endif
        }
Example #7
0
        public FileUpgradeStateFactory(UpgradeOptions options, ILogger <FileUpgradeStateFactory> logger)
        {
            if (options is null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            _path   = Path.Combine(options.Project.DirectoryName !, ".upgrade-assistant");
            _logger = logger;
        }
        private static AutoMock GetMock(UpgradeOptions options)
        {
            var mock = AutoMock.GetLoose(cfg =>
            {
                cfg.RegisterInstance(options);
                cfg.RegisterInstance <IUpgradeContextProperties>(new UpgradeContextProperties());
                cfg.RegisterType <NonInteractiveUserInput>().As <IUserInput>();
            });

            return(mock);
        }
Example #9
0
 public EntrypointSelectionStep(
     UpgradeOptions options,
     IPackageRestorer restorer,
     IUserInput userInput,
     ILogger <EntrypointSelectionStep> logger)
     : base(logger)
 {
     _isNonInteractiveMode = options?.NonInteractive ?? throw new ArgumentNullException(nameof(options));
     _entryPoint           = options?.EntryPoint ?? string.Empty;
     _restorer             = restorer ?? throw new ArgumentNullException(nameof(restorer));
     _userInput            = userInput ?? throw new ArgumentNullException(nameof(userInput));
 }
 public EntrypointSelectionStep(
     UpgradeOptions options,
     IEntrypointResolver entrypointResolver,
     IPackageRestorer restorer,
     IUserInput userInput,
     ILogger <EntrypointSelectionStep> logger)
     : base(logger)
 {
     _options            = options;
     _entrypointResolver = entrypointResolver ?? throw new ArgumentNullException(nameof(entrypointResolver));
     _restorer           = restorer ?? throw new ArgumentNullException(nameof(restorer));
     _userInput          = userInput ?? throw new ArgumentNullException(nameof(userInput));
 }
Example #11
0
        public async Task <int> UpgradeAsync(string inputPath, string entrypoint, ITestOutputHelper output, TimeSpan maxDuration)
        {
            if (string.IsNullOrEmpty(inputPath))
            {
                throw new ArgumentException($"'{nameof(inputPath)}' cannot be null or empty.", nameof(inputPath));
            }

            if (output is null)
            {
                throw new ArgumentNullException(nameof(output));
            }

            var project = new FileInfo(inputPath);

            using var cts = new CancellationTokenSource(maxDuration);

            var options = new UpgradeOptions
            {
                SkipBackup         = true,
                Project            = project,
                NonInteractive     = true,
                NonInteractiveWait = 0,
                EntryPoint         = new[] { entrypoint },
            };

            return(await Program.RunUpgradeAsync(options, host => host
                                                 .ConfigureServices((_, services) =>
            {
                services.AddOptions <PackageUpdaterOptions>().Configure(o =>
                {
                    o.PackageMapPath = "PackageMaps";
                });
            })
                                                 .ConfigureContainer <ContainerBuilder>(builder =>
            {
                builder.RegisterType <KnownPackages>()
                .SingleInstance()
                .AsSelf();

                builder.RegisterInstance(UnknownPackages);
                builder.RegisterDecorator <InterceptingKnownPackageLoader, IPackageLoader>();
            })
                                                 .ConfigureLogging((ctx, logging) =>
            {
                logging.SetMinimumLevel(LogLevel.Trace);
                logging.AddProvider(new TestOutputHelperLoggerProvider(output));
            }),
                                                 cts.Token).ConfigureAwait(false));
        }
Example #12
0
        public TargetFrameworkSelector(
            UpgradeOptions options,
            ITargetFrameworkMonikerComparer comparer,
            IOptions <TFMSelectorOptions> selectorOptions,
            IEnumerable <ITargetFrameworkSelectorFilter> selectors,
            ILogger <TargetFrameworkSelector> logger)
        {
            _comparer  = comparer;
            _selectors = selectors;
            _logger    = logger;

            _currentTFMBase = selectorOptions?.Value.CurrentTFMBase ?? DefaultCurrentTFMBase;
            _ltsTFMBase     = selectorOptions?.Value.LTSTFMBase ?? DefaultLTSTFMBase;
            _upgradeTarget  = options?.UpgradeTarget ?? throw new ArgumentNullException(nameof(options));
        }
Example #13
0
        public PackageLoader(UpgradeOptions options, ILogger <PackageLoader> logger)
        {
            if (options is null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            if (options.ProjectPath is null)
            {
                throw new ArgumentException("Project path must be set in UpgradeOptions", nameof(options));
            }

            _logger         = logger ?? throw new ArgumentNullException(nameof(logger));
            _cache          = new SourceCacheContext();
            _packageSources = GetPackageSources(Path.GetDirectoryName(options.ProjectPath));
        }
        public static void Patch()
        {
#if DEBUG
            QuickLogger.DebugLogsEnabled = true;
#endif

            try
            {
                QuickLogger.Info("Started patching - " + QuickLogger.GetAssemblyVersion());

                CrossModUpdates();

                CraftTreeHandler.AddTabNode(CraftTree.Type.Workbench, WorkBenchTab, "Armor Modules", SpriteManager.Get(TechType.VehicleArmorPlating));

                //Handle SpeedBooster
                var speedModule = new SpeedBooster();
                speedModule.Patch();

                //Handle HullArmorUpgrades
                var hullArmorMk2Module = new HullArmorMk2();
                hullArmorMk2Module.Patch();

                var hullArmorMk3Module = new HullArmorMk3(hullArmorMk2Module.TechType);
                hullArmorMk3Module.Patch();

                var hullArmorMk4Module = new HullArmorMk4(hullArmorMk3Module.TechType);
                hullArmorMk4Module.Patch();

                //Handle Config Options
                var configOptions = new UpgradeOptions();
                configOptions.Initialize();

                VehicleUpgrader.SetBonusSpeedMultipliers(configOptions.SeamothBonusSpeedMultiplier, configOptions.ExosuitBonusSpeedMultiplier);

                var harmony = HarmonyInstance.Create("com.upgradedvehicles.psmod");
                harmony.PatchAll(Assembly.GetExecutingAssembly());

                QuickLogger.Info("Finished patching");
            }
            catch (Exception ex)
            {
                QuickLogger.Error(ex);
            }
        }
Example #15
0
        public static async Task <bool> UpgradeAsync(string inputPath, string entrypoint, ITestOutputHelper output, TimeSpan maxDuration)
        {
            if (string.IsNullOrEmpty(inputPath))
            {
                throw new ArgumentException($"'{nameof(inputPath)}' cannot be null or empty.", nameof(inputPath));
            }

            if (output is null)
            {
                throw new ArgumentNullException(nameof(output));
            }

            var project = new FileInfo(inputPath);

            using var cts = new CancellationTokenSource(maxDuration);

            var options = new UpgradeOptions
            {
                SkipBackup         = true,
                Project            = project,
                NonInteractive     = true,
                NonInteractiveWait = 0,
                EntryPoint         = entrypoint,
            };

            var result = await Program.RunUpgradeAsync(options, host => host
                                                       .ConfigureServices((_, services) =>
            {
                services.AddOptions <PackageUpdaterOptions>().Configure(o =>
                {
                    o.PackageMapPath = "PackageMaps";
                    o.UpgradeAnalyzersPackageVersion = "1.0.0";
                });
            })
                                                       .ConfigureLogging((ctx, logging) =>
            {
                logging.SetMinimumLevel(LogLevel.Trace);
                logging.AddProvider(new TestOutputHelperLoggerProvider(output));
            }), cts.Token).ConfigureAwait(false);

            return(result == ErrorCodes.Success);
        }
        public static async Task UpgradeAsync(string inputPath, string entrypoint, TextWriter output, int timeoutSeconds = 300)
        {
            if (string.IsNullOrEmpty(inputPath))
            {
                throw new ArgumentException($"'{nameof(inputPath)}' cannot be null or empty.", nameof(inputPath));
            }

            if (output is null)
            {
                throw new ArgumentNullException(nameof(output));
            }

            var project = new FileInfo(inputPath);

            using var cts = new CancellationTokenSource();

            var options = new UpgradeOptions
            {
                SkipBackup         = true,
                Project            = project,
                NonInteractive     = true,
                NonInteractiveWait = 0,
                EntryPoint         = entrypoint,
            };

            var upgradeTask  = Program.RunUpgradeAsync(options, (context, services) => RegisterTestServices(services), cts.Token);
            var timeoutTimer = Task.Delay(timeoutSeconds * 1000, cts.Token);

            await Task.WhenAny(upgradeTask, timeoutTimer).ConfigureAwait(false);

            cts.Cancel();

            try
            {
                await Task.WhenAll(upgradeTask, timeoutTimer).ConfigureAwait(false);
            }
            catch (OperationCanceledException)
            {
            }
        }
Example #17
0
        public PackageLoader(UpgradeOptions options, ILogger <PackageLoader> logger)
        {
            if (options is null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            if (options.ProjectPath is null)
            {
                throw new ArgumentException("Project path must be set in UpgradeOptions", nameof(options));
            }

            _logger                = logger ?? throw new ArgumentNullException(nameof(logger));
            _nugetLogger           = new NuGetLogger(logger);
            _cache                 = new SourceCacheContext();
            _packageSources        = GetPackageSources(Path.GetDirectoryName(options.ProjectPath));
            _sourceRepositoryCache = new Dictionary <PackageSource, SourceRepository>();

            var settings = Settings.LoadDefaultSettings(null);

            _cachePath = SettingsUtility.GetGlobalPackagesFolder(settings);
        }
Example #18
0
 public BackupStep(UpgradeOptions options, ILogger <BackupStep> logger, IUserInput userInput)
     : base(logger)
 {
     _skipBackup = options?.SkipBackup ?? throw new ArgumentNullException(nameof(options));
     _userInput  = userInput ?? throw new ArgumentNullException(nameof(userInput));
 }
Example #19
0
 public UpgradeCommand(UpgradeOptions options, BoundConfig config, string[] commandLineArgs)
     : base(config, commandLineArgs)
     => _options = options;
Example #20
0
 public MacUpgradeOrchestrator(UpgradeOptions options)
     : base(options)
 {
 }
 public LinuxUpgradeOrchestrator(UpgradeOptions options)
     : base(options)
 {
 }
 public NonInteractiveUserInput(UpgradeOptions options)
 {
     _waitPeriod = TimeSpan.FromSeconds(options.NonInteractiveWait);
 }