Skip to content

Commit

Permalink
Add base structure
Browse files Browse the repository at this point in the history
  • Loading branch information
ixti committed Apr 23, 2012
1 parent 1e8c9ce commit b3cda86
Show file tree
Hide file tree
Showing 11 changed files with 278 additions and 0 deletions.
8 changes: 8 additions & 0 deletions .gitignore
@@ -0,0 +1,8 @@
*.log
*.swp

node_modules/
npm-debug.log

tmp/
doc/
5 changes: 5 additions & 0 deletions .jshintignore
@@ -0,0 +1,5 @@
.git/
doc/
node_modules/
tmp/
test/fixtures/
72 changes: 72 additions & 0 deletions .jshintrc
@@ -0,0 +1,72 @@
{
// Enforcing Options /////////////////////////////////////////////////////////

"bitwise" : true, // Prohibit bitwise operators (&, |, ^, etc.).
"curly" : true, // Require {} for every new block or scope.
"eqeqeq" : true, // Require triple equals i.e. `===`.
"forin" : false, // Tolerate `for in` loops without `hasOwnPrototype`.
"immed" : true, // Require immediate invocations to be wrapped in parens e.g. `( function(){}() );`
"latedef" : true, // Prohibit hariable use before definition.
"newcap" : true, // Require capitalization of all constructor functions e.g. `new F()`.
"noarg" : true, // Prohibit use of `arguments.caller` and `arguments.callee`.
"noempty" : true, // Prohibit use of empty blocks.
"nonew" : true, // Prohibit use of constructors for side-effects.
"plusplus" : false, // Prohibit use of `++` & `--`.
"regexp" : false, // Prohibit `.` and `[^...]` in regular expressions.
"undef" : true, // Require all non-global variables be declared before they are used.
"strict" : true, // Require `use strict` pragma in every file.
"trailing" : true, // Prohibit trailing whitespaces.

// Relaxing Options //////////////////////////////////////////////////////////

"asi" : false, // Tolerate Automatic Semicolon Insertion (no semicolons).
"boss" : false, // Tolerate assignments inside if, for & while. Usually conditions & loops are for comparison, not assignments.
"debug" : false, // Allow debugger statements e.g. browser breakpoints.
"eqnull" : false, // Tolerate use of `== null`.
"es5" : true, // Allow ECMAScript 5 syntax.
"esnext" : false, // Allow ES.next specific features such as const and let
"evil" : false, // Tolerate use of `eval`.
"expr" : false, // Tolerate `ExpressionStatement` as Programs.
"funcscope" : false, // Tolerate declaring variables inside of control structures while accessing them later
"globalstrict" : true, // Allow global "use strict" (also enables 'strict').
"iterator" : false, // Allow usage of __iterator__ property.
"lastsemic" : false, // Tolerate semicolon omited for the last statement.
"laxbreak" : false, // Tolerate unsafe line breaks e.g. `return [\n] x` without semicolons.
"laxcomma" : true, // This option suppresses warnings about comma-first coding style
"loopfunc" : false, // Allow functions to be defined within loops.
"multistr" : false, // Tolerate multi-line strings.
"onecase" : false, // Tolerate swithes with only one case.
"proto" : false, // Allow usage of __proto__ property.
"regexdash" : false, // Tolerate unescaped last dash i.e. `[-...]`.
"scripturl" : true, // Tolerate script-targeted URLs.
"smarttabs" : false, // Allow mixed tabs and spaces when the latter are used for alignmnent only.
"shadow" : false, // Allows re-define variables later in code e.g. `var x=1; x=2;`.
"sub" : true, // Tolerate all forms of subscript notation besides dot notation e.g. `dict['key']` instead of `dict.key`.
"supernew" : true, // Tolerate `new function () { ... };` and `new Object;`.

// Environments //////////////////////////////////////////////////////////////

"browser" : false, // Defines globals exposed by modern browsers
"couch" : false, // Defines globals exposed by CouchDB
"devel" : false, // Allow developments statements e.g. `console.log();`.
"dojo" : false, // Defines globals exposed by the Dojo Toolkit
"jquery" : false, // Defines globals exposed by the jQuery
"mootools" : false, // Defines globals exposed by the MooTools
"node" : true, // Defines globals exposed when running under Node.JS
"nonstandard" : false, // Defines non-standard but widely adopted globals such as escape and unescape
"prototypejs" : false, // Defines globals exposed by the Prototype
"rhino" : false, // Defines globals exposed when running under Rhino
"wsh" : false, // Defines globals exposed when running under WSH

// Legacy ////////////////////////////////////////////////////////////////////

"nomen" : false, // Prohibit use of initial or trailing underbars in names.
"onevar" : false, // Allow only one `var` statement per function.
"passfail" : false, // Stop on first error.
"white" : false, // Check against strict whitespace and indentation rules.

// Undocumented //////////////////////////////////////////////////////////////

"maxerr" : 100, // Maximum error before stopping.
"indent" : 2 // Specify indentation spacing
}
21 changes: 21 additions & 0 deletions LICENSE
@@ -0,0 +1,21 @@
(The MIT License)

Copyright (C) 2012 by Vitaly Puzrin

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
102 changes: 102 additions & 0 deletions Makefile
@@ -0,0 +1,102 @@
PATH := ./node_modules/.bin:${PATH}

NPM_PACKAGE := $(shell node -e 'process.stdout.write(require("./package.json").name)')
NPM_VERSION := $(shell node -e 'process.stdout.write(require("./package.json").version)')

