1.4.1 • Published 8 years ago

nano-sched v1.4.1

Weekly downloads
2
License
MIT
Repository
github
Last release
8 years ago

Gitter NPM version Build status Test coverage Dependency Status License Downloads

nano-sched

Flexible anything processing scheduler

Usage

var Mill = require('../'),
    fs = require('nano-fs'),
    Path = require('path'),
    Promise = require('nano-promise');

var mill = Mill({
	plugins_folder: './plugins',
	sources_folder: './src',
	dist_folder: './dist',
	dumps_folder: './log',
	rules: {
		'js': [ /^.*\.js$/, ' > file.load, upcase, file.save > ' ]
	}
});


mill.install('read-plugins', function readPlugins(log, opts) {
	return fs.readdir(opts.plugins_folder || './plugins')
		.then(function (list) {
			return Promise.all(list
				.map(function (name) {
					if (!/^[^.].*\.js$/.test(name))
						return;
					return fs.readFile(Path.join(opts.plugins_folder, name), 'utf8')
						.then(function (text) {
							mill.install(name.replace(/([^/]*)\.js$/,'$1'), text);
						});
				}));
	});
});

mill.install('read-tree', function readtree(log, opts) {
	return fs.readTree(opts.src_folder || './src')
		.then(function (list) {
			opts.files = list;
		});
});

mill.install('files', function (log, opts) {
	var sched = mill.sched(' rules'),
	    rules = opts.rules,
	    files = opts.files;

	for (var id in rules) {
		var rule = rules[id],
		    re = /./;

		if (rule[0] instanceof RegExp)
			re = rule.splice(0,1)[0];

		files.forEach(function (name) {
			if (!re.test(name))
				return;
			var job = sched.job(name, {
				opts: opts,
				name: name
			});
			rule.forEach(function (seq) {
				job.seq(seq);
			});
		});
	}
	return sched.start();
});

mill
	.sched('build')
		.job('init', mill.opts)
			.seq(' > (read-plugins | read-tree), files > ')
			.up
		.start();
1.4.1

8 years ago

1.4.0

8 years ago

1.3.7

8 years ago

1.3.6

8 years ago

1.3.5

8 years ago

1.3.4

8 years ago

1.3.3

8 years ago

1.3.2

8 years ago

1.3.1

8 years ago

1.3.0

8 years ago

1.2.13

8 years ago

1.2.12

8 years ago

1.2.11

8 years ago

1.2.10

8 years ago

1.2.9

8 years ago

1.2.8

8 years ago

1.2.7

8 years ago

1.2.5

8 years ago

1.2.4

8 years ago

1.2.3

8 years ago

1.2.2

8 years ago

1.2.1

8 years ago

1.2.0

8 years ago

1.1.2

8 years ago

1.1.1

8 years ago

1.0.0

8 years ago