Ejemplo n.º 1
0
        protected virtual void RunPreview(PreviewTask tsk, string launchProfile = null)
        {
            try
            {
                var arg     = launchProfile == null ? "" : $"--launch-profile {launchProfile}";
                var process = GetCommandProcess(paths.UIRoot, "dotnet", $"-d run {arg} --no-build");

                //process.EnableRaisingEvents = true;
                process.StartInfo.RedirectStandardOutput = true;
                // process.StartInfo.RedirectStandardError = true;

                process.Start();


                var outReader = process.StandardOutput;
                //var errReader = process.StandardError;

                while (!outReader.EndOfStream)//&& !errReader.EndOfStream)
                {
                    var outLine = outReader.ReadLine();
                    //var errLine = errReader.ReadLine();

                    if (outLine != null)
                    {
                        Out.WriteLine(outLine);
                        if (outLine.GetPatternContents("Process ID: (.*)", out string[] data))
Ejemplo n.º 2
0
 protected virtual Task RunPreviewAsync(PreviewTask tsk, string launchProfile = null)
 {
     return(new Task(() =>
     {
         RunPreview(tsk, launchProfile);
     }));
 }
Ejemplo n.º 3
0
        public virtual Result StartPreview(string tenantCode, string launchProfile = null)
        {
            var res = new Result();

            if (Current != null)
            {
                StopPreview();
            }
            try
            {
                var folder = Path.Combine(paths.UIRoot, tenantCode);
                if (!Directory.Exists(folder))
                {
                    return new Result {
                               Code = 1, Message = "render_tenant_first"
                    }
                }
                ;

                var otherApps = data.GetAppCodes().Where(d => d != tenantCode);
                Out.WriteLine("Deleting other tenant files");
                foreach (var app in otherApps)
                {
                    var p = Path.Combine(paths.UIRoot, app);

                    if (Directory.Exists(p))
                    {
                        DeleteFolder(p, app);
                    }
                }
                var dev = Path.Combine(paths.UIRoot, BundleFolder, "dev");
                if (Directory.Exists(dev))
                {
                    DeleteFolder(dev, "Development bundle");
                }

                var configString = WebpackConfigTemplate.Replace("%TenantCode%", tenantCode);
                var configPath   = Path.Combine(paths.UIRoot, "webpack.config.js");
                Out.Write("Changing configuration");
                File.WriteAllText(configPath, configString);
                WriteSuccess(null, SuccessCol);

                Current = new PreviewTask {
                    TenantCode = tenantCode
                };
                var t = RunPreviewAsync(Current, launchProfile);
                t.Start();
                Current.WaitForStartResult();

                if (Current.IsStarted)
                {
                    var url = Utils.CombineUrl(paths.UIUrl, Current.TenantCode);
                    Out.WriteLine("Preview started on :" + url);
                    res.Message     = "tenant_preview_created";
                    res.Data["Url"] = url;
                }
                else
                {
                    res.Code = 1;
                    Out.WriteLine("Preview failed to start");
                    res.Message = "failed_to_start";
                    Current     = null;
                }
            }
            catch (Exception ex)
            {
                res.SetException(ex);
            }
            return(res);
        }