Skip to content

Commit

Permalink
Move CLI tools to bin folder and refactor to es6
Browse files Browse the repository at this point in the history
  • Loading branch information
oblador committed Jul 30, 2017
1 parent 6c7709b commit d40506f
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 39 deletions.
20 changes: 10 additions & 10 deletions generate-icon.js → bin/generate-icon.js
Original file line number Diff line number Diff line change
@@ -1,37 +1,37 @@
#!/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'
)
.demand(1)
.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')
.alias('o', 'output')
.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 {
Expand Down
36 changes: 19 additions & 17 deletions generate-material-icons.js → bin/generate-material-icons.js
Original file line number Diff line number Diff line change
@@ -1,46 +1,48 @@
#!/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')
.alias('o', 'output')
.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);
Expand Down
2 changes: 2 additions & 0 deletions lib/react-native.osx.js
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
/* eslint-disable import/no-unresolved */

export * from 'react-native-desktop';
24 changes: 12 additions & 12 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down

0 comments on commit d40506f

Please sign in to comment.