mirror of
https://github.com/scratchfoundation/scratch-l10n.git
synced 2025-06-12 13:20:32 -04:00
Push to transifex using new api
Remove bonus files
This commit is contained in:
parent
fd2223a446
commit
e1fda80b46
2 changed files with 87 additions and 35 deletions
|
@ -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};
|
||||||
|
|
|
@ -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();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue