コード例 #1
0
    public override void Execute(UpgradeContext uctx)
    {
        uctx.ChangeCodeFile($@"Southwind.React\Dockerfile", file =>
        {
            file.Replace("build-development", "build-production");
        });

        uctx.ChangeCodeFile($@"Southwind.React\Views\Home\Index.cshtml", file =>
        {
            file.Replace("supportIE = true", "supportIE = false");
        });

        uctx.ChangeCodeFile($@"Southwind.React\App\SCSS\custom.scss", file =>
        {
            file.InsertAfterFirstLine(a => a.Contains(@"@import ""./_bootswatch"";"), @".btn.input-group-text{
    background: $input-group-addon-bg;
    border: $input-border-width solid $input-group-addon-border-color
}");
        });

        uctx.ChangeCodeFile(@$ "Southwind.React\package.json", file =>
        {
            file.Replace("--mode='production'", "--mode=production");
            file.Replace(
                @"webpack --config webpack.config.polyfills.js && webpack --config webpack.config.dll.js --mode=production",
                @"webpack --config webpack.config.polyfills.js --mode=production && webpack --config webpack.config.dll.js --mode=production");
        });
コード例 #2
0
    public override void Execute(UpgradeContext uctx)
    {
        uctx.ChangeCodeFile(@"Southwind.Entities/ApplicationConfiguration.cs ", file =>
        {
            file.InsertBeforeFirstLine(a => a.Contains("[AutoInit]"),
                                       @"
[Serializable]
public class TranslationConfigurationEmbedded : EmbeddedEntity
{
[Description(""Azure Cognitive Service API Key"")]
[StringLengthValidator(Max = 300), FileNameValidator]
public string? AzureCognitiveServicesAPIKey { get; set; }

[Description(""Azure Cognitive Service Region"")]
[StringLengthValidator(Max = 300), FileNameValidator]
public string? AzureCognitiveServicesRegion { get; set; }

[Description(""DeepL API Key"")]
[StringLengthValidator(Max = 300), FileNameValidator]
public string? DeepLAPIKey { get; set; }
}

");

            file.InsertAfterFirstLine(a => a.Contains("public FoldersConfigurationEmbedded Folders { get; set; }"),
                                      @"
public TranslationConfigurationEmbedded Translation { get; set; }");
        });

        uctx.ChangeCodeFile(@"Southwind.React/App/Southwind/Templates/ApplicationConfiguration.tsx", file =>
        {
            file.InsertAfterLastLine(a => a.Contains("</Tab>"),
                                     @"<Tab eventKey=""translation"" title={ctx.niceName(a => a.translation)}>
<RenderEntity ctx={ctx.subCtx(a => a.translation)} />
</Tab>");
        });

        uctx.ChangeCodeFile(@"Southwind.React/Startup.cs", file =>
        {
            file.ReplaceLine(a => a.Contains("TranslationServer.Start(app, new AlreadyTranslatedTranslator"),
                             @"TranslationServer.Start(app,
new AlreadyTranslatedTranslator(),
new AzureTranslator(
    () => Starter.Configuration.Value.Translation.AzureCognitiveServicesAPIKey,
    () => Starter.Configuration.Value.Translation.AzureCognitiveServicesRegion),
new DeepLTranslator(() => Starter.Configuration.Value.Translation.DeepLAPIKey)
);");
        });

        var azureKey = SafeConsole.AskString("Azure API Key?");
        var deeplKey = SafeConsole.AskString("DeepL API Key?");

        uctx.ChangeCodeFile(@"Southwind.Terminal\SouthwindMigrations.cs", file =>
        {
            file.InsertBeforeFirstLine(a => a.Contains("Folders = new FoldersConfigurationEmbedded"),
                                       @$ "Translation = new TranslationConfigurationEmbedded
{{
AzureCognitiveServicesAPIKey = " "{azureKey}" ",
DeepLAPIKey = " "{deeplKey}" ",
}},");
コード例 #3
0
        public override void Execute(UpgradeContext uctx)
        {
            uctx.ChangeCodeFile($@"Southwind.React/App/polyfills.js", file =>
            {
                file.RemoveAllLines(
                    l => l.Contains("url-search-params-polyfill")
                    );

                file.ReplaceLine(
                    l => l.Contains("es6-promise/auto"),
                    "require('core-js/stable');"
                    );
            });

            uctx.ChangeCodeFile($@"Southwind.React/package.json", file =>
            {
                file.RemoveAllLines(
                    l => l.Contains("url-search-params-polyfill") ||
                    l.Contains("es6-object-assign") ||
                    l.Contains("es6-promise")
                    );

                file.InsertAfterFirstLine(
                    l => l.Contains("abortcontroller-polyfill"),
                    @"""core-js"": ""3.6.5"","
                    );
            });
        }
コード例 #4
0
    public override void Execute(UpgradeContext uctx)
    {
        uctx.ChangeCodeFile(@"Southwind.Entities/ApplicationConfiguration.cs", file =>
        {
            file.InsertBeforeFirstLine(a => a.Contains(@"/*Exceptions*/"), @"/*Dashboard*/
[StringLengthValidator(Max = 300), FileNameValidator]
public string CachedQueryFolder { get; set; }
");
        });

        uctx.ChangeCodeFile(@"Southwind.Logic/Starter.cs", file =>
        {
            file.ReplaceLine(a => a.Contains(@"DashboardLogic.Start(sb);"), @"DashboardLogic.Start(sb, GetFileTypeAlgorithm(p => p.CachedQueryFolder));");
            file.WarningLevel = WarningLevel.None;
            file.Replace(@"PredictorLogic.Start(sb, () => ", @"PredictorLogic.Start(sb, ");
        });

        uctx.ChangeCodeFile(@"Southwind.Terminal/SouthwindMigrations.cs", file =>
        {
            file.InsertBeforeFirstLine(a => a.Contains(@"ExceptionsFolder"), @"CachedQueryFolder = localPrefix + @""cached-query"",");
        });

        uctx.ChangeCodeFile(@"Southwind.Test.Environment/SouthwindEnvironment.cs", file =>
        {
            file.InsertBeforeFirstLine(a => a.Contains(@"ExceptionsFolder"), @"CachedQueryFolder = localPrefix + @""cached-query"",");
        });

        uctx.ChangeCodeFile(".editorconfig", file =>
        {
            file.WarningLevel = WarningLevel.None;
            file.Replace("@csharp_style_namespace_declarations", "csharp_style_namespace_declarations");
        });
    }
コード例 #5
0
    public override void Execute(UpgradeContext uctx)
    {
        uctx.ForeachCodeFile("*.cs", file =>
        {
            file.Replace("TimeSpanPrecisionValidator", "TimePrecisionValidator");
        });

        uctx.ForeachCodeFile("*.csproj", file =>
        {
            file.UpdateNugetReference("Signum.MSBuildTask", "6.0.0");
            file.UpdateNugetReference("Selenium.WebDriver.ChromeDriver", "96.0.4664.4500");
            file.UpdateNugetReference("Microsoft.TypeScript.MSBuild", "4.5.2");
        });

        uctx.ChangeCodeFile(@"Southwind.React\Dockerfile", file =>
        {
            file.Replace("aspnet:5.0.9-buster-slim", "aspnet:6.0.0-bullseye-slim");
            file.Replace("sdk:5.0.400-buster-slim", "sdk:6.0.100-bullseye-slim");
        });

        uctx.ChangeCodeFile(@"Southwind.React\package.json", file =>
        {
            file.UpdateNpmPackage("typescript", "4.5.2");
        });

        uctx.ChangeCodeFile(".editorconfig", file =>
        {
            file.InsertAfterFirstLine(line => line.Contains("indent_size = 4"), "csharp_style_namespace_declarations = file_scoped:warning");
        });
    }
コード例 #6
0
        public override void Execute(UpgradeContext uctx)
        {
            uctx.ChangeCodeFile(@"Southwind.React/App/MainPublic.tsx", file =>
            {
                file.Replace(
                    "../node_modules/react-widgets/lib/scss/react-widgets.scss",
                    "../node_modules/react-widgets/scss/styles.scss");
            });

            uctx.ForeachCodeFile("*.tsx", "Southwind.React", file =>
            {
                file.Replace(
                    "react-widgets/lib",
                    "react-widgets/cjs");
            });

            uctx.ChangeCodeFile(@"Southwind.React/package.json", file =>
            {
                file.UpdateNpmPackage("@fortawesome/fontawesome-svg-core", "1.2.35");
                file.UpdateNpmPackage("@fortawesome/free-regular-svg-icons", "5.15.3");
                file.UpdateNpmPackage("@fortawesome/free-solid-svg-icons", "5.15.3");
                file.UpdateNpmPackage("@fortawesome/free-brands-svg-icons", "5.15.3");
                file.UpdateNpmPackage("@fortawesome/react-fontawesome", "0.1.14");
                file.UpdateNpmPackage("@types/draft-js", "0.11.1");
                file.UpdateNpmPackage("@types/luxon", "1.26.2");

                file.UpdateNpmPackage("abortcontroller-polyfill", "1.7.1");
                file.UpdateNpmPackage("bootstrap", "4.6.0");
                file.UpdateNpmPackage("codemirror", "5.60.0");
                file.UpdateNpmPackage("core-js", "3.9.1");
                file.UpdateNpmPackage("d3", "6.6.2");

                file.UpdateNpmPackage("luxon", "1.26.0");
                file.UpdateNpmPackage("msal", "1.4.8");

                file.UpdateNpmPackage("react", "17.0.2");
                file.UpdateNpmPackage("react-bootstrap", "1.5.2");
                file.UpdateNpmPackage("react-dom", "17.0.2");

                file.UpdateNpmPackage("react-widgets", "5.0.0");
                file.UpdateNpmPackage("whatwg-fetch", "3.6.2");


                file.UpdateNpmPackage("css-loader", "5.2.0");

                file.ReplaceLine(a => a.Contains("node-sass"), @"""sass"": ""1.32.8"",");

                file.UpdateNpmPackage("sass-loader", "11.0.1");
                file.UpdateNpmPackage("ts-loader", "8.1.0");
                file.UpdateNpmPackage("typescript", "4.2.3");
                file.UpdateNpmPackage("webpack", "5.28.0");
                file.UpdateNpmPackage("webpack-cli", "4.6.0");
                file.UpdateNpmPackage("webpack-notifier", "1.13.0");
            });
        }
コード例 #7
0
    public override void Execute(UpgradeContext uctx)
    {
        uctx.ForeachCodeFile(@"*.csproj", file =>
        {
            file.Replace(@"\Extensions\", @"\Framework\");
        });

        uctx.ForeachCodeFile(@"*.sln", file =>
        {
            file.Replace(@"""Extensions\", @"""Framework\");
        });

        uctx.ChangeCodeFile(@"Southwind.React\webpack.config.js", file =>
        {
            file.Replace(@"/Extensions/", @"/Framework/");
        });

        uctx.ChangeCodeFile(@"Southwind.React/tsconfig.json", file =>
        {
            file.Replace(@"/Extensions/", @"/Framework/");
        });

        uctx.ChangeCodeFile(@"Southwind.React/package.json", file =>
        {
            file.Replace(@"/Extensions/", @"/Framework/");
        });

        uctx.ChangeCodeFile(@"Southwind.React/Dockerfile", file =>
        {
            file.Replace(@"""Extensions/", @"""Framework/");
        });

        uctx.ChangeCodeFile(@".gitmodules", file =>
        {
            file.RemoveAllLines(a => a.Contains("extensions", StringComparison.InvariantCultureIgnoreCase));
        });

        uctx.ForeachCodeFile(@"*.ts, *.tsx", file =>
        {
            file.Replace(@"../../../../Extensions/Signum.React.Extensions/", @"@extensions/");
            file.Replace(@"../../../Extensions/Signum.React.Extensions/", @"@extensions/");
            file.Replace(@"../../Extensions/Signum.React.Extensions/", @"@extensions/");

            file.Replace(@"../../../../Framework/Signum.React/Scripts/", @"@framework/");
            file.Replace(@"../../../Framework/Signum.React/Scripts/", @"@framework/");
            file.Replace(@"../../Framework/Signum.React/Scripts/", @"@framework/");
        });

        if (SafeConsole.Ask("Do you want to delete 'Extensions' folder with all his content?"))
        {
            Directory.Delete(Path.Combine(uctx.RootFolder, "Extensions"), true);
            Console.WriteLine("deleted");
        }
    }
コード例 #8
0
        public override void Execute(UpgradeContext uctx)
        {
            uctx.ChangeCodeFile(@".gitignore", file =>
            {
                file.InsertAfterLastLine(
                    a => a.Contains("ts_out"),
                    @"/Southwind.React/TensorFlowModels/**");
            });

            uctx.ChangeCodeFile(@"Southwind.Logic/Southwind.Logic.csproj", file =>
            {
                file.Replace(
                    @"Signum.Engine.MachineLearning.CNTK\Signum.Engine.MachineLearning.CNTK.csproj",
                    @"Signum.Engine.MachineLearning.TensorFlow\Signum.Engine.MachineLearning.TensorFlow.csproj");
            }, WarningLevel.Warning);

            uctx.ChangeCodeFile(@"Southwind.React/Southwind.React.csproj", file =>
            {
                file.ReplaceLine(a => a.Contains("CNTK.CPUOnly"),
                                 @"<PackageReference Include=""SciSharp.TensorFlow.Redist"" Version=""2.3.1"" />"
                                 );
            }, WarningLevel.Warning);

            uctx.ChangeCodeFile(@"Southwind.Logic/Starter.cs", file =>
            {
                file.Replace(
                    @"using Signum.Engine.MachineLearning.CNTK;",
                    @"using Signum.Engine.MachineLearning.TensorFlow;");

                file.Replace(
                    @"CNTKPredictorAlgorithm.NeuralNetwork, new CNTKNeuralNetworkPredictorAlgorithm()",
                    @"TensorFlowPredictorAlgorithm.NeuralNetworkGraph, new TensorFlowNeuralNetworkPredictor()");
            }, WarningLevel.Warning);

            uctx.ChangeCodeFile(@"Southwind.Terminal/SouthwindMigrations.cs", file =>
            {
                file.Replace(
                    @"CNTKPredictorAlgorithm.NeuralNetwork",
                    @"TensorFlowPredictorAlgorithm.NeuralNetworkGraph");

                file.Replace(
                    @"Learner = NeuralNetworkLearner.MomentumSGD",
                    @"Optimizer = TensorFlowOptimizer.GradientDescentOptimizer");

                file.Replace(
                    @"LossFunction = NeuralNetworkEvalFunction.SquaredError",
                    @"LossFunction = NeuralNetworkEvalFunction.MeanSquaredError");

                file.ReplaceBetweenIncluded(
                    a => a.Contains("LearningRate = 0.1,"),
                    a => a.Contains("LearningUnitGain = false,"),
                    @"LearningRate = 0.0001,");
            }, WarningLevel.Warning);
        }
コード例 #9
0
        public override void Execute(UpgradeContext uctx)
        {
            uctx.ChangeCodeFile($@"Southwind.React/App/MainPublic.tsx", file =>
            {
                file.Replace(
                    "import * as moment from \"moment\"",
                    "import * as luxon from \"luxon\"");

                file.RemoveAllLines(
                    l => l.Contains("require('moment/locale")
                    );

                file.RemoveAllLines(
                    l => l.Contains("ConfigureReactWidgets.asumeGlobalUtcMode(moment, false);")
                    );

                file.ReplaceBetweenExcluded(
                    l => l.Contains("const culture = ci.name"),
                    l => l.Contains("});"),
                    @"  luxon.Settings.defaultLocale = culture;
  numbro.setLanguage(culture);"
                    );
            });

            uctx.ForeachCodeFile($@"*.tsx, *.ts", uctx.ReactDirectory, file =>
            {
                file.Replace("import * as moment from 'moment'", "import { DateTime } from 'luxon'");
                file.Replace("format()", "toISO()");
                file.Replace("moment()", "DateTime.local()");
                file.Replace("moment(", "DateTime.fromISO(");
                file.Replace(".fromNow(true)", ".toRelative()");
            });

            uctx.ChangeCodeFile($@"Southwind.React/App/vendors.js", file =>
            {
                file.Replace(
                    "require(\"moment\");",
                    "require(\"luxon\");");
            });

            uctx.ChangeCodeFile($@"Southwind.React/package.json", file =>
            {
                file.ReplaceLine(a => a.Contains("\"moment\""),
                                 @"""@types/luxon"": ""1.24.4"",
""luxon"": ""1.25.0"","
                                 );
            });

            uctx.ChangeCodeFile($@"Southwind.React/webpack.config.js", file =>
            {
                file.RemoveAllLines(a => a.Contains("webpack.ContextReplacementPlugin"));
            });
        }
コード例 #10
0
    public override void Execute(UpgradeContext uctx)
    {
        uctx.ChangeCodeFile(@"Southwind.React/package.json", file =>
        {
            file.UpdateNpmPackage("ts-loader", "9.2.5");
            file.UpdateNpmPackage("typescript", "4.4.2");
        });

        uctx.ChangeCodeFile(@"Southwind.React/Southwind.React.csproj", file =>
        {
            file.UpdateNugetReference("Microsoft.TypeScript.MSBuild", "4.4.2");
        });
    }
コード例 #11
0
    public override void Execute(UpgradeContext uctx)
    {
        uctx.ChangeCodeFile(@"Southwind.React/Views/Home/Index.cshtml", file =>
        {
            file.InsertBeforeFirstLine(a => a.Contains("pre.innerText = error.stack;"),
                                       @"pre.style.whiteSpace = ""pre-wrap"";");
        });

        uctx.ChangeCodeFile(@"Southwind.React/App/MainPublic.tsx", file =>
        {
            file.ReplaceLine(a => a.Contains("window.onerror = (message: Event | string, filename?: string, lineno?:"),
                             @"ErrorModal.register();");
        });
    }
コード例 #12
0
 public override void Execute(UpgradeContext uctx)
 {
     uctx.ChangeCodeFile(@"Southwind.React\tsconfig.json", file =>
     {
         file.Replace(@"""target"": ""es5"",", @"""target"": ""ES2017"",");
     });
 }
コード例 #13
0
 public override void Execute(UpgradeContext uctx)
 {
     uctx.ChangeCodeFile(@"Southwind.React/package.json", file =>
     {
         file.ReplaceLine(a => a.Contains("msal"), @"""@azure/msal-browser"": ""2.14.1"",");
     });
 }
コード例 #14
0
 public override void Execute(UpgradeContext uctx)
 {
     uctx.ChangeCodeFile(@"Southwind.React/package.json", file =>
     {
         file.UpdateNpmPackage("react-widgets", "5.0.3");
     });
 }
コード例 #15
0
 public override void Execute(UpgradeContext uctx)
 {
     uctx.ChangeCodeFile(@"Southwind.React\Dockerfile", file =>
     {
         file.RemoveAllLines(a => a == @$ "RUN dotnet build " "{uctx.ApplicationName}.React.csproj" " -c Release # -o /app/build");
     });
 }
コード例 #16
0
    public override void Execute(UpgradeContext uctx)
    {
        uctx.ForeachCodeFile("*.csproj", file =>
        {
            file.Replace(@"<TargetFramework>net5.0</TargetFramework>", @"<TargetFramework>net6.0</TargetFramework>");

            file.UpdateNugetReference("Microsoft.Extensions.Configuration", "6.0.0");
            file.UpdateNugetReference("Microsoft.Extensions.Configuration.Binder", "6.0.0");
            file.UpdateNugetReference("Microsoft.Extensions.Configuration.Json", "6.0.0");
            file.UpdateNugetReference("Microsoft.Extensions.Configuration.UserSecrets", "6.0.0");
            file.UpdateNugetReference("Signum.TSGenerator", "6.0.0");
            file.UpdateNugetReference("Selenium.WebDriver.ChromeDriver", "95.0.4638.6900");
        });

        uctx.ChangeCodeFile("Southwind.Terminal/Program.cs", file =>
        {
            file.Replace("AddUserSecrets<Program>()", "AddUserSecrets<Program>(optional: true)\n");
        });


        uctx.ForeachCodeFile("*.cs", file =>
        {
            file.Replace(new Regex(@"\bDate.Today\b"), "TimeZoneManager.Now");
            file.Replace(new Regex(@"\bDate\b"), "DateOnly");
        });
    }
コード例 #17
0
 public override void Execute(UpgradeContext uctx)
 {
     uctx.ChangeCodeFile("deployToAzure.ps1", file =>
     {
         file.InsertAfterFirstLine(a => a.Contains("docker push"),
                                   @"az webapp restart --name southwind-webapp --resource-group southwind-resourceGroup");
     });
 }
コード例 #18
0
 public override void Execute(UpgradeContext uctx)
 {
     uctx.ChangeCodeFile("Southwind.Logic/Starter.cs", file =>
     {
         file.Replace(
             "typeof(UserChartPartEntity),",
             "typeof(UserChartPartEntity), typeof(CombinedUserChartPartEntity),");
     });
 }
コード例 #19
0
     public override void Execute(UpgradeContext uctx)
     {
         uctx.ChangeCodeFile("Southwind.Terminal/SouthwindMigrations.cs", file =>
         {
             file.ReplaceLine(a => a.Contains("UserAssetsImporter.Import(bytes, preview);"),
                              @"using (UserHolder.UserSession(AuthLogic.SystemUser!))
 UserAssetsImporter.Import(bytes, preview); ");
         });
     }
コード例 #20
0
 public override void Execute(UpgradeContext uctx)
 {
     uctx.ChangeCodeFile(@"Southwind.React\Southwind.React.csproj", file =>
     {
         file.UpdateNugetReference("Microsoft.TypeScript.MSBuild", "4.1.4");
         file.WarningLevel = WarningLevel.Warning;
         file.UpdateNugetReference("Swashbuckle.AspNetCore", "6.0.3");
     });
 }
コード例 #21
0
 public override void Execute(UpgradeContext uctx)
 {
     uctx.ChangeCodeFile(@"Southwind.Terminal\Program.cs", file =>
     {
         file.ReplaceLine(a => a.Contains(@"{""N"", NewDatabase},"), @"{""N"", Administrator.NewDatabase},");
         file.ReplaceLine(a => a.Contains(@"{""S"", Synchronize},"), @"{""S"", Administrator.Synchronize},");
         file.ReplaceBetween(a => a.Contains("public static void NewDatabase()"), +0, a => a.Contains(@"Console.WriteLine(""Done."");"), +1, "");
         file.ReplaceBetween(a => a.Contains("static void Synchronize()"), +0, a => a.Contains(@"command.OpenSqlFileRetry();"), +1, "");
     });
 }
コード例 #22
0
    public override void Execute(UpgradeContext uctx)
    {
        uctx.ChangeCodeFile(@"Southwind.React\webpack.config.dll.js", file =>
        {
            file.ReplaceLine(
                a => a.Contains(@"context: path.resolve(__dirname, ""App"")"),
                @"context: path.resolve(__dirname, ""App""),
entryOnly: false,"
                );

            file.InsertAfterFirstLine(
                a => a.Contains(@"require('assets-webpack-plugin');"),
                "//const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;"
                );

            file.InsertBeforeFirstLine(
                a => a.Contains(@"new webpack.DllPlugin({"),
                "//new BundleAnalyzerPlugin(),"
                );
        });

        uctx.ChangeCodeFile(@"Southwind.React\webpack.config.js", file =>
        {
            file.InsertAfterFirstLine(
                a => a.Contains(@"require('webpack-notifier')"),
                "//const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;"
                );

            file.InsertBeforeFirstLine(
                a => a.Contains(@"new webpack.DllReferencePlugin({"),
                "//new BundleAnalyzerPlugin(),"
                );
        });

        uctx.ChangeCodeFile(@"Southwind.React\package.json", file =>
        {
            file.InsertAfterFirstLine(
                a => a.Contains(@"""webpack"""),
                @"""webpack-bundle-analyzer"": ""4.4.0"","
                );
        });
    }
コード例 #23
0
 public override void Execute(UpgradeContext uctx)
 {
     uctx.ChangeCodeFile(@"Southwind.Logic/Starter.cs", file =>
     {
         file.InsertAfterFirstLine(line => line.Contains("UserQueryLogic.RegisterRoleTypeCondition"), "UserQueryLogic.RegisterTranslatableRoutes();");
         file.InsertAfterFirstLine(line => line.Contains("UserChartLogic.RegisterRoleTypeCondition"), "UserChartLogic.RegisterTranslatableRoutes();");
         file.InsertAfterFirstLine(line => line.Contains("DashboardLogic.RegisterRoleTypeCondition"), "DashboardLogic.RegisterTranslatableRoutes();");
         file.InsertAfterFirstLine(line => line.Contains("ToolbarLogic.Start(sb);"), "ToolbarLogic.RegisterTranslatableRoutes();");
         file.InsertAfterFirstLine(line => line.Contains("TranslationLogic.Start("), "TranslatedInstanceLogic.Start(sb, () => CultureInfo.GetCultureInfo(\"en\"));");
     });
 }
コード例 #24
0
    public override void Execute(UpgradeContext uctx)
    {
        uctx.ChangeCodeFile(@"Southwind.React/Dockerfile", file =>
        {
            file.ReplaceBetweenExcluded(a => a.Contains("WORKDIR /app"), a => a.Contains("EXPOSE 80"),
                                        @"ENV TZ=Europe/Berlin
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone");

            file.Replace("CNTK", "TensorFlow");
        });
    }
コード例 #25
0
    public override void Execute(UpgradeContext uctx)
    {
        uctx.ChangeCodeFile("Southwind.React/package.json", file =>
        {
            file.UpdateNpmPackage("ts-loader", "8.0.11");
            file.UpdateNpmPackage("typescript", "4.1.2");
        });

        uctx.ChangeCodeFile("Southwind.React/Southwind.React.csproj", file =>
        {
            file.UpdateNugetReference("Microsoft.TypeScript.MSBuild", "4.1.2");
        });

        uctx.ChangeCodeFile("Southwind.React/tsconfig.json", file =>
        {
            file.RemoveAllLines(a => a.Contains(@"""baseUrl"": ""."","));
            file.Replace("\"*\": [", "temp123");
            file.Replace("\"*\"", "\"./*\"");
            file.Replace("temp123", "\"*\": [");
        });
    }
コード例 #26
0
    public override void Execute(UpgradeContext uctx)
    {
        uctx.ChangeCodeFile($@"Southwind.React/App/MainPublic.tsx", file =>
        {
            file.RemoveAllLines(
                l => l.Contains("import numbro from \"numbro\"")
                );

            file.Replace("reloadTypes }", "NumberFormatSettings, reloadTypes }");

            file.RemoveAllLines(
                l => l.Contains("numbro.registerLanguage")
                );

            file.ReplaceLine(
                l => l.Contains("numbro.setLanguage"),
                "NumberFormatSettings.defaultNumberFormatLocale = culture;"
                );
        });

        uctx.ForeachCodeFile($@"*.tsx, *.ts", uctx.ReactDirectory, file =>
        {
            file.Replace(@"import numbro from ""numbro""", "import { toNumberFormat } from '@framework/Reflection'");
            file.Replace(@"import numbro from 'numbro'", "import { toNumberFormat } from '@framework/Reflection'");
            file.Replace(new Regex(@"numbro\((?<val>::EXPR::)\)\.format\((?<frmt>::EXPR::)\)").WithMacros(),
                         m => $@"toNumberFormat({m.Groups["frmt"].Value})/*move-to-local-var*/.format({m.Groups["val"].Value})");
        });

        uctx.ChangeCodeFile($@"Southwind.React/App/vendors.js", file =>
        {
            file.RemoveAllLines(a => a.Contains("require(\"numbro\");"));
        });

        uctx.ChangeCodeFile($@"Southwind.React\package.json", file =>
        {
            file.RemoveAllLines(a => a.Contains("\"numbro\""));
        });
    }
コード例 #27
0
    public override void Execute(UpgradeContext uctx)
    {
        uctx.ChangeCodeFile("Southwind.React/package.json", file =>
        {
            file.InsertAfterFirstLine(a => a.Contains("\"homepage\""),
                                      @"""resolutions"": {
  ""@types/react"": ""file:../Framework/Signum.React/node_modules/@types/react""
},");

            file.UpdateNpmPackage("react", "16.14.0");
            file.UpdateNpmPackage("react-bootstrap", "1.4.0");
            file.UpdateNpmPackage("react-dom", "16.14.0");
        });
    }
コード例 #28
0
        public override void Execute(UpgradeContext uctx)
        {
            uctx.ChangeCodeFile(@"Southwind.React\Views\Home\Index.cshtml", file =>
            {
                file.InsertAfterFirstLine(a => a.Contains(@"})(window.navigator.userAgent.toLowerCase());"),
                                          @"/**
    * @@param {...(a: HTMLElement) => void } complete - Blabla
    */
function newElement(tagName, complete) {
    var result = document.createElement(tagName);
    complete(result);
    return result;
}

window.onerror = function (message, filename, lineno, colno, error) {
    var spinner = document.querySelector(""#reactDiv .loading-spinner"");
    spinner.parentElement.removeChild(spinner);

    var title = document.querySelector(""#reactDiv h3"").replaceWith(
        newElement(""div"", function (div) {
            div.style.fontFamily = ""'Segoe UI', 'Source Sans Pro' , Calibri, Candara, Arial, sans-serif"";
            div.style.fontSize = ""1.3rem"";
            div.appendChild(newElement(""h3"", function (h3) {
                h3.appendChild(newElement(""span"", function (span) {
                    span.style.color = ""red"";
                    span.innerText = error.name;
                }));
                h3.appendChild(newElement(""span"", function (span) {
                    span.style.color = ""darkread"";
                    span.style.marginLeft = ""10px"";
                    span.innerText = error.message;
                }));
            }));
            div.appendChild(newElement(""pre"", function (pre) {
                pre.innerText = error.stack;
            }));
        }));
};");

                file.ReplaceLine(a => a.Contains("const scriptToLoad = ["),
                                 @"(function () {
    var scriptToLoad = [");

                file.ReplaceLine(a => a.Contains("loadNextScript();"),
                                 @"  loadNextScript();
})();");

                SafeConsole.WriteLineColor(ConsoleColor.Red, "Please 'Format Document' '" + file.FilePath + "' in Visual Studio");
            });
        }
コード例 #29
0
        public override void Execute(UpgradeContext uctx)
        {
            uctx.ForeachCodeFile("*.csproj", file =>
            {
                file.UpdateNugetReference(@"Microsoft.TypeScript.MSBuild", @"4.2.2");
                file.UpdateNugetReference(@"Microsoft.NET.Test.Sdk", @"16.9.1");
                file.UpdateNugetReference(@"Selenium.Chrome.WebDriver", @"85.0.0");
            });

            uctx.ChangeCodeFile("Southwind.React/package.json", file =>
            {
                file.UpdateNpmPackage("ts-loader", "8.0.17");
                file.UpdateNpmPackage("typescript", "4.2.2");
            });
        }
コード例 #30
0
    public override void Execute(UpgradeContext uctx)
    {
        uctx.ForeachCodeFile(@"*.csproj", file =>
        {
            file.RemoveAllLines(a => a.Contains("<Platforms>"));
            file.ReplaceBetweenIncluded(
                a => a.Contains("<PropertyGroup Condition="),
                a => a.Contains("</PropertyGroup>"),
                "");
        });

        uctx.ChangeCodeFile(@"Southwind.sln", file =>
        {
            file.Replace("x64", "Any CPU");
        });
    }