Beispiel #1
0
        public void UpdateFileFromBundle(ref AssetBundle bundle)
        {
            if (bundle == null)
            {
                return;
            }
            for (int i = 0; i < _firstFiles.Count; i++)
            {
                ConfigFileInfo info  = _firstFiles[i];
                string         uname = info.fullPath.ToLower();

                if (bundle.Contains(uname))
                {
                    TextAsset asset = bundle.LoadAsset <TextAsset>(uname);
                    if (asset != null)
                    {
                        info.text = asset.text;
                    }
                }
            }

            for (int i = 0; i < _secondFiles.Count; i++)
            {
                ConfigFileInfo info2 = _secondFiles[i];
                string         uname = info2.fullPath.ToLower();
                if (bundle.Contains(uname))
                {
                    TextAsset asset = bundle.LoadAsset <TextAsset>(uname);
                    if (asset != null)
                    {
                        info2.text = asset.text;
                    }
                }
            }
        }
        public async void Initialize()
        {
            if (CreateHsvConfigsFolderIfYeetedByPlayer())
            {
                await SaveConfig(Path.Combine(_hsvConfigsFolderPath, "HitScoreVisualizerConfig-default.json"), Configuration.Default).ConfigureAwait(false);
            }

            if (_hsvConfig.ConfigFilePath == null)
            {
                return;
            }

            var fullPath = Path.Combine(_hsvConfigsFolderPath, _hsvConfig.ConfigFilePath);

            if (!File.Exists(fullPath))
            {
                _hsvConfig.ConfigFilePath = null;
                return;
            }

            var userConfig = await LoadConfig(_hsvConfig.ConfigFilePath).ConfigureAwait(false);

            if (userConfig == null)
            {
                Plugin.LoggerInstance.Warn($"Couldn't load userConfig at {fullPath}");
                return;
            }

            var configFileInfo = new ConfigFileInfo(Path.GetFileNameWithoutExtension(_hsvConfig.ConfigFilePath), _hsvConfig.ConfigFilePath)
            {
                Configuration = userConfig, State = GetConfigState(userConfig, Path.GetFileNameWithoutExtension(_hsvConfig.ConfigFilePath))
            };

            await SelectUserConfig(configFileInfo).ConfigureAwait(false);
        }
Beispiel #3
0
        public void AddFile(string path, ConfigFileType type, string text, bool first, long parent)
        {
            ConfigFileInfo file = new ConfigFileInfo();

            file.type = type;
            string[] arr = path.Split('/');
            file.name     = arr[arr.Length - 1];
            file.fullPath = "Assets/Resources/Config/" + path + ".xml";
            file.text     = text;
            file.parent   = parent;
            AddFile(file, first);
        }
        public async void Initialize()
        {
            if (CreateHsvConfigsFolderIfYeetedByPlayer())
            {
                await SaveConfig(Path.Combine(_hsvConfigsFolderPath, "HitScoreVisualizerConfig (default).json"), Configuration.Default).ConfigureAwait(false);

                var oldHsvConfigPath = Path.Combine(UnityGame.UserDataPath, "HitScoreVisualizerConfig.json");
                if (File.Exists(oldHsvConfigPath))
                {
                    try
                    {
                        var destinationHsvConfigPath = Path.Combine(_hsvConfigsFolderPath, "HitScoreVisualizerConfig (imported).json");
                        File.Move(oldHsvConfigPath, destinationHsvConfigPath);

                        _hsvConfig.ConfigFilePath = destinationHsvConfigPath;
                    }
                    catch (Exception e)
                    {
                        _siraLog.Warning(e);
                    }
                }
            }

            if (_hsvConfig.ConfigFilePath == null)
            {
                return;
            }

            var fullPath = Path.Combine(_hsvConfigsFolderPath, _hsvConfig.ConfigFilePath);

            if (!File.Exists(fullPath))
            {
                _hsvConfig.ConfigFilePath = null;
                return;
            }

            var userConfig = await LoadConfig(_hsvConfig.ConfigFilePath).ConfigureAwait(false);

            if (userConfig == null)
            {
                _siraLog.Warning($"Couldn't load userConfig at {fullPath}");
                return;
            }

            var configFileInfo = new ConfigFileInfo(Path.GetFileNameWithoutExtension(_hsvConfig.ConfigFilePath), _hsvConfig.ConfigFilePath)
            {
                Configuration = userConfig,
                State         = GetConfigState(userConfig, Path.GetFileNameWithoutExtension(_hsvConfig.ConfigFilePath), true)
            };

            await SelectUserConfig(configFileInfo).ConfigureAwait(false);
        }
