# svcmgr

> A Simple service manager

Latest version **0.2.1** (published 2014-07-18) · Apache Public License v2 license · 0 weekly downloads

## Install

```sh
npm install svcmgr
pnpm add svcmgr
yarn add svcmgr
bun add svcmgr
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.2.1 |
| Published | 2014-07-18 |
| First published | 2014-06-20 |
| Weekly downloads | 0 |
| License | Apache Public License v2 |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=0.8 |
| Dependencies | 1 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Appcelerator, Inc. |
| Maintainers | cb1kenobi |
| Keywords | service manager, services, service, manager |

## Links

- npm: https://www.npmjs.com/package/svcmgr
- Repository: https://github.com/appcelerator/svcmgr
- Issues: https://github.com/appcelerator/svcmgr/issues
- npm.io page: https://npm.io/package/svcmgr

## Dependencies (1)

- [async](https://npm.io/package/async.md) ~0.9.0

## Recent versions

- 0.2.1 (latest) — 2014-07-18
- 0.2.0 — 2014-07-02
- 0.1.1 — 2014-06-21
- 0.1.0 — 2014-06-20

## README

A simple service manager.

[![NPM](https://nodei.co/npm/svcmgr.png?downloads=true&stars=true)](https://nodei.co/npm/svcmgr/)

## Installation

	[sudo] npm install svcmgr

## Overview

svcmgr is a really simple service manager that loads, starts, stops, and unloads
Node modules.

A service module can export any of the 4 lifecycle handlers: `load`, `start`,
`stop`, and `unload`.

Service modules can also have dependencies. You can declare them by export a
`dependencies` property with an array of dependencies. When a service is being
loaded, it will load the dependencies first, then pass them to the service's
lifecycle handlers.

## Example

main.js

	var svcmgr = require('svcmgr');

	svcmgr.setup({
		// arbitrary config settings to pass to all services
		logger: console
	});

	svcmgr.load(['myservice'], function (err, services) {
		console.info('main: all services loaded');

		svcmgr.start(function () {
			console.info('main: all services started');
		});
	});

	var exiting = false;
	process.on('exit', function () {
		if (!exiting) {
			console.info('main: shutting down');
			svcmgr.unload(function () {
				console.info('main: all services stopped and unloaded');
			});
		}
	});

	// listen for ctrl-c
	process.on('SIGINT', function () {
		exiting = true;
		console.log('\nmain: ctrl-c detected, shutting down');
		svcmgr.unload(function () {
			console.info('main: all services stopped and unloaded');
			process.exit(0);
		});
	});

myservice.js

	var timer;

	exports.dependencies = [ 'mydep' ];

	exports.load = function (deps, cfg, callback) {
		// init stuff
		console.info('myservice: load handler');
		callback();
	};

	exports.start = function (deps, cfg, callback) {
		// start stuff
		console.info('myservice: start handler');
		console.info('myservice: calling sayHello() in 3 seconds...');
		timer = setTimeout(function () {
			deps['mydep'].sayHello("World!");
		}, 3000);
		callback();
	};

	exports.stop = function (deps, cfg, callback) {
		// stop stuff
		clearTimeout(timer);
		console.info('myservice: stop handler');
		callback();
	};

	exports.unload = function (deps, cfg, callback) {
		// shutdown stuff
		console.info('myservice: unload handler');
		callback();
	};

mydep.js

	var hello;

	exports.load = function (cfg) {
		hello = cfg.hello || "Hello";
	};

	exports.sayHello = function (msg) {
		console.info('mydep: ' + hello + ' ' + msg);
	};

## License

This project is open source and provided under the Apache Public License
(version 2). Please make sure you see the `LICENSE` file included in this
distribution for more details on the license.  Also, please take notice of the
privacy notice at the end of the file.

#### (C) Copyright 2014, [Appcelerator](http://www.appcelerator.com/) Inc. All Rights Reserved.

---
_Source: https://npm.io/package/svcmgr · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
