Example #1
0
        protected override void OnExecute()
        {
            if (this.Culture != string.Empty)
            {
                System.Globalization.CultureInfo.DefaultThreadCurrentCulture   = new System.Globalization.CultureInfo(this.Culture);
                System.Globalization.CultureInfo.DefaultThreadCurrentUICulture = new System.Globalization.CultureInfo(this.Culture);
            }

            this.Out.WriteLine("receiving info");
            var metaData = this.service.GetMetaData(this.Address, DataBaseSettings.DataBaseName, DataBaseSettings.Tags, FilterSettings.FilterExpression, CodeSettings.Devmode, this.Revision);

            metaData = ReplaceOptionProcessor.Process(metaData);

            var generationSettings = new CodeGenerationSettings()
            {
                ClassName     = CodeSettings.ClassName,
                Namespace     = CodeSettings.Namespace,
                BaseNamespace = CodeSettings.BaseNamespace,
                Prefix        = CodeSettings.Prefix,
                Postfix       = CodeSettings.Postfix,
                BasePath      = CodeSettings.BasePath,
                Options       = CodeSettings.Options,
                Tags          = (TagInfo)DataBaseSettings.Tags,
                Revision      = this.Revision,
            };

            foreach (var item in CommandStringUtility.ArgumentsToDictionary(this.Arguments))
            {
                generationSettings.Arguments.Add(item);
            }

            if (CodeSettings.IsBuildMode == true)
            {
                var compiler = this.compilers.FirstOrDefault(item => item.Name == CodeSettings.LanguageType);
                if (compiler == null)
                {
                    throw new InvalidOperationException($"'{CodeSettings.LanguageType}'은(는) 존재하지 않는 언어입니다.");
                }
                this.Out.WriteLine("compiling code.");
                compiler.Compile(this.OutputPath, metaData.Item1, generationSettings, CodeSettings.BuildTarget);
                this.Out.WriteLine("code compiled.");
            }
            else
            {
                this.Out.WriteLine("code generating.");
                var generator = this.generators.FirstOrDefault(item => item.Name == CodeSettings.LanguageType);
                if (generator == null)
                {
                    throw new InvalidOperationException($"'{CodeSettings.LanguageType}'은(는) 존재하지 않는 언어입니다.");
                }
                generator.Generate(this.OutputPath, metaData.Item1, generationSettings);
                this.Out.WriteLine("code generated.");
            }

            this.Out.WriteLine("data serializing.");
            var serializer = this.serializers.FirstOrDefault(item => item.Name == this.DataType);

            serializer.Serialize(Path.Combine(this.OutputPath, this.DataFilename), metaData.Item2);
            this.Out.WriteLine("data serialized.");
        }
Example #2
0
        private async Task CompileCodeAsync()
        {
            var compiler = this.compilers.FirstOrDefault(item => item.Name == CodeSettings.LanguageType);

            if (compiler == null)
            {
                throw new InvalidOperationException($"'{CodeSettings.LanguageType}'은(는) 존재하지 언어입니다.");
            }

            this.Out.WriteLine("receiving info");
            var metaData = await this.service.GetMetaDataAsync(this.Address, DataBaseSettings.DataBaseName, DataBaseSettings.Tags, FilterSettings.FilterExpression, null);

            var generationSettings = new CodeGenerationSettings()
            {
                ClassName     = CodeSettings.ClassName,
                Namespace     = CodeSettings.Namespace,
                BaseNamespace = CodeSettings.BaseNamespace,
                Prefix        = CodeSettings.Prefix,
                Postfix       = CodeSettings.Postfix,
                BasePath      = CodeSettings.BasePath,
                Options       = CodeSettings.Options,
                Tags          = (TagInfo)DataBaseSettings.Tags,
                Revision      = this.Revision,
            };

            this.Out.WriteLine("code compiling.");
            compiler.Compile(this.OutputPath, metaData.Item1, generationSettings, CodeSettings.BuildTarget);
            this.Out.WriteLine("code compiled.");
        }
