diff --git a/.gitignore b/.gitignore index a8f83cf..d568e42 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,7 @@ npm-debug.log dump.rdb bundle.js +lib build dist coverage diff --git a/bin/cli b/bin/cli new file mode 100755 index 0000000..5cc6bb7 --- /dev/null +++ b/bin/cli @@ -0,0 +1,3 @@ +#!/usr/bin/env node + +require('../lib/cli.js').run(); diff --git a/package.json b/package.json index 29260c1..d7dacf7 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,10 @@ { "name": "ast-i18n", "version": "1.0.0", - "main": "index.js", "author": "Sibelius Seraphini (https://github.com/sibelius)", - "license": "MIT", + "bin": { + "ast-i18n": "./bin/cli" + }, "dependencies": { "@types/prettier": "^1.16.0", "ast-types": "^0.12.2", @@ -50,10 +51,15 @@ "jest": "^24.1.0", "jscodeshift": "^0.6.3" }, + "license": "MIT", + "main": "index.js", "scripts": { "b": "babel-node --extensions \".es6,.js,.es,.jsx,.mjs,.ts,.tsx\"", - "start": "yarn b src/index.ts", + "build": "rm -rf lib/* && babel src --extensions \".es6,.js,.es,.jsx,.mjs,.ts,.tsx\" --ignore __test__,__testfixtures__,*.spec.ts --out-dir lib", "fixtures": "yarn start --src=fixtures", - "test": "jest" + "prepublish": "npm run build", + "start": "yarn b src/index.ts", + "test": "jest", + "watch": "babel --extensions \".es6,.js,.es,.jsx,.mjs,.ts,.tsx\" -w -d ./lib ./src" } } diff --git a/src/cli.ts b/src/cli.ts new file mode 100644 index 0000000..bba830e --- /dev/null +++ b/src/cli.ts @@ -0,0 +1,31 @@ +import yargs from 'yargs'; +import shell from 'shelljs'; + +import { generateResources } from './generateResources'; + +type Argv = { + src: string, + keyMaxLength: number, +} + +export const run = (argv: Argv) => { + argv = yargs(argv || process.argv.slice(2)) + .usage( + 'Extract all string inside JSXElement' + ) + .default('src', process.cwd()) + .describe( + 'src', + 'The source to collect strings' + ) + .default('keyMaxLength', 40) + .describe( + 'src', + 'The source to collect strings' + ) + .argv; + + const jsFiles = shell.find(argv.src).filter(path => /\.(js|ts|tsx)$/.test(path)); + + generateResources(jsFiles, argv.keyMaxLength); +}; diff --git a/src/generateResources.ts b/src/generateResources.ts index 5b68af7..d6cce8b 100644 --- a/src/generateResources.ts +++ b/src/generateResources.ts @@ -64,5 +64,8 @@ export const generateResources = (files: string[], keyMaxLength: number = 40) => fs.writeFileSync('resource.tsx', resource(i18nMap)); + // tslint:disable-next-line + console.log('generate resource file: resource.tsx'); + return i18nMap; };