"use strict";
/*
 * Copyright © 2020 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.constructLogPath = exports.DashboardDisplayProgressLog = void 0;
const _ = require("lodash");
const RolarProgressLog_1 = require("./RolarProgressLog");
/**
 * Persistent Rolar log that displays in the Dashboard
 */
class DashboardDisplayProgressLog {
    constructor(configuration, context, sdmGoal) {
        this.context = context;
        this.sdmGoal = sdmGoal;
        this.dashboardBaseUrl = _.get(configuration, "sdm.rolar.webAppUrl", _.get(configuration, "sdm.dashboard.url", "https://app.atomist.com"));
        this.rolarProgressLog =
            new RolarProgressLog_1.RolarProgressLog(constructLogPath(context, sdmGoal), configuration);
    }
    get name() {
        return this.rolarProgressLog.name;
    }
    get url() {
        const path = constructLogPath(this.context, this.sdmGoal);
        return `${this.dashboardBaseUrl}/workspace/${path[0]}/logs/${path.slice(1).join("/")}`;
    }
    async isAvailable() {
        return this.rolarProgressLog.isAvailable();
    }
    write(msg, ...args) {
        this.rolarProgressLog.write(msg, ...args);
    }
    flush() {
        return this.rolarProgressLog.flush();
    }
    close() {
        return this.rolarProgressLog.close();
    }
}
exports.DashboardDisplayProgressLog = DashboardDisplayProgressLog;
function constructLogPath(context, sdmGoal) {
    return [
        context.workspaceId,
        sdmGoal.repo.owner,
        sdmGoal.repo.name,
        sdmGoal.sha,
        sdmGoal.environment,
        sdmGoal.uniqueName,
        sdmGoal.goalSetId,
        context.correlationId,
    ].map(encodeURIComponent);
}
exports.constructLogPath = constructLogPath;
//# sourceMappingURL=DashboardDisplayProgressLog.js.map