Example #3
0
        private void GenerateCode()
        {
            var generator = this.generators.FirstOrDefault(item => item.Name == CodeSettings.LanguageType);

            if (generator == null)
            {
                throw new InvalidOperationException($"'{CodeSettings.LanguageType}'은(는) 존재하지 언어입니다.");
            }

            this.Out.WriteLine("receiving info");
            var metaData = this.service.GetMetaData(this.Address, DataBaseSettings.DataBaseName, DataBaseSettings.Tags, FilterSettings.FilterExpression, CodeSettings.Devmode, this.Revision);

            var generationSettings = new CodeGenerationSettings()
            {
                ClassName     = CodeSettings.ClassName,
                Namespace     = CodeSettings.Namespace,
                BaseNamespace = CodeSettings.BaseNamespace,
                Prefix        = CodeSettings.Prefix,
                Postfix       = CodeSettings.Postfix,
                BasePath      = CodeSettings.BasePath,
                Options       = CodeSettings.Options,
                Tags          = (TagInfo)DataBaseSettings.Tags,
                Revision      = this.Revision,
            };

            this.Out.WriteLine("generating code.");
            generator.Generate(this.OutputPath, metaData.Item1, generationSettings);
            this.Out.WriteLine("code generated.");
        }
Example #4
0
        public void Compile(string outputPath, GenerationSet metaData, CodeGenerationSettings settings, string target)
        {
            var generationInfo = new CodeGenerationInfo(outputPath, metaData, settings);

            if (settings.Options.HasFlag(CodeGenerationOptions.OmitCode) == false && settings.Options.HasFlag(CodeGenerationOptions.OmitBaseCode) == false)
            {
                var filename = this.CompileAll(outputPath, generationInfo, target);
                this.PrintResult(filename);
            }
            else if (settings.Options.HasFlag(CodeGenerationOptions.OmitCode) == true)
            {
                var filename = this.CompileBase(outputPath, generationInfo, target);
                this.PrintResult(filename);
            }
            else if (settings.Options.HasFlag(CodeGenerationOptions.OmitBaseCode) == true)
            {
                var tempPath = PathUtility.GetTempPath(true);
                try
                {
                    var readerPath = this.CompileBase(tempPath, generationInfo, target);
                    var filename   = this.Compile(outputPath, readerPath, generationInfo, target);
                    this.PrintResult(filename);
                }
                finally
                {
                    DirectoryUtility.Delete(tempPath);
                }
            }
        }
Example #5
0
        public void Generate(string outputPath, GenerationSet metaData, CodeGenerationSettings settings)
        {
            var path           = PathUtility.GetFullPath(outputPath);
            var generationInfo = new CodeGenerationInfo(path, metaData, settings);

            if (settings.Options.HasFlag(CodeGenerationOptions.OmitCode) == false)
            {
                var codes = this.GenerateCodes(generationInfo);
                foreach (var item in codes)
                {
                    var codePath = FileUtility.WriteAllText(item.Value, Encoding.UTF8, path, item.Key);
                    this.PrintResult(codePath);
                }
            }

            if (settings.Options.HasFlag(CodeGenerationOptions.OmitBaseCode) == false)
            {
                var codes = this.GenerateBaseCodes(generationInfo);
                foreach (var item in codes)
                {
                    var codePath = FileUtility.WriteAllText(item.Value, Encoding.UTF8, path, item.Key);
                    this.PrintResult(codePath);
                }
            }
        }
Example #6
0
        public void Compile(string outputPath, GenerationSet metaData, CodeGenerationSettings settings, string target)
        {
            if (target == null)
            {
                throw new ArgumentNullException(nameof(target));
            }
            var generationInfo = new CodeGenerationInfo(outputPath, metaData, settings);

            var codes1 = this.GenerateCodes(generationInfo);
            var codes2 = this.GenerateBaseCodes(generationInfo);
            var codes3 = codes1.Concat(codes2).ToDictionary(item => item.Key, item => item.Value);

            var codes = TypeScriptCompiler.Compile(codes3, target == string.Empty ? "ES5" : target);

            if (Directory.Exists(outputPath) == false)
            {
                Directory.CreateDirectory(outputPath);
            }

            foreach (var item in codes)
            {
                string codePath = Path.Combine(outputPath, item.Key);

                using (StreamWriter sw = new StreamWriter(codePath, false, Encoding.UTF8))
                {
                    sw.WriteLine(item.Value);
                    this.PrintResult(codePath);
                }
            }
        }
Example #7
0
        public CodeGenerationInfo(string outputPath, GenerationSet metaData, CodeGenerationSettings settings)
        {
            this.metaData = metaData;
            this.settings = settings;

            if (this.settings.BasePath != string.Empty)
            {
                var relativePath = UriUtility.MakeRelativeOfDirectory(new DirectoryInfo(outputPath).FullName, DirectoryUtility.GetAbsolutePath(outputPath, settings.BasePath));
                this.RelativePath = relativePath + Path.DirectorySeparatorChar;
            }
        }