TMP_PATH := /tmp/${NPM_PACKAGE}-$(shell date +%s)

REMOTE_NAME ?= origin
REMOTE_REPO ?= $(shell git config --get remote.${REMOTE_NAME}.url)

CURR_HEAD := $(firstword $(shell git show-ref --hash HEAD | cut --bytes=-6) master)
GITHUB_PROJ := nodeca/${NPM_PACKAGE}
SRC_URL_FMT := https://github.com/${GITHUB_PROJ}/blob/${CURR_HEAD}/{file}\#L{line}


help:
echo "make help - Print this help"
echo "make lint - Lint sources with JSHint"
echo "make test - Lint sources and run all tests"
echo "make doc - Build API docs"
echo "make dev-deps - Install developer dependencies"
echo "make gh-pages - Build and push API docs into gh-pages branch"
echo "make publish - Set new version tag and publish npm package"
echo "make todo - Find and list all TODOs"


lint:
if test ! `which jshint` ; then \
echo "You need 'jshint' installed in order to run lint." >&2 ; \
echo " $ make dev-deps" >&2 ; \
exit 128 ; \
fi
jshint . --show-non-errors


test: lint
@if test ! `which vows` ; then \
echo "You need 'vows' installed in order to run tests." >&2 ; \
echo " $ make dev-deps" >&2 ; \
exit 128 ; \
fi
NODE_ENV=test mocha


doc:
@if test ! `which ndoc` ; then \
echo "You need 'ndoc' installed in order to generate docs." >&2 ; \
echo " $ make dev-deps" >&2 ; \
exit 128 ; \
fi
rm -rf ./doc
ndoc --output ./doc --linkFormat "${SRC_URL_FMT}" ./lib


dev-deps:
@if test ! `which npm` ; then \
echo "You need 'npm' installed." >&2 ; \
echo " See: http://npmjs.org/" >&2 ; \
exit 128 ; \
fi
which jshint > /dev/null || npm install jshint
which ndoc > /dev/null || npm install ndoc
npm install


gh-pages:
@if test -z ${REMOTE_REPO} ; then \
echo 'Remote repo URL not found' >&2 ; \
exit 128 ; \
fi
$(MAKE) doc && \
cp -r ./doc ${TMP_PATH} && \
touch ${TMP_PATH}/.nojekyll
cd ${TMP_PATH} && \
git init && \
git add . && \
git commit -q -m 'Recreated docs'
cd ${TMP_PATH} && \
git remote add remote ${REMOTE_REPO} && \
git push --force remote +master:gh-pages
rm -rf ${TMP_PATH}


publish:
@if test 0 -ne `git status --porcelain | wc -l` ; then \
echo "Unclean working tree. Commit or stash changes first." >&2 ; \
exit 128 ; \
fi
@if test 0 -ne `git tag -l ${NPM_VERSION} | wc -l` ; then \
echo "Tag ${NPM_VERSION} exists. Update package.json" >&2 ; \
exit 128 ; \
fi
git tag ${NPM_VERSION} && git push origin ${NPM_VERSION}
npm publish https://github.com/${GITHUB_PROJ}/tarball/${NPM_VERSION}


todo:
grep 'TODO' -n -r ./lib 2>/dev/null || test true


.PHONY: publish lint test doc dev-deps gh-pages todo
.SILENT: help lint test doc todo
1 change: 1 addition & 0 deletions index.js
@@ -0,0 +1 @@
module.exports = require('./lib/mincer');
6 changes: 6 additions & 0 deletions lib/mincer.js
@@ -0,0 +1,6 @@
module.exports = {
VERSION: '0.0.0',

Environment: require('./mincer/environment'),
Manifest: require('./mincer/manifest')
};
12 changes: 12 additions & 0 deletions lib/mincer/asset.js
@@ -0,0 +1,12 @@
/**
* class Asset
**/


/**
* Asset#digest -> String
**/


/**
* Asset#
23 changes: 23 additions & 0 deletions lib/mincer/environment.js
@@ -0,0 +1,23 @@
/**
* class Environment
**/


/**
* new Environment(root)
**/


/**
* Environment#prependPath(path) -> Void
**/


/**
* Environment#appendPath(path) -> Void
**/


/**
* Environment#find(logicalPath) -> Asset
**/
3 changes: 3 additions & 0 deletions lib/mincer/manifest.js
@@ -0,0 +1,3 @@
/**
* class Manifest
**/
25 changes: 25 additions & 0 deletions package.json
@@ -0,0 +1,25 @@
{
"name" : "mincer",
"version" : "0.0.0",
"description" : "Web assets processor inspired by Sprockets.",
"keywords" : ["sprockets", "assets", "minify", "uglify", "bundle", "less.js", "stylus"],
"homepage" : "https://github.com/nodeca/hike-js",

"author" : "Aleksey V Zapparov <ixti@member.fsf.org> (http://ixti.net/)",

"bugs" : { "url": "https://github.com/nodeca/hike-js/issues" },
"license" : { "type": "MIT", "url": "https://github.com/nodeca/hike-js/blob/master/LICENSE" },
"repository" : { "type": "git", "url": "git://github.com/nodeca/hike-js.git" },

"main" : "./index.js",

"scripts" : {
"test": "make test"
},
"dependencies" : {
"hike": "git://github.com/nodeca/hike-js.git",
"underscore": "1.3.3"
},
"devDependencies" : { "mocha": "1.0.1" },
"engines" : { "node": ">= 0.6.0" }
}

0 comments on commit b3cda86

Please sign in to comment.