[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