Beispiel #5
0
 public void ParseAllFile()
 {
     for (int i = 0; i < _firstFiles.Count; i++)
     {
         ConfigFileInfo info1 = _firstFiles[i];
         ParseFile(info1.parent, info1.type, info1.text);
     }
     for (int i = 0; i < _secondFiles.Count; i++)
     {
         ConfigFileInfo info2 = _secondFiles[i];
         ParseFile(info2.parent, info2.type, info2.text);
     }
 }
Beispiel #6
0
 public void AddFile(ConfigFileInfo info, bool first)
 {
     if (first)
     {
         if (HasSameFile(info.name, true) == false)
         {
             _firstFiles.Add(info);
         }
     }
     else
     {
         if (HasSameFile(info.name, false) == false)
         {
             _secondFiles.Add(info);
         }
     }
 }
Beispiel #7
0
        public void UpdateFileByPath(string path, string text, bool first)
        {
            ConfigFileInfo info = GetFileByPath(path, first);

            if (info.fullPath != path)
            {
                info          = new ConfigFileInfo();
                info.name     = path;
                info.fullPath = path;
                info.text     = text;
                AddFile(info, first);
            }
            else
            {
                info.text = text;
            }
        }
Beispiel #8
0
        public ConfigFileInfo GetFileByPath(string path, bool first)
        {
            List <ConfigFileInfo> list = null;

            if (first)
            {
                list = _firstFiles;
            }
            else
            {
                list = _secondFiles;
            }
            for (int i = 0; i < list.Count; i++)
            {
                ConfigFileInfo info = list[i];
                if (info.name == path)
                {
                    return(info);
                }
            }
            return(new ConfigFileInfo());
        }
