blob: ad51b0dcb0f25e834c8b4ad787fe505be97dee82 [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
'use strict';
/**
* Utilities for file operations.
*/
var fileOperationUtils = {};
/**
* Deduplicates file name inside |rootDirectory| directory.
* @param {string} fileName The suggested file name.
* @param {!DirectoryEntry} rootDirectory The root directory where new file with
* |fileName| will be created.
* @return {Promise<string>}
*/
fileOperationUtils.deduplicateFileName = function(fileName, rootDirectory) {
// Split the name into two parts. The file name/prefix and extension.
var match = /^(.*?)?(\.[^.]*?)?$/.exec(fileName);
var prefix = match[1];
var ext = match[2] || '';
var getFileName = function(filePrefix, fileNumber, fileExtension) {
var newName = filePrefix;
if (fileNumber > 0) {
newName += ' (' + fileNumber + ')';
}
newName += fileExtension;
return new Promise(rootDirectory.getFile.bind(
rootDirectory, newName, {create: false}))
.then(function() {
return getFileName(filePrefix, fileNumber + 1, fileExtension);
})
.catch(function(error) {
if (error.code == error.NOT_FOUND_ERR) {
return Promise.resolve(newName);
} else {
return Promise.reject(error);
}
});
};
return getFileName(prefix, 0, ext);
};