Push to transifex using new api

Remove bonus files
This commit is contained in:
seotts 2022-03-16 14:30:24 -04:00 committed by Cori Hudson
parent fd2223a446
commit e1fda80b46
2 changed files with 87 additions and 35 deletions

View file

@ -104,4 +104,61 @@ const txResources = async function (project) {
return slugs; return slugs;
}; };
module.exports = {txPull, txResources}; /**
* Uploads English source strings to a resource in transifex
* @param {string} project - project slug (for example, "scratch-editor")
* @param {string} resource - resource slug (for example, "blocks")
* @param {object} sourceStrings - json of source strings
*/
const txPush = async function (project, resource, sourceStrings) {
const resourceObj = {
data: {
id: `o:${ORG_NAME}:p:${project}:r:${resource}`,
type: 'resources'
}
};
await transifexApi.ResourceStringsAsyncUpload.upload({
resource: resourceObj,
content: JSON.stringify(sourceStrings)
});
};
/**
* Creates a new resource, and then uploads source strings to it if they are provided
* @param {*} project - project slug (for example, "scratch-editor")
* @param {*} param1
* - slug - resource slug
* - name - resource name
* - i18nType - i18n format id
* - sourceStrings - json object of source strings
*/
const txCreateResource = async function (project, {slug, name, i18nType, sourceStrings}) {
const i18nFormat = {
data: {
id: i18nType || 'KEYVALUEJSON',
type: 'i18n_formats'
}
};
const projectObj = {
data: {
id: `o:${ORG_NAME}:p:${project}`,
type: 'projects'
}
};
await transifexApi.Resource.create({
attributes: {slug: slug, name: name},
relationships: {
i18n_format: i18nFormat,
project: projectObj
}
});
if (sourceStrings) {
await txPush(project, slug, sourceStrings);
}
};
module.exports = {txPull, txPush, txResources, txCreateResource};

View file

@ -10,7 +10,8 @@
const fs = require('fs'); const fs = require('fs');
const path = require('path'); const path = require('path');
const transifex = require('transifex'); const txPush = require('../lib/transifex.js').txPush;
const txCreateResource = require('../lib/transifex.js').txCreateResource;
const args = process.argv.slice(2); const args = process.argv.slice(2);
@ -33,10 +34,6 @@ if (args.length < 3 || !process.env.TX_TOKEN) {
// Globals // Globals
const PROJECT = args[0]; const PROJECT = args[0];
const RESOURCE = args[1]; const RESOURCE = args[1];
const TX = new transifex({
project_slug: PROJECT,
credential: 'api:' + process.env.TX_TOKEN
});
let en = fs.readFileSync(path.resolve(args[2])); let en = fs.readFileSync(path.resolve(args[2]));
en = JSON.parse(en); en = JSON.parse(en);
@ -76,8 +73,11 @@ const getResourceType = (project, resource) => {
}; };
// update Transifex with English source // update Transifex with English source
TX.uploadSourceLanguageMethod(PROJECT, RESOURCE, {content: JSON.stringify(en)}, (err) => { const pushSource = async function () {
if (err && err.response.statusCode !== 404) { try {
await txPush(PROJECT, RESOURCE, en);
} catch (err) {
if (err.statusCode !== 404) {
process.stdout.write(`Transifex Error: ${err.message}\n`); process.stdout.write(`Transifex Error: ${err.message}\n`);
process.stdout.write( process.stdout.write(
`Transifex Error ${err.response.statusCode.toString()}: ${err.response.body}\n`); `Transifex Error ${err.response.statusCode.toString()}: ${err.response.body}\n`);
@ -85,24 +85,19 @@ TX.uploadSourceLanguageMethod(PROJECT, RESOURCE, {content: JSON.stringify(en)},
return; return;
} }
// file not found - create it, but also give message // file not found - create it, but also give message
if (err && err.response.statusCode === 404) { if (err.statusCode === 404) {
process.stdout.write(`Transifex Resource not found, creating: ${RESOURCE}\n`); process.stdout.write(`Transifex Resource not found, creating: ${RESOURCE}\n`);
const resourceData = { const resourceData = {
slug: RESOURCE, slug: RESOURCE,
name: RESOURCE, name: RESOURCE,
priority: 0, // default to normal priority priority: 0, // default to normal priority
i18n_type: getResourceType(PROJECT, RESOURCE), i18nType: getResourceType(PROJECT, RESOURCE),
content: JSON.stringify(en) content: en
}; };
TX.resourceCreateMethod(PROJECT, resourceData, (err1) => { await txCreateResource(PROJECT, resourceData);
if (err1) {
process.stdout.write(`Transifex Error: ${err1.message}\n`);
process.stdout.write(
`Transifex Error ${err1.response.statusCode.toString()}: ${err1.response.body}\n`);
process.exitCode = 1;
return;
}
});
} }
process.exitCode = 0; process.exitCode = 0;
}); }
};
pushSource();