Example #8
0
        public void Generate(string outputPath, GenerationSet metaData, CodeGenerationSettings settings)
        {
            var generationInfo = new CodeGenerationInfo(metaData, settings)
            {
                RelativePath = string.Empty,
            };

            if (settings.BasePath != string.Empty)
            {
                var relativePath = UriUtility.MakeRelativeOfDirectory(new DirectoryInfo(outputPath).FullName, DirectoryUtility.GetAbsolutePath(outputPath, settings.BasePath));
                generationInfo.RelativePath = relativePath + "/";
            }

            {
                var codes    = this.Generate(generationInfo);
                var dirInfo  = new DirectoryInfo(outputPath);
                var rootPath = generationInfo.Namespace.Replace('.', Path.DirectorySeparatorChar);
                foreach (var item in codes)
                {
                    var ext      = Path.GetExtension(item.Key);
                    var filename = FileUtility.RemoveExtension(item.Key).Replace('.', Path.DirectorySeparatorChar) + ext;
                    filename = Path.Combine(dirInfo.FullName, filename);
                    FileUtility.Prepare(filename);

                    using (StreamWriter sw = new StreamWriter(filename, false, Encoding.UTF8))
                    {
                        sw.WriteLine(item.Value);
                        this.PrintResult(filename);
                    }
                }
            }

            if (settings.Options.HasFlag(CodeGenerationOptions.OmitBaseCode) == false)
            {
                var codes     = this.GenerateBases(generationInfo);
                var codesPath = DirectoryUtility.GetAbsolutePath(outputPath, settings.BasePath);
                foreach (var item in codes)
                {
                    var codePath = FileUtility.Prepare(codesPath, item.Key);
                    using (var writer = new StreamWriter(codePath, false, Encoding.UTF8))
                    {
                        writer.WriteLine(item.Value);
                        this.PrintResult(codePath);
                    }
                }
            }
        }
Example #9
0
        static CreateViewTemplateListener()
        {
            if (EditorPrefs.GetBool("CreateTestScreenWizard"))
            {
                EditorPrefs.SetBool("CreateTestScreenWizard", false);

                string name     = EditorPrefs.GetString("Name");
                string testType = EditorPrefs.GetString("Type");
                EditorPrefs.DeleteKey("Name");
                EditorPrefs.DeleteKey("Type");
                EditorPrefs.DeleteKey("ScriptRootPath");

                _settings = AssetDatabase.LoadAssetAtPath <CodeGenerationSettings>(CodeGenPaths.SETTINGS_PATH);

                //Instantiate root GameObject.
                if (!TryInstantiateRootInstance(name, testType, out GameObject instanceRootGameObject))
                {
                    Debug.LogError("Could not instantiate root instance!");
                    return;
                }

                //Creating the skeleton gameObject of panel.
                GameObject screenGameObject = CreateScreenViewGameObject(name, testType);

                //Turning skeleton gameObject to a usable prefab.
                CreatePrefabOnPathFromInstance(_settings.ProjectResourcesPath + "/" + testType, name, screenGameObject, out GameObject usableScreenPrefab);

                //Re-assigning to prefab instance.
                screenGameObject = PrefabUtility.InstantiatePrefab(usableScreenPrefab) as GameObject;

                //Using Layer0 we will delete any screens that exist.
                GameObject screenContainer = GameObject.Find("Layer0");
                if (screenContainer.transform.childCount > 0)
                {
                    Object.DestroyImmediate(screenContainer.transform.GetChild(0).gameObject);
                }

                if (screenGameObject != null)
                {
                    screenGameObject.transform.SetParent(screenContainer.transform);
                    screenGameObject.GetComponent <RectTransform>().localScale = Vector3.one;
                }

                EditorSceneManager.MarkAllScenesDirty();
            }
        }
