Create directory when adding a book section from book tree view (#18966)

* create folder when creating a book section

* fix test
This commit is contained in:
Barbara Valdez
2022-04-07 16:19:33 -07:00
committed by GitHub
parent 379b24d78c
commit 683d906138
3 changed files with 5 additions and 4 deletions

View File

@@ -460,7 +460,6 @@ export class BookTocManager implements IBookTocManager {
public async addNewTocEntry(pathDetails: TocEntryPathHandler, bookItem: BookTreeItem, isSection?: boolean): Promise<void> {
let findSection: JupyterBookSection | undefined = undefined;
await fs.writeFile(pathDetails.filePath, '');
if (bookItem.contextValue === BookTreeItemType.section) {
findSection = { file: bookItem.book.page.file, title: bookItem.book.page.title };
}
@@ -470,8 +469,10 @@ export class BookTocManager implements IBookTocManager {
};
if (isSection) {
await fs.mkdir(path.dirname(pathDetails.filePath));
fileEntryInToc.sections = [];
}
await fs.writeFile(pathDetails.filePath, '');
if (bookItem.book.version === BookVersion.v1) {
fileEntryInToc = convertTo(BookVersion.v1, fileEntryInToc);

View File

@@ -99,7 +99,8 @@ export class AddTocEntryDialog {
public async createFile(fileName: string, titleName: string): Promise<boolean> {
try {
const dirPath = this._bookItem.contextValue === BookTreeItemType.savedBook ? this._bookItem.rootContentPath : path.dirname(this._bookItem.book.contentPath);
const filePath = path.posix.join(dirPath, fileName).concat(this._extension);
// For sections, we pass the name of the section in the path to create a directory with the same name
const filePath = this._isSection ? path.posix.join(dirPath, titleName, fileName).concat(this._extension) : path.posix.join(dirPath, fileName).concat(this._extension);
await this.validatePath(dirPath, fileName.concat(this._extension));
const pathDetails = new TocEntryPathHandler(filePath, this._bookItem.rootContentPath, titleName);
await this._tocManager.addNewTocEntry(pathDetails, this._bookItem, this._isSection);

View File

@@ -576,8 +576,7 @@ describe('BookTocManagerTests', function () {
bookTocManager = new BookTocManager(sourceBookModel);
const fileBasename = `addSectionTest-${generateGuid()}`;
const sectionTitle = 'Section Test';
const testFilePath = path.join(run.sectionA.contentFolder, 'sectionA', fileBasename).concat(FileExtension.Markdown);
await fs.writeFile(testFilePath, '');
const testFilePath = path.join(run.sectionA.contentFolder, 'sectionA', sectionTitle,fileBasename).concat(FileExtension.Markdown);
const pathDetails = new TocEntryPathHandler(testFilePath, run.sourceBook.root, sectionTitle);
await bookTocManager.addNewTocEntry(pathDetails, sectionA, true);
let toc: JupyterBookSection[] = yaml.safeLoad((await fs.promises.readFile(run.sourceBook.tocPath)).toString());