├── .gitattributes ├── .travis.yml ├── .gitignore ├── .jshintrc ├── .editorconfig ├── .verb.md ├── LICENSE ├── README.md ├── package.json └── bin └── assemble.js /.gitattributes: -------------------------------------------------------------------------------- 1 | # Enforce Unix newlines 2 | * text eol=lf 3 | 4 | # binaries 5 | *.ai binary 6 | *.psd binary 7 | *.jpg binary 8 | *.gif binary 9 | *.png binary 10 | *.jpeg binary 11 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: false 2 | language: node_js 3 | node_js: 4 | - "0.10" 5 | - "0.12" 6 | - "0.13" 7 | - "iojs" 8 | matrix: 9 | fast_finish: true 10 | allow_failures: 11 | - node_js: "0.13" 12 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.DS_Store 2 | *.sublime-* 3 | _gh_pages 4 | bower_components 5 | node_modules 6 | npm-debug.log 7 | actual 8 | test/actual 9 | temp 10 | tmp 11 | TODO.md 12 | vendor 13 | .idea 14 | benchmark 15 | coverage 16 | -------------------------------------------------------------------------------- /.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "asi": false, 3 | "boss": true, 4 | "curly": true, 5 | "eqeqeq": true, 6 | "eqnull": true, 7 | "esnext": true, 8 | "immed": true, 9 | "latedef": false, 10 | "laxcomma": false, 11 | "mocha": true, 12 | "newcap": true, 13 | "noarg": true, 14 | "node": true, 15 | "sub": true, 16 | "undef": true, 17 | "unused": true 18 | } 19 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | end_of_line = lf 7 | charset = utf-8 8 | indent_size = 2 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | 12 | [*.md] 13 | trim_trailing_whitespace = false 14 | insert_final_newline = false 15 | 16 | [{,test/}{actual,fixtures}/**] 17 | trim_trailing_whitespace = false 18 | insert_final_newline = false 19 | 20 | [templates/**] 21 | trim_trailing_whitespace = false 22 | insert_final_newline = false 23 | -------------------------------------------------------------------------------- /.verb.md: -------------------------------------------------------------------------------- 1 | # {%= name %} {%= badge("fury") %} 2 | 3 | > {%= description %} 4 | 5 | **WIP** Not ready for use yet. 6 | 7 | ## Install 8 | {%= include("install-global") %} 9 | 10 | ## Usage 11 | 12 | ```sh 13 | $ assemble 14 | ``` 15 | 16 | ## Related projects 17 | {%= related(verb.related.list) %} 18 | 19 | ## Running tests 20 | {%= include("tests") %} 21 | 22 | ## Contributing 23 | {%= include("contributing") %} 24 | 25 | ## Author 26 | {%= include("author") %} 27 | 28 | ## License 29 | {%= copyright() %} 30 | {%= license() %} 31 | 32 | *** 33 | 34 | {%= include("footer") %} 35 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015, Jon Schlinkert. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # assemble-cli [![NPM version](https://badge.fury.io/js/assemble-cli.svg)](http://badge.fury.io/js/assemble-cli) 2 | 3 | > CLI for Assemble. 4 | 5 | **WIP** Not ready for use yet. 6 | 7 | ## Install 8 | 9 | Install globally with [npm](https://www.npmjs.com/) 10 | 11 | ```sh 12 | $ npm i -g assemble-cli 13 | ``` 14 | 15 | ## Usage 16 | 17 | ```sh 18 | $ assemble 19 | ``` 20 | 21 | ## Related projects 22 | 23 | * [template](https://github.com/jonschlinkert/template): Render templates using any engine. Supports, layouts, pages, partials and custom template types. Use template… [more](https://github.com/jonschlinkert/template) 24 | * [verb](https://github.com/assemble/verb): Documentation generator for GitHub projects. Extremely powerful, easy to use, can generate anything from API… [more](https://github.com/assemble/verb) 25 | 26 | ## Running tests 27 | 28 | Install dev dependencies: 29 | 30 | ```sh 31 | $ npm i -d && npm test 32 | ``` 33 | 34 | ## Contributing 35 | 36 | Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/assemble-cli/issues/new) 37 | 38 | ## Author 39 | 40 | **Jon Schlinkert** 41 | 42 | + [github/jonschlinkert](https://github.com/jonschlinkert) 43 | + [twitter/jonschlinkert](http://twitter.com/jonschlinkert) 44 | 45 | ## License 46 | 47 | Copyright © 2015 Jon Schlinkert 48 | Released under the MIT license. 49 | 50 | *** 51 | 52 | _This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on July 30, 2015._ -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "assemble-cli", 3 | "description": "CLI for Assemble.", 4 | "version": "0.1.0", 5 | "homepage": "https://github.com/jonschlinkert/assemble-cli", 6 | "author": "Jon Schlinkert (https://github.com/jonschlinkert)", 7 | "repository": "jonschlinkert/assemble-cli", 8 | "bugs": { 9 | "url": "https://github.com/jonschlinkert/assemble-cli/issues" 10 | }, 11 | "license": "MIT", 12 | "files": [ 13 | "index.js", 14 | "bin/" 15 | ], 16 | "bin": { 17 | "assemble": "./bin/assemble.js" 18 | }, 19 | "main": "./bin/assemble.js", 20 | "preferGlobal": true, 21 | "engine-strict": true, 22 | "engines": { 23 | "node": ">=0.10.0" 24 | }, 25 | "scripts": { 26 | "test": "mocha" 27 | }, 28 | "dependencies": { 29 | "glob": "^5.0.14", 30 | "inflection": "^1.7.1", 31 | "lazy-cache": "^0.1.0", 32 | "look-up": "^0.7.1", 33 | "minimist": "^1.1.2", 34 | "resolve-up": "^0.3.0" 35 | }, 36 | "devDependencies": { 37 | "mocha": "*", 38 | "should": "*" 39 | }, 40 | "keywords": [ 41 | "assemble", 42 | "assets", 43 | "build", 44 | "cli", 45 | "command", 46 | "command-line", 47 | "compile", 48 | "create", 49 | "engine", 50 | "generate", 51 | "interface", 52 | "line", 53 | "render", 54 | "site", 55 | "static", 56 | "template", 57 | "website" 58 | ], 59 | "verb": { 60 | "related": { 61 | "list": [ 62 | "template", 63 | "verb" 64 | ] 65 | } 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /bin/assemble.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | var fs = require('fs'); 4 | var path = require('path'); 5 | var glob = require('glob'); 6 | var inflect = require('inflection'); 7 | var lazy = require('lazy-cache')(require); 8 | var argv = require('minimist')(process.argv.slice(2)); 9 | var resolveup = lazy('resolve-up'); 10 | var lookup = lazy('look-up'); 11 | 12 | 13 | /** 14 | * Resolve cwd, and get package metadata from project 15 | */ 16 | 17 | var fp = lookup()('package.json', { cwd: argv.cwd || process.cwd() }); 18 | var pkg = tryRequire(fp); 19 | var cwd = path.dirname(fp); 20 | process.chdir(cwd); 21 | 22 | function scaffold(dir) { 23 | var base = glob.sync('*/scaffold{,s}/', {cwd: dir}); 24 | if (!base.length) { 25 | console.log('cannot find `scaffolds` directory.'); 26 | process.exit(1); 27 | } 28 | 29 | var files = glob.sync('**/*.hbs', {cwd: base[0]}); 30 | var cache = {}; 31 | files.forEach(function (fp) { 32 | var segs = fp.split(/[\\\/]/); 33 | var type = segs[0]; 34 | var name = segs[segs.length - 1]; 35 | name = name.slice(0, name.lastIndexOf('.')); 36 | type = inflect.singularize(type); 37 | cache[type] = cache[type] || {}; 38 | cache[type][name] = fp; 39 | }); 40 | 41 | var parts = argv.new.split(':'); 42 | var key = inflect.singularize(parts[0]); 43 | var filename = parts[1]; 44 | if (!filename) { 45 | console.error('Please specify the file to get.'); 46 | console.error('The sytax is:'); 47 | console.error(); 48 | console.error(' `assemble --new foo:bar`'); 49 | console.error(); 50 | } 51 | var filepath = path.resolve(cache[key][filename]); 52 | console.log(filepath); 53 | 54 | } 55 | 56 | if (argv.new) { 57 | scaffold(cwd); 58 | } else { 59 | runTasks(cwd) 60 | } 61 | 62 | function runTasks(cwd) { 63 | /** 64 | * Tasks to run 65 | */ 66 | 67 | var tasks = argv._; 68 | var toRun = tasks.length ? tasks : ['default']; 69 | 70 | /** 71 | * Find assemble... 72 | */ 73 | 74 | var assemble = pkg.name !== 'assemble' 75 | ? lookup()('node_modules/assemble/index.js', {cwd: cwd}) 76 | : cwd; 77 | 78 | var inst = require(assemble); 79 | 80 | /** 81 | * Find assemblefile... 82 | */ 83 | 84 | var assemblefile = lookup()('assemblefile.js', {cwd: cwd}); 85 | var tasks = {}; 86 | 87 | 88 | if (typeof assemblefile === 'string') { 89 | require(assemblefile); 90 | } 91 | 92 | process.nextTick(function () { 93 | inst.start.apply(inst, toRun); 94 | }); 95 | } 96 | 97 | 98 | function tryRequire(fp) { 99 | try { 100 | return require(path.resolve(fp)); 101 | } catch(err) {} 102 | return {}; 103 | } 104 | --------------------------------------------------------------------------------