Example #1
0
        public void Run(ISoaServiceHost host, string name, string[] args)
        {
            var scope = host.ServicesProvider.CreateScope();

            //--loadevents -app history,userapi -path /data/his
            _eventsManager = scope.ServiceProvider.GetService <IAppEventsManager>();
            _logger        = scope.ServiceProvider.GetService <ILogger <MqEventsLocalBuild> >();
            Name           = name;
            for (var i = 0; i < args.Length; i++)
            {
                if (args[i].ToLower() == "--loadevents")
                {
                    string appname = "";
                    string path    = "";
                    var    n1      = args[i + 1];
                    var    n2      = args[i + 3];
                    var    v1      = args[i + 2];
                    var    v2      = args[i + 4];
                    var    arr1    = new string[] { n1, v1 };
                    var    arr2    = new string[] { n2, v2 };
                    var    arr     = new string[2][] { arr1, arr2 };
                    foreach (var n in arr)
                    {
                        if (n[0] == "-app")
                        {
                            appname = n[1];
                        }
                        else if (n[0] == "-path")
                        {
                            path = n[1];
                        }
                    }
                    var sp       = host.ServicesProvider;
                    var appnames = appname.Split(',');
                    foreach (var app in appnames)
                    {
                        _logger.LogInformation($"begin create event files of {app} ");
                        var version = "";
                        var res     = _eventsManager.GetVersion(app);
                        if (res.IsVaild)
                        {
                            version = res.InvaildMessage;
                            if (version == "0.0")
                            {
                                continue;
                            }
                            res = _eventsManager.VaildityTest(app, version);
                        }
                        if (!res.IsVaild)
                        {
                            _logger.LogError("EventModel vaild-test failed with err-msg:" + res.InvaildMessage + ",app=" + app + ",version=" + version);
                            return;
                        }
                        var app_path = Path.Combine(path, "EventModels", app);
                        if (!Directory.Exists(app_path))
                        {
                            Directory.CreateDirectory(app_path);
                        }
                        var versionFile = Path.Combine(app_path, version + ".v");
                        if (File.Exists(versionFile))
                        {
                            continue;
                        }
                        var meta = _eventsManager.ListEvents(app);
                        LocalBuildEvents(meta, app_path);
                    }
                    break;
                }
            }
            scope.Dispose();
        }