Meriadec Pillet
7 years ago
committed by
GitHub
4 changed files with 69 additions and 79 deletions
@ -1,3 +1,7 @@ |
|||||
|
// This is a work in progress
|
||||
|
// The goal is to provide a cli which allow interact
|
||||
|
// with device & libcore for faster iterations
|
||||
|
|
||||
require('babel-polyfill') |
require('babel-polyfill') |
||||
require('babel-register') |
require('babel-register') |
||||
|
|
@ -1,8 +1,65 @@ |
|||||
#/bin/bash |
#/bin/bash |
||||
|
|
||||
flow-typed install -s --overwrite |
function MAIN { |
||||
rm flow-typed/npm/{react-i18next_v7.x.x.js,styled-components_v3.x.x.js,redux_*} |
REBUILD_ELECTRON_NATIVE_DEPS |
||||
|
INSTALL_FLOW_TYPED |
||||
|
} |
||||
|
|
||||
if [ "$SKIP_REBUILD" != "1" ]; then |
function GET_HASH_PATH { |
||||
electron-builder install-app-deps |
HASH_NAME=$1 |
||||
fi |
echo "./node_modules/.cache/LEDGER_HASH_$HASH_NAME.hash" |
||||
|
} |
||||
|
|
||||
|
function GET_HASH { |
||||
|
HASH_NAME=$1 |
||||
|
HASH_PATH=`GET_HASH_PATH $HASH_NAME` |
||||
|
if [ ! -e "$HASH_PATH" ]; then |
||||
|
echo '' |
||||
|
else |
||||
|
HASH_CONTENT=`cat "$HASH_PATH"` |
||||
|
echo $HASH_CONTENT |
||||
|
fi |
||||
|
} |
||||
|
|
||||
|
function SET_HASH { |
||||
|
HASH_NAME=$1 |
||||
|
HASH_CONTENT=$2 |
||||
|
echo "setting hash $HASH_NAME to $HASH_CONTENT" |
||||
|
HASH_PATH=`GET_HASH_PATH $HASH_NAME` |
||||
|
mkdir -p ./node_modules/.cache |
||||
|
echo $HASH_CONTENT > $HASH_PATH |
||||
|
} |
||||
|
|
||||
|
function INSTALL_FLOW_TYPED { |
||||
|
LATEST_FLOW_TYPED_COMMIT_HASH=`curl --silent --header "Accept: application/vnd.github.VERSION.sha" https://api.github.com/repos/flowtype/flow-typed/commits/master` |
||||
|
CURRENT_FLOW_TYPED_HASH=`GET_HASH 'flow-typed'` |
||||
|
if [ "$LATEST_FLOW_TYPED_COMMIT_HASH" == "$CURRENT_FLOW_TYPED_HASH" ]; then |
||||
|
echo "> Flow-typed definitions are up to date. Skipping" |
||||
|
else |
||||
|
echo "> Installing flow-typed defs" |
||||
|
flow-typed install -s --overwrite |
||||
|
echo "> Removing broken flow definitions" |
||||
|
rm flow-typed/npm/{react-i18next_v7.x.x.js,styled-components_v3.x.x.js,redux_*} |
||||
|
SET_HASH 'flow-typed' $LATEST_FLOW_TYPED_COMMIT_HASH |
||||
|
fi |
||||
|
} |
||||
|
|
||||
|
function REBUILD_ELECTRON_NATIVE_DEPS { |
||||
|
# for strange/fancy os-es |
||||
|
if [[ `uname` == 'Darwin' ]]; then |
||||
|
PACKAGE_JSON_HASH=`md5 package.json | cut -d ' ' -f 1` |
||||
|
else |
||||
|
# for normal os-es |
||||
|
PACKAGE_JSON_HASH=`md5sum package.json | cut -d ' ' -f 1` |
||||
|
fi |
||||
|
CACHED_PACKAGE_JSON_HASH=`GET_HASH 'package.json'` |
||||
|
if [ "$CACHED_PACKAGE_JSON_HASH" == "$PACKAGE_JSON_HASH" ]; then |
||||
|
echo "> Electron native deps are up to date. Skipping" |
||||
|
else |
||||
|
echo "> Installing electron native deps" |
||||
|
electron-builder install-app-deps |
||||
|
SET_HASH 'package.json' $PACKAGE_JSON_HASH |
||||
|
fi |
||||
|
} |
||||
|
|
||||
|
MAIN |
||||
|
@ -1,71 +0,0 @@ |
|||||
#!/usr/bin/env node
|
|
||||
|
|
||||
/* eslint-disable no-console */ |
|
||||
/* eslint-disable no-use-before-define */ |
|
||||
|
|
||||
require('dotenv').config() |
|
||||
|
|
||||
const path = require('path') |
|
||||
const fs = require('fs') |
|
||||
const axios = require('axios') |
|
||||
const querystring = require('querystring') |
|
||||
const forEach = require('lodash/forEach') |
|
||||
const objectPath = require('object-path') |
|
||||
const yaml = require('js-yaml') |
|
||||
const chalk = require('chalk') |
|
||||
|
|
||||
const { LOKALISE_TOKEN, LOKALISE_PROJECT } = process.env |
|
||||
const BASE = 'https://api.lokalise.co/api' |
|
||||
|
|
||||
const stats = { |
|
||||
nb: 0, |
|
||||
} |
|
||||
|
|
||||
main() |
|
||||
|
|
||||
async function main() { |
|
||||
try { |
|
||||
console.log(`${chalk.blue('[>]')} ${chalk.dim('Fetching translations...')}`) |
|
||||
const url = `${BASE}/string/list` |
|
||||
const { data } = await axios.post( |
|
||||
url, |
|
||||
querystring.stringify({ |
|
||||
api_token: LOKALISE_TOKEN, |
|
||||
id: LOKALISE_PROJECT, |
|
||||
}), |
|
||||
) |
|
||||
if (data.response.status === 'error') { |
|
||||
throw new Error(JSON.stringify(data.response)) |
|
||||
} |
|
||||
const { strings } = data |
|
||||
forEach(strings, syncLanguage) |
|
||||
console.log( |
|
||||
`${chalk.blue('[>]')} ${chalk.dim('Successfully imported')} ${stats.nb} ${chalk.dim( |
|
||||
'translations', |
|
||||
)}`,
|
|
||||
) |
|
||||
} catch (err) { |
|
||||
console.log(err) |
|
||||
console.log(`${chalk.red('[x] Error in the process')}`) |
|
||||
process.exit(1) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
function syncLanguage(translations, language) { |
|
||||
const folderPath = getLanguageFolderPath(language) |
|
||||
const filePath = path.resolve(folderPath, 'translation.yml') |
|
||||
if (!fs.existsSync(folderPath)) { |
|
||||
fs.mkdirSync(folderPath) |
|
||||
} |
|
||||
const obj = translations.reduce((acc, cur) => { |
|
||||
objectPath.set(acc, cur.key, cur.translation) |
|
||||
console.log(`${chalk.green('[✓]')} ${language} ${chalk.dim(cur.key)}`) |
|
||||
++stats.nb |
|
||||
return acc |
|
||||
}, {}) |
|
||||
fs.writeFileSync(filePath, yaml.dump(obj)) |
|
||||
} |
|
||||
|
|
||||
function getLanguageFolderPath(language) { |
|
||||
return path.resolve(__dirname, `../static/i18n/${language}`) |
|
||||
} |
|
Loading…
Reference in new issue