"use strict";
/*
 * Copyright © 2019 Atomist, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
Object.defineProperty(exports, "__esModule", { value: true });
exports.appendOrCreateFileContent = void 0;
/**
 * Return an editor to append the given content to the end of the file at the specified path,
 * creating the file with only this content if it doesn't exist.
 * Adds no whitespace.
 * @param command command
 * @return {SimpleProjectEditor}
 */
function appendOrCreateFileContent(command) {
    const commandToUse = Object.assign({ leaveAlone: content => content.includes(command.toAppend) }, command);
    return async (p) => {
        const target = await p.getFile(commandToUse.path);
        if (!!target) {
            const oldContent = await target.getContent();
            if (!commandToUse.leaveAlone(oldContent)) {
                await target.setContent(oldContent + commandToUse.toAppend);
            }
        }
        else {
            await p.addFile(commandToUse.path, commandToUse.toAppend);
        }
        return p;
    };
}
exports.appendOrCreateFileContent = appendOrCreateFileContent;
//# sourceMappingURL=appendOrCreate.js.map