AssetBundleGraph.CUIUtility.BuildFromCommandline C# (CSharp) Method

BuildFromCommandline() private method

private BuildFromCommandline ( ) : void
return void
        public static void BuildFromCommandline()
        {
            try {
                var arguments = new List<string>(System.Environment.GetCommandLineArgs());

                Application.SetStackTraceLogType(LogType.Log, 		StackTraceLogType.None);
                Application.SetStackTraceLogType(LogType.Error, 	StackTraceLogType.None);
                Application.SetStackTraceLogType(LogType.Warning, 	StackTraceLogType.None);

                BuildTarget target = EditorUserBuildSettings.activeBuildTarget;

                int targetIndex = arguments.FindIndex(a => a == "-target");

                if(targetIndex >= 0) {
                    var targetStr = arguments[targetIndex+1];
                    Debug.Log("Target specified:"+ targetStr);

                    var newTarget = BuildTargetUtility.BuildTargetFromString(arguments[targetIndex+1]);
                    if(!BuildTargetUtility.IsBuildTargetSupported(newTarget)) {
                        throw new AssetBundleGraphException(newTarget + " is not supported to build with this Unity. Please install platform support with installer(s).");
                    }

                    if(newTarget != target) {
                        EditorUserBuildSettings.SwitchActiveBuildTarget(newTarget);
                        target = newTarget;
                    }
                }

                Debug.Log("Asset bundle building for:" + BuildTargetUtility.TargetToHumaneString(target));

                if (!SaveData.IsSaveDataAvailableAtDisk()) {
                    Debug.Log("AssetBundleGraph save data not found. Aborting...");
                    return;
                }

                // load data from file.
                SaveData saveData = SaveData.LoadFromDisk();
                List<NodeException> errors = new List<NodeException>();
                Dictionary<ConnectionData,Dictionary<string, List<Asset>>> result = null;

                Action<NodeException> errorHandler = (NodeException e) => {
                    errors.Add(e);
                };

                // perform setup. Fails if any exception raises.
                AssetBundleGraphController.Perform(saveData, target, false, errorHandler, null);

                // if there is error reported, then run
                if(errors.Count > 0) {
                    Debug.Log("Build terminated because following error found during Setup phase. Please fix issues by opening editor before building.");
                    errors.ForEach(e => Debug.LogError(e));

                    return;
                }

                NodeData lastNodeData = null;
                float lastProgress = 0.0f;
                Action<NodeData, float> updateHandler = (NodeData node, float progress) => {
                    if(node != null && lastNodeData != node) {
                        lastNodeData = node;
                        lastProgress = progress;

                        Debug.LogFormat("Processing {0}...", node.Name);
                    }
                    if(progress > lastProgress) {
                        if(progress <= 1.0f) {
                            Debug.LogFormat("{0} Complete.", node.Name);
                        } else if( (progress - lastProgress) > 0.2f ) {
                            Debug.LogFormat("{0}: {1} %", node.Name, (int)progress*100f);
                        }
                        lastProgress = progress;
                    }
                };

                // run datas.
                result = AssetBundleGraphController.Perform(saveData, target, true, errorHandler, updateHandler);

                AssetDatabase.Refresh();
                AssetBundleGraphController.Postprocess(saveData, result, true);

            } catch(Exception e) {
                Debug.LogError(e);
                Debug.LogError("Building asset bundles terminated due to unexpected error.");
            } finally {
                Debug.Log("End of build.");
            }
        }