private BuilderPackage LoadPackage(string name)
        {
            var config = new BuilderPackage();

            string path = BuilderPackage.PackagesDir + name + ".json";

            config.name = name;
            if (File.Exists(path))
            {
                config.FromJson(JObject.Parse(File.ReadAllText(path)));
            }
            else
            {
                config.InitializeNew();
            }

            return(config);
        }
        public static BuilderPackage GetPackage(string name)
        {
            if (string.IsNullOrEmpty(name))
            {
                return(null);
            }
            var path = PackagesDir + name + ".json";

            if (!File.Exists(path))
            {
                return(null);
            }

            var package = new BuilderPackage();

            package.name = name;
            package.FromJson(JObject.Parse(File.ReadAllText(path)));
            return(package);
        }
        private void CopyPackage()
        {
            if (this._currentPackage == null)
            {
                return;
            }
            var obj = new JObject();

            this._currentPackage.ToJson(obj);

            string nameBase = this._currentPackage.name;
            string name     = nameBase;
            string path     = null;
            int    i        = 0;

            while (true)
            {
                path = BuilderPackage.PackagesDir + name + ".json";
                if (!File.Exists(path))
                {
                    break;
                }

                name = nameBase + (++i).ToString();
            }

            var package = new BuilderPackage();

            package.name = name;
            package.FromJson(obj);
            File.WriteAllText(path, obj.ToString(Newtonsoft.Json.Formatting.Indented), Encoding.UTF8);

            this._currentPackageName  = name;
            this._currentPackage      = package;
            this._currentPackageDirty = false;
        }