Example #10
0
        public void Generate(string outputPath, GenerationSet metaData, CodeGenerationSettings settings)
        {
            var generationInfo = new CodeGenerationInfo(metaData, settings);

            var codes = this.Generate(generationInfo);

            foreach (var item in codes)
            {
                string codePath = FileUtility.Prepare(outputPath, item.Key);

                using (StreamWriter sw = new StreamWriter(codePath, false, Encoding.UTF8))
                {
                    sw.WriteLine(item.Value);
                    this.PrintResult(codePath);
                }
            }
        }
        private void OnWizardCreate()
        {
            if (string.IsNullOrEmpty(Name))
            {
                return;
            }

            _settings        = AssetDatabase.LoadAssetAtPath <CodeGenerationSettings>(CodeGenPaths.SETTINGS_PATH);
            _operationConfig = _settings.PoolKeyGenerationConfig;

            Dictionary <Type, object> startArgs = new Dictionary <Type, object>()
            {
                {
                    typeof(PoolKeyCodeOperation),
                    new PoolKeyCodeOperation.StartArgs()
                    {
                        Name = this.Name
                    }
                }
            };

            foreach (CodeGenerationOperation operation in _operationConfig.Operations)
            {
                operation.Begin(startArgs);
            }

            //Create necessary operate args.
            Dictionary <Type, object> operateArgs = new Dictionary <Type, object>()
            {
            };

            foreach (CodeGenerationOperation operation in _operationConfig.Operations)
            {
                operation.Operate(operateArgs);
            }

            EditorPrefs.SetString("Name", Name);
            AssetDatabase.Refresh();
        }
Example #12
0
        private void OnWizardCreate()
        {
            if (string.IsNullOrEmpty(Name))
            {
                return;
            }

            _settings        = AssetDatabase.LoadAssetAtPath <CodeGenerationSettings>(CodeGenPaths.SETTINGS_PATH);
            _operationConfig = _settings.ScreenCodeGenerationConfig;

            //Create necessary start args.
            Dictionary <Type, object> startArgs = new Dictionary <Type, object>()
            {
                {
                    typeof(ScreenViewMediatorGenerationOperation),
                    new ScreenViewMediatorGenerationOperation.StartArgs()
                    {
                        Name          = this.Name,
                        Type          = this.Type,
                        ViewEventList = this.ViewEventList
                    }
                },
                {
                    typeof(RootContextGenerationOperation),
                    new RootContextGenerationOperation.StartArgs()
                    {
                        Name = this.Name,
                        Type = this.Type
                    }
                },
                {
                    typeof(GameScreensCodeOperation),
                    new GameScreensCodeOperation.StartArgs()
                    {
                        Name = this.Name
                    }
                },
                {
                    typeof(CreateSceneGenerationOperation),
                    new CreateSceneGenerationOperation.StartArgs()
                    {
                        Name = this.Name
                    }
                }
            };

            foreach (CodeGenerationOperation operation in _operationConfig.Operations)
            {
                operation.Begin(startArgs);
            }

            //Create necessary operate args.
            Dictionary <Type, object> operateArgs = new Dictionary <Type, object>()
            {
            };

            foreach (CodeGenerationOperation operation in _operationConfig.Operations)
            {
                operation.Operate(operateArgs);
            }

            //This is for InitializeOnLoad code above.
            EditorPrefs.SetBool("CreateTestScreenWizard", true);
            EditorPrefs.SetString("Name", Name);
            EditorPrefs.SetString("Type", Type);

            AssetDatabase.Refresh();
        }
Example #13
0
 public CodeService(IOptions <CodeGenerationSettings> options)
 {
     _options = options.Value;
 }
