translation-io-sync
Version:
This Typescript implementation acts as a `translation.io` client
54 lines (53 loc) • 2.32 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PoWriter = void 0;
const fs_1 = require("fs");
const uuid_1 = require("uuid");
const po_locator_1 = require("./po-locator");
class PoWriter {
static buildTemporaryWriter(poExtention) {
const temporaryFolder = `.${(0, uuid_1.v4)()}`;
(0, fs_1.mkdirSync)(temporaryFolder);
const temporaryConfiguration = {
poExtention: poExtention,
poDirectory: temporaryFolder
};
return new PoWriter(temporaryConfiguration);
}
static builDestinationWriter(configuration) {
return new PoWriter(configuration);
}
constructor(configuration) {
this.configuration = configuration;
this.locator = new po_locator_1.PoLocator(configuration);
}
write(translation) {
const destination = this.locator.findPathTo(translation.locale);
console.log(`Writing locale ${destination.locale} to ${destination.path}...`);
(0, fs_1.writeFileSync)(destination.path, translation.content);
return destination;
}
commitTo(destinationConfiguration, locales) {
const destinationLocator = new po_locator_1.PoLocator(destinationConfiguration);
locales.map(locale => [this.locator.findPathTo(locale), destinationLocator.findPathTo(locale)])
.forEach(sourceAndDestination => {
const source = sourceAndDestination[0];
const destination = sourceAndDestination[1];
console.log(`Copying temporary file for locale ${source.locale} located at ${source.path} to location: ${destination.path}...`);
(0, fs_1.copyFileSync)(source.path, destination.path);
});
console.log("All temporary files have been committed.");
}
clean(locales) {
console.log("Cleaning all temporary files");
locales.map(locale => this.locator.findPathTo(locale))
.filter(file => (0, fs_1.existsSync)(file.path))
.forEach(file => {
console.log(`Removing temporary locale ${file.locale} located at ${file.path}...`);
(0, fs_1.unlinkSync)(file.path);
});
(0, fs_1.rmdirSync)(this.configuration.poDirectory);
console.log("Cleaning completed.");
}
}
exports.PoWriter = PoWriter;