"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.GetFileCommand = void 0;
const yok_1 = require("../../yok");
class GetFileCommand {
    constructor($devicesService, $stringParameter, $projectData, $errors, $options) {
        this.$devicesService = $devicesService;
        this.$stringParameter = $stringParameter;
        this.$projectData = $projectData;
        this.$errors = $errors;
        this.$options = $options;
        this.allowedParameters = [
            this.$stringParameter,
            this.$stringParameter,
        ];
    }
    async execute(args) {
        await this.$devicesService.initialize({
            deviceId: this.$options.device,
            skipInferPlatform: true,
        });
        let appIdentifier = args[1];
        if (!appIdentifier) {
            try {
                this.$projectData.initializeProjectData();
            }
            catch (err) {
            }
            if (!this.$projectData.projectIdentifiers) {
                this.$errors.fail("Please enter application identifier or execute this command in project.");
            }
        }
        const action = async (device) => {
            appIdentifier =
                appIdentifier ||
                    this.$projectData.projectIdentifiers[device.deviceInfo.platform.toLowerCase()];
            await device.fileSystem.getFile(args[0], appIdentifier, this.$options.file);
        };
        await this.$devicesService.execute(action);
    }
}
exports.GetFileCommand = GetFileCommand;
yok_1.injector.registerCommand(["device|get-file", "devices|get-file"], GetFileCommand);
