Exemple #1
0
 public BundleBundler(IToolsDir tools, MainBuildResult mainBuildResult, ProjectOptions project, BuildResult buildResult)
 {
     _tools           = tools;
     _mainBuildResult = mainBuildResult;
     _project         = project;
     _buildResult     = buildResult;
 }
Exemple #2
0
        void RecursiveAddFilesContent(IDirectoryCache directory, MainBuildResult buildResult, string destDir)
        {
            DiskCache.UpdateIfNeeded(directory);
            foreach (var child in directory)
            {
                if (child.IsInvalid)
                {
                    continue;
                }
                var outPathFileName = (destDir != "" ? destDir + "/" : "") + child.Name;
                buildResult.TakenNames.Add(outPathFileName);
                if (child is IDirectoryCache)
                {
                    RecursiveAddFilesContent(child as IDirectoryCache, buildResult, outPathFileName);
                    continue;
                }

                if (child is IFileCache)
                {
                    buildResult.FilesContent.GetOrAddValueRef(outPathFileName) =
                        new Lazy <object>(() =>
                    {
                        var res = ((IFileCache)child).ByteContent;
                        ((IFileCache)child).FreeCache();
                        return(res);
                    });
                }
            }
        }
Exemple #3
0
        void RecursiveFillOutputByAdditionalResourcesDirectory(MainBuildResult buildResult,
                                                               IDirectoryCache directoryCache, string resourcesPath)
        {
            Owner.DiskCache.UpdateIfNeeded(directoryCache);
            foreach (var child in directoryCache)
            {
                if (child is IDirectoryCache)
                {
                    RecursiveFillOutputByAdditionalResourcesDirectory(buildResult, child as IDirectoryCache,
                                                                      resourcesPath);
                    continue;
                }

                if (child.IsInvalid)
                {
                    continue;
                }
                var outPathFileName = PathUtils.Subtract(child.FullPath, resourcesPath);
                buildResult.TakenNames.Add(outPathFileName);
                if (child is IFileCache)
                {
                    buildResult.FilesContent.GetOrAddValueRef(outPathFileName) =
                        new Lazy <object>(() =>
                    {
                        var res = ((IFileCache)child).ByteContent;
                        ((IFileCache)child).FreeCache();
                        return(res);
                    });
                }
            }
        }
Exemple #4
0
        public void FillOutputByAdditionalResourcesDirectory(Dictionary <string, TSProject> buildResultModules,
                                                             MainBuildResult buildResult)
        {
            if (Owner.UsedDependencies == null)
            {
                Owner.UsedDependencies = new HashSet <string>();
            }
            else
            {
                Owner.UsedDependencies.Clear();
            }
            var nodeModulesDir = Owner.Owner.FullPath;

            while (nodeModulesDir.Length > 0)
            {
                if (Owner.DiskCache.TryGetItem(nodeModulesDir + "/node_modules") is IDirectoryCache dc && !dc.IsInvalid)
                {
                    break;
                }
                nodeModulesDir = PathUtils.Parent(nodeModulesDir).ToString();
            }
            Owner.FillOutputByAssets(buildResult, nodeModulesDir, this);
            FillOutputByAssetsFromModules(buildResult, buildResultModules, nodeModulesDir);
            if (AdditionalResourcesDirectory == null)
            {
                return;
            }
            var resourcesPath = PathUtils.Join(Owner.Owner.FullPath, AdditionalResourcesDirectory);
            var item          = Owner.DiskCache.TryGetItem(resourcesPath);

            if (item is IDirectoryCache)
            {
                RecursiveFillOutputByAdditionalResourcesDirectory(buildResult, item as IDirectoryCache, resourcesPath);
            }
        }
Exemple #5
0
 public void SpriterInitialization(MainBuildResult buildResult)
 {
     if (SpriteGeneration && SpriteGenerator == null)
     {
         SpriteGenerator = new SpriteHolder(Owner.DiskCache, Owner.Logger);
         BundlePngUrl    = buildResult.AllocateName("bundle.png");
     }
 }
Exemple #6
0
 public NjsastBundleBundler(IToolsDir tools, ILogger logger, MainBuildResult mainBuildResult,
                            ProjectOptions project, BuildResult buildResult)
 {
     _tools           = tools;
     _logger          = logger;
     _mainBuildResult = mainBuildResult;
     _project         = project;
     _buildResult     = buildResult;
 }
Exemple #7
0
        public void FillOutputByAssets(MainBuildResult buildResult,
                                       string nodeModulesDir, ProjectOptions projectOptions)
        {
            if (Assets == null)
            {
                return;
            }
            foreach (var asset in Assets)
            {
                var fromModules = asset.Key.StartsWith("node_modules/");
                var fullPath    = fromModules ? nodeModulesDir : Owner.FullPath;
                if (fromModules)
                {
                    if (projectOptions.Owner.UsedDependencies == null)
                    {
                        projectOptions.Owner.UsedDependencies = new HashSet <string>();
                    }
                    var pos = 0;
                    PathUtils.EnumParts(asset.Key, ref pos, out var name, out var isDir);
                    PathUtils.EnumParts(asset.Key, ref pos, out name, out isDir);
                    projectOptions.Owner.UsedDependencies.Add(name.ToString());
                }

                var item = DiskCache.TryGetItem(PathUtils.Join(fullPath, asset.Key));
                if (item == null || item.IsInvalid)
                {
                    continue;
                }
                if (item is IFileCache)
                {
                    buildResult.TakenNames.Add(asset.Value);
                    buildResult.FilesContent.GetOrAddValueRef(asset.Value) = new Lazy <object>(() =>
                    {
                        var res = ((IFileCache)item).ByteContent;
                        ((IFileCache)item).FreeCache();
                        return(res);
                    });
                }
                else
                {
                    RecursiveAddFilesContent(item as IDirectoryCache, buildResult, asset.Value);
                }
            }
        }
Exemple #8
0
 public BuildResult(MainBuildResult mainBuildResult, ProjectOptions options)
 {
     _mainBuildResult = mainBuildResult;
     BundleJsUrl      = _mainBuildResult.AllocateName(options.GetDefaultBundleJsName(), options.Variant != "serviceworker");
 }