Example #1
0
        /// <summary>
        /// Creates the static files and writes them to the Workbench_FileGenerator component directory.
        /// </summary>
        /// <param name="folderName">The relative path of the folder this file will be placed in.</param>
        /// <param name="file"></param>
        /// <param name="parentNode"></param>
        /// <returns>The number of files created.</returns>
        private int CreateStaticFile(string folderName, IFile file, ProjectFileTreeNode parentNode)
        {
            int fileCount = 0;

            if (string.IsNullOrEmpty(file.IteratorName))
            {
                fileCount++;
                string fileName         = UpdateScriptName(null, file);
                string relativeFilePath = Path.Combine(folderName, fileName);
                string fullPath         = Path.Combine(absoluteBasePath, relativeFilePath);

                if (GetSkipCurrentFile(file, Path.Combine(_Project.ProjectSettings.OutputPath, relativeFilePath)))
                {
                    return(fileCount);
                }

                _FileController.WriteResourceToFile(_Loader.CurrentAssembly, file.StaticFileName, fullPath);

                _Project.AddGeneratedFile(new GeneratedFile(file.Name, fullPath, relativeFilePath, "", file.IteratorName));

                if (addToProjectFileTree)
                {
                    BinaryFile            outFile     = new BinaryFile(fullPath, false);
                    BinaryFileInformation binFileInfo = new BinaryFileInformation();
                    binFileInfo.NewGenFile       = outFile;
                    binFileInfo.RelativeFilePath = relativeFilePath;
                    parentNode.AddChildNode(binFileInfo, fileName);
                }
                AddFileCountToPreviousEventAndRefire(_ProgressHelper, 1);

                return(fileCount);
            }
            ProviderInfo provider;
            Type         iteratorType = _Project.GetIteratorTypeFromProviders(file.IteratorName, out provider);

            IScriptBaseObject[] iteratorObjects = GetIteratorObjects(iteratorType, provider);

            if (iteratorObjects != null)
            {
                if (iteratorType.IsArray)
                {
                    throw new NotImplementedException("Array iterator types not handled for static files yet. Please inform [email protected] about this error.");
                }

                foreach (IScriptBaseObject iteratorObject in iteratorObjects)
                {
                    string fileName         = UpdateScriptName(iteratorObject, file);
                    string relativeFilePath = Path.Combine(folderName, fileName);
                    string fullPath         = Path.Combine(absoluteBasePath, relativeFilePath);

                    if (GetSkipCurrentFile(file, Path.Combine(_Project.ProjectSettings.OutputPath, relativeFilePath)))
                    {
                        // Skip the file.
                        continue;
                    }

                    _FileController.WriteResourceToFile(_Loader.CurrentAssembly, file.StaticFileName, fullPath);

                    _Project.AddGeneratedFile(new GeneratedFile(file.Name, fullPath, relativeFilePath, "", file.IteratorName));

                    if (addToProjectFileTree)
                    {
                        BinaryFile            outFile     = new BinaryFile(fullPath, false);
                        BinaryFileInformation binFileInfo = new BinaryFileInformation();
                        binFileInfo.RelativeFilePath = relativeFilePath;
                        binFileInfo.NewGenFile       = outFile;


                        parentNode.AddChildNode(binFileInfo, fileName);
                    }
                    fileCount++;
                    AddFileCountToPreviousEventAndRefire(_ProgressHelper, 1);
                }
            }

            return(fileCount);
        }