[Pkg-javascript-commits] [node-require-main-filename] 01/02: Imported Upstream version 1.0.1
Thorsten Alteholz
alteholz at moszumanska.debian.org
Sun Apr 3 14:47:24 UTC 2016
This is an automated email from the git hooks/post-receive script.
alteholz pushed a commit to branch master
in repository node-require-main-filename.
commit 6506c74023611d834401b775c37ba5f1ec6cdd1a
Author: Thorsten Alteholz <debian at alteholz.de>
Date: Sun Apr 3 16:47:21 2016 +0200
Imported Upstream version 1.0.1
---
.gitignore | 3 +++
.travis.yml | 8 ++++++++
LICENSE.txt | 14 ++++++++++++++
README.md | 26 ++++++++++++++++++++++++++
index.js | 18 ++++++++++++++++++
package.json | 30 ++++++++++++++++++++++++++++++
test.js | 36 ++++++++++++++++++++++++++++++++++++
7 files changed, 135 insertions(+)
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..6f9fe6b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+node_modules
+.DS_Store
+.nyc_output
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..ab61ce7
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,8 @@
+language: node_js
+os:
+ - linux
+node_js:
+ - "0.10"
+ - "0.12"
+ - "4.1"
+ - "node"
diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644
index 0000000..836440b
--- /dev/null
+++ b/LICENSE.txt
@@ -0,0 +1,14 @@
+Copyright (c) 2016, Contributors
+
+Permission to use, copy, modify, and/or distribute this software
+for any purpose with or without fee is hereby granted, provided
+that the above copyright notice and this permission notice
+appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE
+LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..820d9f5
--- /dev/null
+++ b/README.md
@@ -0,0 +1,26 @@
+# require-main-filename
+
+[![Build Status](https://travis-ci.org/yargs/require-main-filename.png)](https://travis-ci.org/yargs/require-main-filename)
+[![Coverage Status](https://coveralls.io/repos/yargs/require-main-filename/badge.svg?branch=master)](https://coveralls.io/r/yargs/require-main-filename?branch=master)
+[![NPM version](https://img.shields.io/npm/v/require-main-filename.svg)](https://www.npmjs.com/package/require-main-filename)
+
+`require.main.filename` is great for figuring out the entry
+point for the current application. This can be combined with a module like
+[pkg-conf](https://www.npmjs.com/package/pkg-conf) to, _as if by magic_, load
+top-level configuration.
+
+Unfortunately, `require.main.filename` sometimes fails when an application is
+executed with an alternative process manager, e.g., [iisnode](https://github.com/tjanczuk/iisnode).
+
+`require-main-filename` is a shim that addresses this problem.
+
+## Usage
+
+```js
+var main = require('require-main-filename')()
+// use main as an alternative to require.main.filename.
+```
+
+## License
+
+ISC
diff --git a/index.js b/index.js
new file mode 100644
index 0000000..dca7f0c
--- /dev/null
+++ b/index.js
@@ -0,0 +1,18 @@
+module.exports = function (_require) {
+ _require = _require || require
+ var main = _require.main
+ if (main && isIISNode(main)) return handleIISNode(main)
+ else return main ? main.filename : process.cwd()
+}
+
+function isIISNode (main) {
+ return /\\iisnode\\/.test(main.filename)
+}
+
+function handleIISNode (main) {
+ if (!main.children.length) {
+ return main.filename
+ } else {
+ return main.children[0].filename
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..558db27
--- /dev/null
+++ b/package.json
@@ -0,0 +1,30 @@
+{
+ "name": "require-main-filename",
+ "version": "1.0.1",
+ "description": "shim for require.main.filename() that works in as many environments as possible",
+ "main": "index.js",
+ "scripts": {
+ "pretest": "standard",
+ "test": "tap --coverage test.js"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+ssh://git@github.com/yargs/require-main-filename.git"
+ },
+ "keywords": [
+ "require",
+ "shim",
+ "iisnode"
+ ],
+ "author": "Ben Coe <ben at npmjs.com>",
+ "license": "ISC",
+ "bugs": {
+ "url": "https://github.com/yargs/require-main-filename/issues"
+ },
+ "homepage": "https://github.com/yargs/require-main-filename#readme",
+ "devDependencies": {
+ "chai": "^3.5.0",
+ "standard": "^6.0.5",
+ "tap": "^5.2.0"
+ }
+}
diff --git a/test.js b/test.js
new file mode 100644
index 0000000..d89e7dc
--- /dev/null
+++ b/test.js
@@ -0,0 +1,36 @@
+/* global describe, it */
+
+var requireMainFilename = require('./')
+
+require('tap').mochaGlobals()
+require('chai').should()
+
+describe('require-main-filename', function () {
+ it('returns require.main.filename in normal circumstances', function () {
+ requireMainFilename().should.match(/test\.js/)
+ })
+
+ it('should use children[0].filename when running on iisnode', function () {
+ var main = {
+ filename: 'D:\\Program Files (x86)\\iisnode\\interceptor.js',
+ children: [ {filename: 'D:\\home\\site\\wwwroot\\server.js'} ]
+ }
+ requireMainFilename({
+ main: main
+ }).should.match(/server\.js/)
+ })
+
+ it('should not use children[0] if no children exist', function () {
+ var main = {
+ filename: 'D:\\Program Files (x86)\\iisnode\\interceptor.js',
+ children: []
+ }
+ requireMainFilename({
+ main: main
+ }).should.match(/interceptor\.js/)
+ })
+
+ it('should default to process.cwd() if require.main is undefined', function () {
+ requireMainFilename({}).should.match(/require-main-filename/)
+ })
+})
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/node-require-main-filename.git
More information about the Pkg-javascript-commits
mailing list