commit
0a0c191523
@ -0,0 +1,3 @@ |
|||||||
|
wanted.all.ini |
||||||
|
wanted.none.ini |
||||||
|
wanted.ini |
@ -0,0 +1,3 @@ |
|||||||
|
[submodule "Fork-Awesome"] |
||||||
|
path = Fork-Awesome |
||||||
|
url = https://github.com/ForkAwesome/Fork-Awesome.git |
@ -0,0 +1 @@ |
|||||||
|
Subproject commit 285008117b87520930524b332dbbfad1cc26cc2c |
@ -0,0 +1,30 @@ |
|||||||
|
# Fork-Awesome customizer |
||||||
|
|
||||||
|
This is a little hack to let you generate custom Fork-Awesome builds with only a subset of icons. |
||||||
|
|
||||||
|
![screenshot](screenshot.png) |
||||||
|
|
||||||
|
## How to use |
||||||
|
|
||||||
|
1. Make sure you cloned this repository recursively, i.e. the `Fork-Awesome/` folder is not empty. |
||||||
|
- You can fix that by running `git submodule init` and `git submodule update` |
||||||
|
2. Run `./install.sh`. This should prepare the FA submodule for building the font. |
||||||
|
3. Verify that files `wanted.all.ini` and `wanted.none.ini` have been created. |
||||||
|
4. Copy either of the "wanted" template files to `wanted.ini`, and customize it as needed. |
||||||
|
Lines starting with `#` will be excluded. Use the [FA icons page](https://forkawesome.github.io/Fork-Awesome/icons/) for reference. |
||||||
|
5. Run `./build.sh` to build your customized font. |
||||||
|
6. Retrieve your output files from the `output/` directory. |
||||||
|
|
||||||
|
Note: The "woff" file may fail to build, resulting in the make target in `Fork-Awesome/src/icons` failing, in which case you get no files. |
||||||
|
A workaround is to comment out that line by prepending it with `#`, and trying to build again. |
||||||
|
|
||||||
|
```patch |
||||||
|
cp ${FA_FONTCUSTOM_OUTPUT_DIR}/forkawesome.svg ${FA_ROOT_FONTS_DIR}/forkawesome-webfont.svg |
||||||
|
cp ${FA_FONTCUSTOM_OUTPUT_DIR}/forkawesome.ttf ${FA_ROOT_FONTS_DIR}/forkawesome-webfont.ttf |
||||||
|
- cp ${FA_FONTCUSTOM_OUTPUT_DIR}/forkawesome.woff ${FA_ROOT_FONTS_DIR}/forkawesome-webfont.woff |
||||||
|
+ #cp ${FA_FONTCUSTOM_OUTPUT_DIR}/forkawesome.woff ${FA_ROOT_FONTS_DIR}/forkawesome-webfont.woff |
||||||
|
cp ${FA_FONTCUSTOM_OUTPUT_DIR}/forkawesome.woff2 ${FA_ROOT_FONTS_DIR}/forkawesome-webfont.woff2 |
||||||
|
``` |
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,31 @@ |
|||||||
|
#!/bin/bash |
||||||
|
|
||||||
|
if [ ! -f "./Fork-Awesome/.git" ]; then |
||||||
|
echo -e "\x1b[31;1mFA submodule is not initialized, exit...\x1b[m" |
||||||
|
exit |
||||||
|
fi |
||||||
|
|
||||||
|
if [ ! -f "./wanted.ini" ]; then |
||||||
|
echo -e "\x1b[31;1mMissing customization file './wanted.ini'!\x1b[m" |
||||||
|
exit |
||||||
|
fi |
||||||
|
|
||||||
|
if [ ! -d "./Fork-Awesome/.bundle" ]; then |
||||||
|
echo -e "\x1b[31;1mGems not installed in the FA submodule, cannot build. Did you run install.sh?\x1b[m" |
||||||
|
exit |
||||||
|
fi |
||||||
|
|
||||||
|
if [ ! -d "./Fork-Awesome/node_modules" ]; then |
||||||
|
echo -e "\x1b[31;1mNode modules not installed in the FA submodule, cannot build. Did you run install.sh?\x1b[m" |
||||||
|
exit |
||||||
|
fi |
||||||
|
|
||||||
|
bash ./refresh-templates.sh |
||||||
|
|
||||||
|
echo "=== Starting a build... ===" |
||||||
|
(cd patcher && node ./apply-filter.js) |
||||||
|
(cd "./Fork-Awesome/src/icons/" && make) |
||||||
|
|
||||||
|
cp ./Fork-Awesome/src/icons/forkawesome/* ./output |
||||||
|
|
||||||
|
echo "=== Your font is ready in the output/ directory ===" |
@ -0,0 +1,21 @@ |
|||||||
|
#!/bin/bash |
||||||
|
|
||||||
|
if [ ! -f "./Fork-Awesome/.git" ]; then |
||||||
|
echo -e "\x1b[31;1mFA submodule is not initialized, exit...\x1b[m" |
||||||
|
exit |
||||||
|
fi |
||||||
|
|
||||||
|
cd Fork-Awesome |
||||||
|
|
||||||
|
echo "=== Installing ruby dependencies ===" |
||||||
|
bundle install --path vendor/bundle |
||||||
|
|
||||||
|
echo |
||||||
|
echo "=== Installing NODE dependencies ===" |
||||||
|
npm install |
||||||
|
|
||||||
|
echo |
||||||
|
echo ">>> If no errors occured, FA should be ready to build." |
||||||
|
echo -e "\x1b[90m(npm complaining about vulnerabilities is probably okay)\x1b[m" |
||||||
|
|
||||||
|
bash ./refresh-templates.sh |
@ -0,0 +1,2 @@ |
|||||||
|
* |
||||||
|
!.gitignore |
@ -0,0 +1,83 @@ |
|||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
const fs = require('fs') |
||||||
|
|
||||||
|
|
||||||
|
function rmInDir(dirPath) { |
||||||
|
try { var files = fs.readdirSync(dirPath) } |
||||||
|
catch(e) { return } |
||||||
|
if (files.length > 0) { |
||||||
|
for (var i = 0; i < files.length; i++) { |
||||||
|
var filePath = dirPath + '/' + files[i] |
||||||
|
if (fs.statSync(filePath).isFile()) |
||||||
|
fs.unlinkSync(filePath) |
||||||
|
else |
||||||
|
rmDir(filePath) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
function cp(src, dest) { |
||||||
|
if (!fs.existsSync(src)) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
var data = fs.readFileSync(src, 'utf-8'); |
||||||
|
fs.writeFileSync(dest, data); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
let manifest = JSON.parse(fs.readFileSync('templates/.fontcustom-manifest.json', 'utf-8')) |
||||||
|
let desired = fs.readFileSync('../wanted.ini', 'utf-8').split('\n').filter((x) => x.length && x[0] !== '#') |
||||||
|
|
||||||
|
// This forces a rebuild
|
||||||
|
manifest.checksum.previous = 'asdf' |
||||||
|
|
||||||
|
console.log('Preparing fontcustom manifest...') |
||||||
|
console.log(`Including ${desired.length} icons`) |
||||||
|
|
||||||
|
const orig_glyphs = manifest.glyphs |
||||||
|
|
||||||
|
manifest.glyphs = Object.keys(orig_glyphs) |
||||||
|
.filter(key => desired.includes(key)) |
||||||
|
.reduce((obj, key) => { |
||||||
|
obj[key] = orig_glyphs[key] |
||||||
|
return obj |
||||||
|
}, {}) |
||||||
|
|
||||||
|
|
||||||
|
console.log('\x1b[32m[Writing]\x1b[m .fontcustom-manifest.json') |
||||||
|
fs.writeFileSync('../Fork-Awesome/src/icons/.fontcustom-manifest.json', JSON.stringify(manifest, null, 2)) |
||||||
|
|
||||||
|
console.log('Preparing icons.yml...') |
||||||
|
|
||||||
|
|
||||||
|
// this would be prettier with some yaml module, but to avoid installing anything...
|
||||||
|
|
||||||
|
let iconsy = fs.readFileSync('templates/icons.yml', 'utf-8') |
||||||
|
|
||||||
|
let pieces = iconsy.substring(iconsy.indexOf('\n')+1).split(' - name:') |
||||||
|
pieces.shift() // remove first
|
||||||
|
// now we have the entries, without leading ' - name'
|
||||||
|
|
||||||
|
let pattern = /id:\s+(\w+)\n/ |
||||||
|
|
||||||
|
pieces = pieces.filter((x) => { |
||||||
|
let ar = pattern.exec(x) |
||||||
|
return ar !== null && desired.indexOf(ar[1]) !== -1 |
||||||
|
}) |
||||||
|
|
||||||
|
let combined = 'icons:\n - name:' + pieces.join(' - name:') |
||||||
|
|
||||||
|
console.log('\x1b[32m[Writing]\x1b[m icons.yml') |
||||||
|
fs.writeFileSync('../Fork-Awesome/src/icons/icons.yml', combined) |
||||||
|
|
||||||
|
|
||||||
|
console.log('Deleting files in svg/ ...') |
||||||
|
|
||||||
|
rmInDir('../Fork-Awesome/src/icons/svg') |
||||||
|
|
||||||
|
console.log('Copying desired files from svg-all/ to svg/ ...') |
||||||
|
for (let a of desired) { |
||||||
|
cp(`./templates/svg/${a}.svg`, `../Fork-Awesome/src/icons/svg/${a}.svg`) |
||||||
|
} |
@ -0,0 +1,23 @@ |
|||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
const fs = require('fs') |
||||||
|
|
||||||
|
let manifest = JSON.parse(fs.readFileSync('./templates/.fontcustom-manifest.json', 'utf-8')) |
||||||
|
|
||||||
|
let all_enabled = [] |
||||||
|
let all_disabled = [] |
||||||
|
|
||||||
|
for (var key in manifest.glyphs){ |
||||||
|
if (manifest.glyphs.hasOwnProperty(key)) { |
||||||
|
all_enabled.push(key) |
||||||
|
all_disabled.push(`#${key}`) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
console.log(`Found ${all_enabled.length} icons in manifest, writing template files`) |
||||||
|
|
||||||
|
console.log(`\x1b[32m[Writing]\x1b[m wanted.all.ini`) |
||||||
|
fs.writeFileSync('../wanted.all.ini', all_enabled.join('\n') + '\n') |
||||||
|
|
||||||
|
console.log(`\x1b[32m[Writing]\x1b[m wanted.none.ini`) |
||||||
|
fs.writeFileSync('../wanted.none.ini', all_disabled.join('\n') + '\n') |
@ -0,0 +1,2 @@ |
|||||||
|
* |
||||||
|
!.gitignore |
@ -0,0 +1,15 @@ |
|||||||
|
#!/bin/bash |
||||||
|
|
||||||
|
if [ ! -f "./Fork-Awesome/.git" ]; then |
||||||
|
echo -e "\x1b[31;1mFA submodule is not initialized, exit...\x1b[m" |
||||||
|
exit |
||||||
|
fi |
||||||
|
|
||||||
|
echo "=== Refreshing templates for building a customized font ===" |
||||||
|
rm -rf "./patcher/templates/*" |
||||||
|
|
||||||
|
cp "./Fork-Awesome/src/icons/.fontcustom-manifest.json" "./patcher/templates" |
||||||
|
cp "./Fork-Awesome/src/icons/icons.yml" "./patcher/templates" |
||||||
|
cp -R "./Fork-Awesome/src/icons/svg" "./patcher/templates" |
||||||
|
|
||||||
|
(cd ./patcher && node ./refresh-wanted-templates.js) |
After Width: | Height: | Size: 35 KiB |
@ -0,0 +1,12 @@ |
|||||||
|
#!/bin/bash |
||||||
|
|
||||||
|
if [ ! -f "./Fork-Awesome/.git" ]; then |
||||||
|
echo -e "\x1b[31;1mFA submodule is not initialized, exit...\x1b[m" |
||||||
|
exit |
||||||
|
fi |
||||||
|
|
||||||
|
echo "=== Updating the Fork-Awesome submodule... ===" |
||||||
|
(cd Fork-Awesome && git fetch && git reset --hard origin/master) |
||||||
|
echo "=== Fork-Awesome updated ===" |
||||||
|
|
||||||
|
bash ./refresh-templates.sh |
@ -0,0 +1,2 @@ |
|||||||
|
star |
||||||
|
table |
Loading…
Reference in new issue