UNPKG

2.37 kBJavaScriptView Raw
1#!/usr/bin/env node
2
3/**
4 * Tmplify prototype.
5 */
6
7'use strict'
8
9process.chdir(`${__dirname}/..`)
10
11const path = require('path')
12const fs = require('fs')
13const { runTasks } = require('ape-tasking')
14const tmplconv = require('tmplconv')
15
16const scaffold = require('../lib')
17
18let demoPkgPath = require.resolve('apeman-demo-react/package.json')
19let demoPkg = require(demoPkgPath)
20let demo = path.dirname(demoPkgPath)
21
22runTasks('tmplify', [
23 () => tmplconv.tmplify(demo, 'asset/tmpl', {
24 clean: true,
25 mode: '444',
26 pattern: [
27 '+(bin|lib|test)/.*.bud',
28 '+(bin|lib|test)/.*.hbs',
29 'test/._test.js.bud',
30 'doc/demo/.*.*',
31 '**/*.*',
32 '.*'
33 ],
34 ignore: [
35 '.DS_Store',
36 '.svn',
37 '.npmignore',
38 '.gitignore',
39 'node_modules/**/*.*',
40 'node_modules/**/.*',
41 'doc/demo/demo.html',
42 'doc/demo/demo.js',
43 'ci/demo.js',
44 'lib/index.js',
45 'lib/*.js',
46 'README.md',
47 'LICENSE'
48 ],
49 data: {
50 'github_repository': 'apeman-demo-labo/apeman-demo-react',
51 'package_name': demoPkg.name,
52 'package_description': demoPkg.description,
53 'component_name': 'DemoComponent',
54 'author_name': demoPkg.author.name,
55 'author_email': demoPkg.author.email,
56 'author_url': demoPkg.author.url
57 },
58 prefix: scaffold.prefix,
59 suffix: scaffold.suffix
60 }),
61 () => tmplconv.tmplify(`${__dirname}/..`, 'asset/tmpl', {
62 pattern: [
63 '.gitignore',
64 '.npmignore'
65 ],
66 prefix: scaffold.prefix,
67 suffix: scaffold.suffix
68 }),
69 (callback) => {
70 let filename = require.resolve('../asset/tmpl/package.json.tmpl')
71 let str = fs.readFileSync(filename).toString()
72 let pkg = JSON.parse(str)
73 fs.chmodSync(filename, '644')
74 fs.writeFileSync(filename, JSON.stringify({
75 name: pkg.name,
76 version: '1.0.0',
77 description: pkg.description,
78 main: pkg.main,
79 scripts: pkg.scripts,
80 repository: pkg.repository.url.split(/\//g).slice(-1).join('/').replace(/\.git$/, ''),
81 keywords: pkg.keywords,
82 author: pkg.author,
83 license: pkg.license,
84 bugs: pkg.bugs,
85 homepage: pkg.homepage,
86 dependencies: pkg.dependencies,
87 devDependencies: pkg.devDependencies,
88 engines: pkg.engines
89 }, null, 2))
90 fs.chmodSync(filename, '444')
91 callback(null)
92 }
93], true)