nativescript
Version:
Command-line interface for building NativeScript projects
107 lines • 4.17 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.IOSDeviceFileSystem = void 0;
const os_1 = require("os");
const _ = require("lodash");
class IOSDeviceFileSystem {
constructor(device, $logger, $iosDeviceOperations, $fs) {
this.device = device;
this.$logger = $logger;
this.$iosDeviceOperations = $iosDeviceOperations;
this.$fs = $fs;
}
async listFiles(devicePath, appIdentifier) {
if (!devicePath) {
devicePath = ".";
}
this.$logger.info("Listing %s", devicePath);
const deviceIdentifier = this.device.deviceInfo.identifier;
let children = [];
const result = await this.$iosDeviceOperations.listDirectory([
{ deviceId: deviceIdentifier, path: devicePath, appId: appIdentifier },
]);
children = result[deviceIdentifier][0].response;
this.$logger.info(children.join(os_1.EOL));
}
async getFile(deviceFilePath, appIdentifier, outputFilePath) {
if (outputFilePath) {
await this.$iosDeviceOperations.downloadFiles([
{
appId: appIdentifier,
deviceId: this.device.deviceInfo.identifier,
source: deviceFilePath,
destination: outputFilePath,
},
]);
return;
}
const fileContent = await this.getFileContent(deviceFilePath, appIdentifier);
this.$logger.info(fileContent);
}
async getFileContent(deviceFilePath, appIdentifier) {
const result = await this.$iosDeviceOperations.readFiles([
{
deviceId: this.device.deviceInfo.identifier,
path: deviceFilePath,
appId: appIdentifier,
},
]);
const response = result[this.device.deviceInfo.identifier][0];
return response.response;
}
async putFile(localFilePath, deviceFilePath, appIdentifier) {
await this.uploadFilesCore([
{
appId: appIdentifier,
deviceId: this.device.deviceInfo.identifier,
files: [{ source: localFilePath, destination: deviceFilePath }],
},
]);
}
async deleteFile(deviceFilePath, appIdentifier) {
await this.$iosDeviceOperations.deleteFiles([
{
appId: appIdentifier,
destination: deviceFilePath,
deviceId: this.device.deviceInfo.identifier,
},
], (err) => {
this.$logger.trace(`Error while deleting file: ${deviceFilePath}: ${err.message} with code: ${err.code}`);
if (err.code !== IOSDeviceFileSystem.AFC_DELETE_FILE_NOT_FOUND_ERROR) {
this.$logger.warn(`Cannot delete file: ${deviceFilePath}. Reason: ${err.message}`);
}
});
}
async transferFiles(deviceAppData, localToDevicePaths) {
const filesToUpload = _.filter(localToDevicePaths, (l) => this.$fs.getFsStats(l.getLocalPath()).isFile());
const files = filesToUpload.map((l) => ({
source: l.getLocalPath(),
destination: l.getDevicePath(),
}));
await this.uploadFilesCore([
{
deviceId: this.device.deviceInfo.identifier,
appId: deviceAppData.appIdentifier,
files: files,
},
]);
return filesToUpload;
}
async transferDirectory(deviceAppData, localToDevicePaths, projectFilesPath) {
await this.transferFiles(deviceAppData, localToDevicePaths);
return localToDevicePaths;
}
async updateHashesOnDevice(hashes, appIdentifier) {
return;
}
async uploadFilesCore(filesToUpload) {
await this.$iosDeviceOperations.uploadFiles(filesToUpload, (err) => {
if (err.deviceId === this.device.deviceInfo.identifier) {
throw err;
}
});
}
}
exports.IOSDeviceFileSystem = IOSDeviceFileSystem;
IOSDeviceFileSystem.AFC_DELETE_FILE_NOT_FOUND_ERROR = 8;
//# sourceMappingURL=ios-device-file-system.js.map
;