public void Execute(string relativePath)
        {
            if (this.options.NoIndex && !this.options.ForceIndex)
            {
                return;
            }

            TypeScriptIndexFile indexFile = this.reader.Read(relativePath);

            List <FileTemplate> fileTemplates = this.files.Where(file => file.RelativePath == relativePath &&
                                                                 file.Name != "index.ts" &&
                                                                 file.Options.Language.IsTypeScript()
                                                                 ).ToList();

            if ((fileTemplates.Count > 1 || this.options.ForceIndex) && indexFile == null)
            {
                indexFile = new TypeScriptIndexFile();
            }
            if (indexFile != null)
            {
                foreach (FileTemplate file in fileTemplates)
                {
                    string shortenedRelativePath = FileSystem.Combine(".", FileSystem.RelativeTo(FileSystem.Combine(file.RelativePath, file.Name), relativePath));
                    indexFile.Lines.Add(new ExportIndexLine {
                        Path = shortenedRelativePath.Replace("\\", "/"), Types = { "*" }
                    });
                }
            }

            this.writer.Write(indexFile, relativePath);
        }