Beispiel #9
0
        public bool HasSameFile(string path, bool first)
        {
            List <ConfigFileInfo> list = null;

            if (first)
            {
                list = _firstFiles;
            }
            else
            {
                list = _secondFiles;
            }
            for (int i = 0; i < list.Count; i++)
            {
                ConfigFileInfo info = list[i];
                if (info.name == path)
                {
                    return(true);
                }
            }
            return(false);
        }
        public MainWindow()
        {
            InitializeComponent();

            // Log startup
            logger.Info("App Starting ...");

            ResizeMode = System.Windows.ResizeMode.CanResizeWithGrip;
            _controlToReceiveFocus = this.Settings;

            // Get configuration
            using (StreamReader sr = new StreamReader("//macallan/Admin/Config/8DPDevices.json"))
            {
                string jsonData = sr.ReadToEnd();
                _configFileInfo = JsonConvert.DeserializeObject<ConfigFileInfo>(jsonData);
             }

            // Notify icon
            _notifyIcon = new System.Windows.Forms.NotifyIcon();
            Stream iconStream = System.Windows.Application.GetResourceStream(new Uri("pack://*****:*****@"res/locked-large.png", @"res/unlocked-large.png");
            doorClosedImages = new EasyButtonImage(@"res/doorclosed-large.png", @"res/dooropen-large.png");
            doorBellImages = new EasyButtonImage(@"res/doorbell-large-sq.png", @"res/doorbell-large.png");

            // Start getting updates from front door
            _frontDoorControl.StartUpdates();

            // Start update timer for status
            _dTimer.Tick += new EventHandler(dtimer_Tick);
            _dTimer.Interval = new TimeSpan(0, 0, 1);
            _dTimer.Start();

            // Log startup
            logger.Info("App Started");
        }
        public IHttpActionResult Post([FromBody] ConfigFileInfo cfgInfo)
        {
            var newCfg = _ConfigRepository.CreateNewConfig(cfgInfo.User, cfgInfo.Text);

            return(Ok(newCfg));
        }
Beispiel #12
0
 public void AddFile(ConfigFileInfo info)
 {
     AddFile(info, true);
 }
Beispiel #13
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="baseDirectory"></param>
        /// <param name="applicationName"></param>
        /// <param name="serviceName"></param>
        /// <param name="hostName"></param>
        /// <param name="defaultConfiguration">Json configuration sent by the client
        /// that represents base configuration for the application. It has lower priority. It can be null.</param>
        /// <param name="defaultParameters">Json configuration sent by the client
        /// to contain base parameters for the application, it has lower priority. It can be null.</param>
        /// <returns></returns>
        internal static ComposedConfiguration GetConfig
        (
            String baseDirectory,
            String applicationName,
            String serviceName,
            String hostName,
            MissingParametersAction missingParams,
            JObject defaultConfiguration = null,
            JObject defaultParameters    = null
        )
        {
            DirectoryInfo baseDir      = new DirectoryInfo(baseDirectory);
            var           appDirectory = FileSystem.Instance.RedirectDirectory(
                Path.Combine(baseDir.FullName, applicationName)
                );
            var systemDirectory = Path.Combine(baseDir.FullName, ".system");

            if (!Directory.Exists(systemDirectory))
            {
                Directory.CreateDirectory(systemDirectory);
            }

            var    baseDirLen         = Directory.GetParent(appDirectory).FullName.Length;
            String baseConfigFileName = Path.Combine(baseDir.FullName, "base.config");
            String defaultApplicationBaseConfigFileName = Path.Combine(systemDirectory, applicationName, serviceName, (hostName ?? "") + DateTime.Now.ToString("_yyyyMMdd_hhMMss_fff_") + ".config");

            String applicationBaseConfigFileName      = Path.Combine(appDirectory, "base.config");
            String defaultDirectoryBaseConfigFileName = Path.Combine(appDirectory, "Default", "base.config");
            String serviceConfigFileName = Path.Combine(appDirectory, "Default", serviceName + ".config");

            //load standard config file
            List <ConfigFileInfo> configFiles = new List <ConfigFileInfo>();

            if (FileSystem.Instance.FileExists(baseConfigFileName))
            {
                configFiles.Add(ConfigFileInfo.ForBase(FileSystem.Instance.GetFileContent(baseConfigFileName), baseConfigFileName.Substring(baseDirLen)));
            }

            //check default configuration file
            if (defaultConfiguration != null)
            {
                FileSystem.Instance.WriteFile(defaultApplicationBaseConfigFileName, defaultConfiguration.ToString());
                configFiles.Add(ConfigFileInfo.ForBase(FileSystem.Instance.GetFileContent(defaultApplicationBaseConfigFileName), defaultApplicationBaseConfigFileName.Substring(baseDirLen)));
                _logger.InfoFormat("Default File used. App {0} service {1} host {2} content {3}",
                                   applicationName, serviceName, hostName, defaultConfiguration.ToString());
            }

            if (FileSystem.Instance.FileExists(applicationBaseConfigFileName))
            {
                configFiles.Add(ConfigFileInfo.ForBase(FileSystem.Instance.GetFileContent(applicationBaseConfigFileName), applicationBaseConfigFileName.Substring(baseDirLen)));
            }
            if (FileSystem.Instance.FileExists(defaultDirectoryBaseConfigFileName))
            {
                configFiles.Add(ConfigFileInfo.ForBase(FileSystem.Instance.GetFileContent(defaultDirectoryBaseConfigFileName), defaultDirectoryBaseConfigFileName.Substring(baseDirLen)));
            }
            if (FileSystem.Instance.FileExists(serviceConfigFileName))
            {
                configFiles.Add(ConfigFileInfo.ForBase(FileSystem.Instance.GetFileContent(serviceConfigFileName), serviceConfigFileName.Substring(baseDirLen)));
            }

            //load specific machine configuration files
            if (!String.IsNullOrEmpty(hostName))
            {
                String hostBaseConfigFileName = Path.Combine(appDirectory, hostName, "base.config");
                if (FileSystem.Instance.FileExists(hostBaseConfigFileName))
                {
                    configFiles.Add(ConfigFileInfo.ForHostSpecific(FileSystem.Instance.GetFileContent(hostBaseConfigFileName), hostBaseConfigFileName.Substring(baseDirLen), hostName));
                }
                String hostConfigFileName = Path.Combine(appDirectory, hostName, serviceName + ".config");
                if (FileSystem.Instance.FileExists(hostConfigFileName))
                {
                    configFiles.Add(ConfigFileInfo.ForHostSpecific(FileSystem.Instance.GetFileContent(hostConfigFileName), hostBaseConfigFileName.Substring(baseDirLen), hostName));
                }
            }
            if (configFiles.Count == 0)
            {
                throw new ConfigurationErrorsException("There are no valid config at directory: " + baseDirectory);
            }
            var    baseConfigObject = JsonComposer.ComposeJsonContent(configFiles.ToArray());
            String defaultDirectoryBaseParametersFileName = Path.Combine(appDirectory, "Default", "parameters.config");
            //then load all parameter files.
            var parameterObject = GetParameterObject(
                baseDirectory,
                applicationName,
                serviceName,
                hostName,
                defaultDirectoryBaseParametersFileName,
                defaultConfiguration,
                defaultParameters);

            //need to return all parameters.

            baseConfigObject["jarvis-parameters"] = (JObject)JsonConvert.DeserializeObject(
                JsonConvert.SerializeObject(parameterObject));

            //Do the substitution
            ParameterManager.ReplaceResult replaceResult;

            ParameterManager parameterManager;

            if (missingParams == MissingParametersAction.Blank)
            {
                parameterManager = new ParameterManager(String.Empty);
            }
            else
            {
                parameterManager = new ParameterManager();
            }
            while ((replaceResult = parameterManager.ReplaceParameters(baseConfigObject, parameterObject)).HasReplaced)
            {
                //do nothing, everything is done by the replace parameters routine
            }

            if (replaceResult.MissingParams.Count > 0)
            {
                var missingParametersList = replaceResult.MissingParams.Aggregate((s1, s2) => s1 + ", " + s2);

                switch (missingParams)
                {
                case MissingParametersAction.Throw:
                    throw new ConfigurationErrorsException("Missing parameters: " +
                                                           missingParametersList);

                case MissingParametersAction.Ignore:
                    baseConfigObject["jarvis-missing-parameters"] = new JArray(replaceResult.MissingParams);
                    _logger.DebugFormat("Missing Parameter List {0} but client ask to ignore", missingParametersList);
                    break;

                case MissingParametersAction.Blank:
                    baseConfigObject["jarvis-missing-parameters"] = new JArray(replaceResult.MissingParams);
                    break;
                }
            }
            parameterManager.UnescapePercentage(baseConfigObject);

            //cleanup file
            if (FileSystem.Instance.FileExists(defaultApplicationBaseConfigFileName))
            {
                FileSystem.Instance.DeleteFile(defaultApplicationBaseConfigFileName);
            }
            if (FileSystem.Instance.FileExists(defaultDirectoryBaseParametersFileName))
            {
                FileSystem.Instance.DeleteFile(defaultDirectoryBaseParametersFileName);
            }

            return(new ComposedConfiguration(baseConfigObject, replaceResult));
        }
Beispiel #14
0
        public static JObject GetParameterObject
        (
            String baseDirectory,
            String applicationName,
            String serviceName,
            String hostName,
            String defaultDirectoryBaseParametersFileName,
            JObject defaultConfiguration = null,
            JObject defaultParameters    = null
        )
        {
            DirectoryInfo baseDir      = new DirectoryInfo(baseDirectory);
            var           appDirectory = FileSystem.Instance.RedirectDirectory(
                Path.Combine(baseDir.FullName, applicationName)
                );
            var systemDirectory = Path.Combine(baseDir.FullName, ".system");

            if (!Directory.Exists(systemDirectory))
            {
                Directory.CreateDirectory(systemDirectory);
            }

            var baseDirLen = Directory.GetParent(appDirectory).FullName.Length;

            //Base file parameters.config
            String baseParametersFileName = Path.Combine(baseDir.FullName, "parameters.config");
            //base file for application, in base directory called parameters.applicationname.config
            String baseApplicationParametersFileName = Path.Combine(baseDir.FullName, "parameters." + applicationName + ".config");
            //parameters.config inside the application directory
            String applicationBaseParametersFileName = Path.Combine(appDirectory, "parameters.config");

            String defaultApplicationBaseParametersFileName = Path.Combine(systemDirectory, applicationName, serviceName, (hostName ?? "") + DateTime.Now.ToString("_yyyyMMdd_hhMMss_fff_") + ".parameters.config");

            String serviceParametersFileName      = Path.Combine(appDirectory, "Default", serviceName + ".parameters.config");
            List <ConfigFileInfo> parametersFiles = new List <ConfigFileInfo>();

            //Lower precedence, base parameter file name.
            if (FileSystem.Instance.FileExists(baseParametersFileName))
            {
                parametersFiles.Add(ConfigFileInfo.ForBase(FileSystem.Instance.GetFileContent(baseParametersFileName), baseParametersFileName.Substring(baseDirLen)));
            }

            //check default parameters file passed by the client
            if (defaultParameters != null)
            {
                FileSystem.Instance.WriteFile(defaultApplicationBaseParametersFileName, defaultParameters.ToString());
                parametersFiles.Add(ConfigFileInfo.ForBase(FileSystem.Instance.GetFileContent(defaultApplicationBaseParametersFileName), defaultApplicationBaseParametersFileName.Substring(baseDirLen)));
                _logger.InfoFormat("Default Parameters used. App {0} service {1} host {2} content {3}",
                                   applicationName, serviceName, hostName, defaultParameters.ToString());
            }
            //PAY ATTENTION: base application parameters file name should have higher precedence than client
            //passed parameter file.
            if (FileSystem.Instance.FileExists(baseApplicationParametersFileName))
            {
                parametersFiles.Add(ConfigFileInfo.ForBase(FileSystem.Instance.GetFileContent(baseApplicationParametersFileName), baseApplicationParametersFileName.Substring(baseDirLen)));
            }

            if (FileSystem.Instance.FileExists(applicationBaseParametersFileName))
            {
                parametersFiles.Add(ConfigFileInfo.ForBase(FileSystem.Instance.GetFileContent(applicationBaseParametersFileName), applicationBaseParametersFileName.Substring(baseDirLen)));
            }
            if (FileSystem.Instance.FileExists(defaultDirectoryBaseParametersFileName))
            {
                parametersFiles.Add(ConfigFileInfo.ForBase(FileSystem.Instance.GetFileContent(defaultDirectoryBaseParametersFileName), defaultDirectoryBaseParametersFileName.Substring(baseDirLen)));
            }
            if (FileSystem.Instance.FileExists(serviceParametersFileName))
            {
                parametersFiles.Add(ConfigFileInfo.ForBase(FileSystem.Instance.GetFileContent(serviceParametersFileName), serviceParametersFileName.Substring(baseDirLen)));
            }

            JObject parameterObject;

            if (parametersFiles.Count > 0)
            {
                parameterObject = JsonComposer.ComposeJsonContent(parametersFiles.ToArray());
            }
            else
            {
                parameterObject = new JObject();
            }

            //use base parameters
            JObject sysParams = new JObject();

            sysParams.Add("appName", applicationName);
            sysParams.Add("serviceName", serviceName);
            sysParams.Add("hostName", hostName);
            parameterObject.Add("sys", sysParams);

            return(parameterObject);
        }