From d40506f4833d6d0c0f65dee3ec2a03fa02d7a891 Mon Sep 17 00:00:00 2001 From: Joel Arvidsson Date: Sun, 30 Jul 2017 17:36:59 +0200 Subject: [PATCH] Move CLI tools to bin folder and refactor to es6 --- generate-icon.js => bin/generate-icon.js | 20 +++++------ .../generate-material-icons.js | 36 ++++++++++--------- lib/react-native.osx.js | 2 ++ package.json | 24 ++++++------- 4 files changed, 43 insertions(+), 39 deletions(-) rename generate-icon.js => bin/generate-icon.js (67%) rename generate-material-icons.js => bin/generate-material-icons.js (57%) diff --git a/generate-icon.js b/bin/generate-icon.js similarity index 67% rename from generate-icon.js rename to bin/generate-icon.js index 36035b0..8f7c96c 100755 --- a/generate-icon.js +++ b/bin/generate-icon.js @@ -1,7 +1,11 @@ #!/usr/bin/env node -'use strict'; +/* eslint-disable no-console */ -var argv = require('yargs') +const _ = require('lodash'); +const fs = require('fs'); +const path = require('path'); +const generateIconSetFromCss = require('../lib/generate-icon-set-from-css'); +const argv = require('yargs') .usage( 'Usage: $0 [options] path/to/styles.css \nFor default template please provide --componentName and --fontFamily' ) @@ -9,7 +13,7 @@ var argv = require('yargs') .default('p', '.icon-') .describe('p', 'CSS selector prefix') .alias('p', 'prefix') - .default('t', __dirname + '/templates/bundled-icon-set.tpl') + .default('t', path.resolve(__dirname, '..', 'templates/bundled-icon-set.tpl')) .describe('t', 'Template in lodash format') .alias('t', 'template') .describe('o', 'Save output to file, defaults to STDOUT') @@ -17,21 +21,17 @@ var argv = require('yargs') .describe('g', 'Save glyphmap JSON to file') .alias('g', 'glyphmap').argv; -var _ = require('lodash'); -var fs = require('fs'); -var generateIconSetFromCss = require('./lib/generate-icon-set-from-css'); - -var template; +let template; if (argv.template) { template = fs.readFileSync(argv.template, { encoding: 'utf8' }); } -var data = _.omit( +const data = _.omit( argv, '_ $0 o output p prefix t template g glyphmap'.split(' ') ); -var content = generateIconSetFromCss(argv._, argv.prefix, template, data); +const content = generateIconSetFromCss(argv._, argv.prefix, template, data); if (argv.output) { fs.writeFileSync(argv.output, content); } else { diff --git a/generate-material-icons.js b/bin/generate-material-icons.js similarity index 57% rename from generate-material-icons.js rename to bin/generate-material-icons.js index 92f1db7..8234234 100755 --- a/generate-material-icons.js +++ b/bin/generate-material-icons.js @@ -1,12 +1,15 @@ #!/usr/bin/env node -'use strict'; +/* eslint-disable no-console */ -var argv = require('yargs') +const _ = require('lodash'); +const fs = require('fs'); +const path = require('path'); +const argv = require('yargs') .usage( 'Usage: $0 [options] path/to/codepoints \nFor default template please provide --componentName and --fontFamily' ) .demand(1) - .default('t', __dirname + '/templates/bundled-icon-set.tpl') + .default('t', path.resolve(__dirname, '..', 'templates/bundled-icon-set.tpl')) .describe('t', 'Template in lodash format') .alias('t', 'template') .describe('o', 'Save output to file, defaults to STDOUT') @@ -14,33 +17,32 @@ var argv = require('yargs') .describe('g', 'Save glyphmap JSON to file') .alias('g', 'glyphmap').argv; -var _ = require('lodash'); -var fs = require('fs'); - -var extractGlyphMapFromCodepoints = function(fileName) { - var codepoints = fs.readFileSync(fileName, { encoding: 'utf8' }).split('\n'); - var glyphMap = {}; - codepoints.forEach(function(point) { - var parts = point.split(' '); +function extractGlyphMapFromCodepoints(fileName) { + const codepoints = fs + .readFileSync(fileName, { encoding: 'utf8' }) + .split('\n'); + const glyphMap = {}; + codepoints.forEach(point => { + const parts = point.split(' '); if (parts.length === 2) { glyphMap[parts[0].replace(/_/g, '-')] = parseInt(parts[1], 16); } }); return glyphMap; -}; +} -var template; +let template; if (argv.template) { template = fs.readFileSync(argv.template, { encoding: 'utf8' }); } -var data = _.omit(argv, '_ $0 o output t template g glyphmap'.split(' ')); -var glyphMap = extractGlyphMapFromCodepoints(argv._[0]); +let data = _.omit(argv, '_ $0 o output t template g glyphmap'.split(' ')); +const glyphMap = extractGlyphMapFromCodepoints(argv._[0]); -var content = JSON.stringify(glyphMap, null, ' '); +let content = JSON.stringify(glyphMap, null, ' '); if (template) { - var compiled = _.template(template); + const compiled = _.template(template); data = data || {}; data.glyphMap = content; content = compiled(data); diff --git a/lib/react-native.osx.js b/lib/react-native.osx.js index 821703a..36ef6fc 100644 --- a/lib/react-native.osx.js +++ b/lib/react-native.osx.js @@ -1 +1,3 @@ +/* eslint-disable import/no-unresolved */ + export * from 'react-native-desktop'; diff --git a/package.json b/package.json index f318c1a..2a3be46 100644 --- a/package.json +++ b/package.json @@ -4,21 +4,21 @@ "description": "Customizable Icons for React Native with support for NavBar/TabBar/ToolbarAndroid, image source and full styling.", "main": "index.js", "bin": { - "generate-icon": "./generate-icon.js" + "generate-icon": "./bin/generate-icon.js" }, "scripts": { - "test": "eslint index.js lib/{create-icon-set-from-fontello,create-icon-set-from-icomoon,create-icon-set,icon-button,tab-bar-item-ios,toolbar-android}.js", + "test": "eslint index.js {bin,lib}/*.js", "build": "rm -rf {Fonts,Entypo.js,EvilIcons.js,FontAwesome.js,Foundation.js,Ionicons.js,MaterialIcons.js,MaterialCommunityIcons.js,Octicons.js,Zocial.js,SimpleLineIcons.js,glyphmaps} && mkdir Fonts glyphmaps && npm run build-entypo && npm run build-evilicons && npm run build-fontawesome && npm run build-foundation && npm run build-ionicons && npm run build-materialicons && npm run build-materialcommunityicons && npm run build-octicons && npm run build-zocial && npm run build-simplelineicons", - "build-entypo": "mkdir -p tmp/svg && curl https://dl.dropboxusercontent.com/u/4339492/entypo.zip > tmp/entypo.zip && unzip -j tmp/entypo.zip *.svg -x __MACOSX/* -d tmp/svg && fontcustom compile tmp/svg -o tmp -n Entypo -t css -h && node generate-icon tmp/Entypo.css --componentName=Entypo --fontFamily=Entypo --template=templates/separated-icon-set.tpl --glyphmap=glyphmaps/Entypo.json > Entypo.js && cp tmp/Entypo.ttf Fonts && rm -rf {tmp,.fontcustom-manifest.json}", - "build-evilicons": "fontcustom compile node_modules/evil-icons/assets/icons -o tmp -n EvilIcons -t css -h && node generate-icon tmp/EvilIcons.css --prefix=.icon-ei- --componentName=EvilIcons --template=templates/separated-icon-set.tpl --glyphmap=glyphmaps/EvilIcons.json --fontFamily=EvilIcons > EvilIcons.js && cp tmp/EvilIcons.ttf Fonts && rm -rf {tmp,.fontcustom-manifest.json}", - "build-fontawesome": "node generate-icon node_modules/font-awesome/css/font-awesome.css --prefix=.fa- --componentName=FontAwesome --fontFamily=FontAwesome --template=templates/separated-icon-set.tpl --glyphmap=glyphmaps/FontAwesome.json > FontAwesome.js && cp node_modules/font-awesome/fonts/fontawesome-webfont.ttf Fonts/FontAwesome.ttf", - "build-foundation": "node generate-icon bower_components/foundation-icon-fonts/foundation-icons.css --prefix=.fi- --componentName=Foundation --fontFamily=fontcustom --template=templates/separated-icon-set.tpl --glyphmap=glyphmaps/Foundation.json > Foundation.js && cp bower_components/foundation-icon-fonts/foundation-icons.ttf Fonts/Foundation.ttf", - "build-ionicons": "node generate-icon node_modules/ionicons/dist/css/ionicons.css --prefix=.ion- --componentName=Ionicons --fontFamily=Ionicons --template=templates/separated-icon-set.tpl --glyphmap=glyphmaps/Ionicons.json > Ionicons.js && cp node_modules/ionicons/dist/fonts/ionicons.ttf Fonts/Ionicons.ttf", - "build-materialicons": "node generate-material-icons node_modules/material-design-icons/iconfont/codepoints --componentName=MaterialIcons --fontFamily='Material Icons' --template=templates/separated-icon-set.tpl --glyphmap=glyphmaps/MaterialIcons.json > MaterialIcons.js && cp node_modules/material-design-icons/iconfont/MaterialIcons-Regular.ttf Fonts/MaterialIcons.ttf", - "build-materialcommunityicons": "node generate-icon node_modules/mdi/css/materialdesignicons.css --prefix=.mdi- --componentName=MaterialCommunityIcons --fontFamily='Material Design Icons' --template=templates/separated-icon-set.tpl --glyphmap=glyphmaps/MaterialCommunityIcons.json > MaterialCommunityIcons.js && cp node_modules/mdi/fonts/materialdesignicons-webfont.ttf Fonts/MaterialCommunityIcons.ttf", - "build-octicons": "fontcustom compile node_modules/octicons/build/svg -o tmp -n Octicons -t css -h && node generate-icon tmp/Octicons.css --prefix=.icon- --componentName=Octicons --template=templates/separated-icon-set.tpl --glyphmap=glyphmaps/Octicons.json --fontFamily=Octicons > Octicons.js && cp tmp/Octicons.ttf Fonts && rm -rf {tmp,.fontcustom-manifest.json}", - "build-zocial": "node generate-icon bower_components/css-social-buttons/css/zocial.css --prefix=.zocial. --componentName=Zocial --fontFamily=zocial --template=templates/separated-icon-set.tpl --glyphmap=glyphmaps/Zocial.json > Zocial.js && cp bower_components/css-social-buttons/css/zocial.ttf Fonts/Zocial.ttf", - "build-simplelineicons": "node generate-icon bower_components/simple-line-icons/css/simple-line-icons.css --prefix=.icon- --componentName=SimpleLineIcons --fontFamily=simple-line-icons --template=templates/separated-icon-set.tpl --glyphmap=glyphmaps/SimpleLineIcons.json > SimpleLineIcons.js && cp bower_components/simple-line-icons/fonts/Simple-Line-Icons.ttf Fonts/SimpleLineIcons.ttf" + "build-entypo": "mkdir -p tmp/svg && curl https://dl.dropboxusercontent.com/u/4339492/entypo.zip > tmp/entypo.zip && unzip -j tmp/entypo.zip *.svg -x __MACOSX/* -d tmp/svg && fontcustom compile tmp/svg -o tmp -n Entypo -t css -h && node bin/generate-icon tmp/Entypo.css --componentName=Entypo --fontFamily=Entypo --template=templates/separated-icon-set.tpl --glyphmap=glyphmaps/Entypo.json > Entypo.js && cp tmp/Entypo.ttf Fonts && rm -rf {tmp,.fontcustom-manifest.json}", + "build-evilicons": "fontcustom compile node_modules/evil-icons/assets/icons -o tmp -n EvilIcons -t css -h && node bin/generate-icon tmp/EvilIcons.css --prefix=.icon-ei- --componentName=EvilIcons --template=templates/separated-icon-set.tpl --glyphmap=glyphmaps/EvilIcons.json --fontFamily=EvilIcons > EvilIcons.js && cp tmp/EvilIcons.ttf Fonts && rm -rf {tmp,.fontcustom-manifest.json}", + "build-fontawesome": "node bin/generate-icon node_modules/font-awesome/css/font-awesome.css --prefix=.fa- --componentName=FontAwesome --fontFamily=FontAwesome --template=templates/separated-icon-set.tpl --glyphmap=glyphmaps/FontAwesome.json > FontAwesome.js && cp node_modules/font-awesome/fonts/fontawesome-webfont.ttf Fonts/FontAwesome.ttf", + "build-foundation": "node bin/generate-icon bower_components/foundation-icon-fonts/foundation-icons.css --prefix=.fi- --componentName=Foundation --fontFamily=fontcustom --template=templates/separated-icon-set.tpl --glyphmap=glyphmaps/Foundation.json > Foundation.js && cp bower_components/foundation-icon-fonts/foundation-icons.ttf Fonts/Foundation.ttf", + "build-ionicons": "node bin/generate-icon node_modules/ionicons/dist/css/ionicons.css --prefix=.ion- --componentName=Ionicons --fontFamily=Ionicons --template=templates/separated-icon-set.tpl --glyphmap=glyphmaps/Ionicons.json > Ionicons.js && cp node_modules/ionicons/dist/fonts/ionicons.ttf Fonts/Ionicons.ttf", + "build-materialicons": "node bin/generate-material-icons node_modules/material-design-icons/iconfont/codepoints --componentName=MaterialIcons --fontFamily='Material Icons' --template=templates/separated-icon-set.tpl --glyphmap=glyphmaps/MaterialIcons.json > MaterialIcons.js && cp node_modules/material-design-icons/iconfont/MaterialIcons-Regular.ttf Fonts/MaterialIcons.ttf", + "build-materialcommunityicons": "node bin/generate-icon node_modules/mdi/css/materialdesignicons.css --prefix=.mdi- --componentName=MaterialCommunityIcons --fontFamily='Material Design Icons' --template=templates/separated-icon-set.tpl --glyphmap=glyphmaps/MaterialCommunityIcons.json > MaterialCommunityIcons.js && cp node_modules/mdi/fonts/materialdesignicons-webfont.ttf Fonts/MaterialCommunityIcons.ttf", + "build-octicons": "fontcustom compile node_modules/octicons/build/svg -o tmp -n Octicons -t css -h && node bin/generate-icon tmp/Octicons.css --prefix=.icon- --componentName=Octicons --template=templates/separated-icon-set.tpl --glyphmap=glyphmaps/Octicons.json --fontFamily=Octicons > Octicons.js && cp tmp/Octicons.ttf Fonts && rm -rf {tmp,.fontcustom-manifest.json}", + "build-zocial": "node bin/generate-icon bower_components/css-social-buttons/css/zocial.css --prefix=.zocial. --componentName=Zocial --fontFamily=zocial --template=templates/separated-icon-set.tpl --glyphmap=glyphmaps/Zocial.json > Zocial.js && cp bower_components/css-social-buttons/css/zocial.ttf Fonts/Zocial.ttf", + "build-simplelineicons": "node bin/generate-icon bower_components/simple-line-icons/css/simple-line-icons.css --prefix=.icon- --componentName=SimpleLineIcons --fontFamily=simple-line-icons --template=templates/separated-icon-set.tpl --glyphmap=glyphmaps/SimpleLineIcons.json > SimpleLineIcons.js && cp bower_components/simple-line-icons/fonts/Simple-Line-Icons.ttf Fonts/SimpleLineIcons.ttf" }, "keywords": [ "react-native",