Example #14
0
 public CodeGenerationInfo(GenerationSet metaData, CodeGenerationSettings settings)
 {
     this.metaData   = metaData;
     this.settings   = settings;
     this.EnumFomrat = (v) => $"0x{(int)v:x8}";
 }
        /// <summary>
        /// Constructs a instance of Uglify JS minifier
        /// </summary>
        /// <param name="createJsEngineInstance">Delegate that creates an instance of JS engine</param>
        /// <param name="uglifyConfig">Configuration settings of Uglify Minifier</param>
        public UglifyJsMinifier(Func <IJsEngine> createJsEngineInstance, UglifySettings uglifyConfig)
        {
            JsMinifierSettings     jsMinifierConfig     = uglifyConfig.Js;
            ParsingSettings        parsingConfig        = jsMinifierConfig.Parsing;
            CompressionSettings    compressionConfig    = jsMinifierConfig.Compression;
            ManglingSettings       manglingConfig       = jsMinifierConfig.Mangling;
            CodeGenerationSettings codeGenerationConfig = jsMinifierConfig.CodeGeneration;

            ParsingOptions = new ParsingOptions
            {
                BareReturns = parsingConfig.BareReturns,
                Strict      = parsingConfig.Strict
            };

            CompressionOptions = new CompressionOptions
            {
                Angular               = compressionConfig.Angular,
                Booleans              = compressionConfig.Booleans,
                Cascade               = compressionConfig.Cascade,
                CollapseVars          = compressionConfig.CollapseVars,
                Comparisons           = compressionConfig.Comparisons,
                Compress              = compressionConfig.Compress,
                Conditionals          = compressionConfig.Conditionals,
                DeadCode              = compressionConfig.DeadCode,
                DropConsole           = compressionConfig.DropConsole,
                DropDebugger          = compressionConfig.DropDebugger,
                Evaluate              = compressionConfig.Evaluate,
                GlobalDefinitions     = compressionConfig.GlobalDefinitions,
                HoistFunctions        = compressionConfig.HoistFunctions,
                HoistVars             = compressionConfig.HoistVars,
                IfReturn              = compressionConfig.IfReturn,
                JoinVars              = compressionConfig.JoinVars,
                KeepFunctionArgs      = compressionConfig.KeepFunctionArgs,
                KeepInfinity          = compressionConfig.KeepInfinity,
                Loops                 = compressionConfig.Loops,
                NegateIife            = compressionConfig.NegateIife,
                Passes                = compressionConfig.Passes,
                PropertiesDotNotation = compressionConfig.PropertiesDotNotation,
                PureGetters           = compressionConfig.PureGetters,
                PureFunctions         = compressionConfig.PureFunctions,
                ReduceVars            = compressionConfig.ReduceVars,
                Sequences             = compressionConfig.Sequences,
                TopLevel              = compressionConfig.TopLevel,
                TopRetain             = compressionConfig.TopRetain,
                Unsafe                = compressionConfig.Unsafe,
                UnsafeMath            = compressionConfig.UnsafeMath,
                UnsafeProto           = compressionConfig.UnsafeProto,
                UnsafeRegExp          = compressionConfig.UnsafeRegExp,
                Unused                = compressionConfig.Unused
            };

            ManglingOptions = new ManglingOptions
            {
                Eval     = manglingConfig.Eval,
                Except   = manglingConfig.Except,
                Mangle   = manglingConfig.Mangle,
                TopLevel = manglingConfig.TopLevel,
            };

            CodeGenerationOptions = new CodeGenerationOptions
            {
                AsciiOnly            = codeGenerationConfig.AsciiOnly,
                Beautify             = codeGenerationConfig.Beautify,
                Bracketize           = codeGenerationConfig.Bracketize,
                Comments             = codeGenerationConfig.Comments,
                IndentLevel          = codeGenerationConfig.IndentLevel,
                IndentStart          = codeGenerationConfig.IndentStart,
                InlineScript         = codeGenerationConfig.InlineScript,
                KeepQuotedProperties = codeGenerationConfig.KeepQuotedProperties,
                MaxLineLength        = codeGenerationConfig.MaxLineLength,
                PreserveLine         = codeGenerationConfig.PreserveLine,
                QuoteKeys            = codeGenerationConfig.QuoteKeys,
                QuoteStyle           = codeGenerationConfig.QuoteStyle,
                Semicolons           = codeGenerationConfig.Semicolons,
                SpaceColon           = codeGenerationConfig.SpaceColon,
                UnescapeRegexps      = codeGenerationConfig.UnescapeRegexps,
                Width    = codeGenerationConfig.Width,
                WrapIife = codeGenerationConfig.WrapIife
            };

            KeepFunctionNames = jsMinifierConfig.KeepFunctionNames;
            ScrewIe8          = jsMinifierConfig.ScrewIe8;
            Severity          = jsMinifierConfig.Severity;

            if (createJsEngineInstance == null)
            {
                string jsEngineName = uglifyConfig.JsEngine.Name;
                if (string.IsNullOrWhiteSpace(jsEngineName))
                {
                    throw new ConfigurationErrorsException(
                              string.Format(CoreStrings.Configuration_JsEngineNotSpecified,
                                            "uglify",
                                            @"
  * JavaScriptEngineSwitcher.Msie
  * JavaScriptEngineSwitcher.V8
  * JavaScriptEngineSwitcher.ChakraCore",
                                            "MsieJsEngine")
                              );
                }

                createJsEngineInstance = () => JsEngineSwitcher.Instance.CreateEngine(jsEngineName);
            }
            _createJsEngineInstance = createJsEngineInstance;
        }