configorama 0.4.4 → 0.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/main.js CHANGED
@@ -13,7 +13,7 @@ const getValueFromString = require('./resolvers/valueFromString')
13
13
  const getValueFromNumber = require('./resolvers/valueFromNumber')
14
14
  const getValueFromEnv = require('./resolvers/valueFromEnv')
15
15
  const getValueFromOptions = require('./resolvers/valueFromOptions')
16
- const getValueFromGit = require('./resolvers/valueFromGit')
16
+ const createGitResolver = require('./resolvers/valueFromGit')
17
17
  /* Default File Parsers */
18
18
  const YAML = require('./parsers/yaml')
19
19
  const TOML = require('./parsers/toml')
@@ -88,7 +88,7 @@ class Configorama {
88
88
  } else if (typeof fileOrObject === 'string') {
89
89
  // read and parse file
90
90
  const fileContents = fs.readFileSync(fileOrObject, 'utf-8')
91
- const fileDirectory = path.dirname(fileOrObject)
91
+ const fileDirectory = path.dirname(path.resolve(fileOrObject))
92
92
  const fileType = path.extname(fileOrObject)
93
93
 
94
94
  let configObject
@@ -194,7 +194,7 @@ class Configorama {
194
194
  },
195
195
 
196
196
  // Git refs
197
- getValueFromGit,
197
+ createGitResolver(this.configPath),
198
198
  /* Internal Resolvers */
199
199
  // {
200
200
  // match: funcRegex,
@@ -18,77 +18,145 @@ async function _exec(cmd, options = { timeout: 1000 }) {
18
18
  })
19
19
  }
20
20
 
21
- async function _getValueFromGit(variableString) {
22
- const variable = variableString.split(`${GIT_PREFIX}:`)[1]
23
- let value = null
24
- // console.log('variableStringvariableString', variableString)
25
- if (variable.match(/^remote/)) {
26
- const hasParams = functionRegex.exec(variableString)
27
- const remoteName = (hasParams && hasParams[2]) ? formatFunctionArgs(hasParams[2]) : 'origin'
28
- value = await getGitRemote(remoteName)
29
- return value
30
- }
21
+ function createResolver(cwd) {
22
+ async function _getValueFromGit(variableString) {
23
+ const variable = variableString.split(`${GIT_PREFIX}:`)[1]
24
+ let value = null
25
+ // console.log('variableStringvariableString', variableString)
26
+ if (variable.match(/^remote/i)) {
27
+ const hasParams = functionRegex.exec(variableString)
28
+ const remoteName = (hasParams && hasParams[2]) ? formatFunctionArgs(hasParams[2]) : 'origin'
29
+ value = await getGitRemote(remoteName)
30
+ return value
31
+ }
31
32
 
32
- const verifyMsg = `Verify the cwd has a .git directory\n`
33
+ const verifyMsg = `Verify the cwd has a .git directory\n`
34
+ const normalizedVar = (variable || '').toLowerCase()
33
35
 
34
- switch (variable) {
35
- case 'describe':
36
- try {
37
- value = await _exec('git describe --always')
38
- } catch (err) {
39
- throw new Error(`\${git:describeLight} error. ${verifyMsg}`)
40
- }
41
- break
42
- case 'describeLight':
43
- try {
44
- value = await _exec('git describe --always --tags')
45
- } catch (err) {
46
- throw new Error(`\${git:describeLight} error. ${verifyMsg}`)
47
- }
48
- break
49
- case 'sha1':
50
- try {
51
- value = await _exec('git rev-parse --short HEAD')
52
- } catch (err) {
53
- throw new Error(`\${git:sha1} error ${verifyMsg}`)
54
- }
55
- break
56
- case 'commit':
57
- try {
58
- value = await _exec('git rev-parse HEAD')
59
- } catch (err) {
60
- throw new Error(`\${git:commit} error. ${verifyMsg}`)
61
- }
62
- break
63
- case 'branch':
64
- try {
65
- value = await _exec('git rev-parse --abbrev-ref HEAD')
66
- } catch (err) {
67
- throw new Error(`\${git:branch} error. ${verifyMsg}`)
68
- }
69
- break
70
- case 'message':
71
- try {
72
- value = await _exec('git log -1 --pretty=%B')
73
- } catch (err) {
74
- throw new Error(`\${git:message} error. ${verifyMsg}`)
75
- }
76
- break
77
- case 'isDirty':
78
- const writeTree = await _exec('git write-tree')
79
- const changes = await _exec(`git diff-index ${writeTree} --`)
80
- value = `${changes.length > 0}`
81
- break
82
- case 'repository':
83
- value = await _exec('basename `git rev-parse --show-toplevel`')
84
- break
85
- case 'url': case 'repoUrl':
86
- value = await getGitRemote()
87
- break
88
- default:
89
- throw new Error(`Git variable ${variable} is unknown. Candidates are 'describe', 'describeLight', 'sha1', 'commit', 'branch', 'message', 'repository'`)
36
+ switch (normalizedVar) {
37
+ // Repo owner/name
38
+ case 'repo':
39
+ case 'repository':
40
+ case 'reposlug':
41
+ case 'repo-slug':
42
+ const urla = await getGitRemote()
43
+ const parseda = GitUrlParse(urla)
44
+ value = parseda.full_name
45
+ break;
46
+ // Repo name
47
+ case 'name':
48
+ case 'reponame': // repoName
49
+ case 'repo-name':
50
+ value = await _exec('basename `git rev-parse --show-toplevel`')
51
+ break;
52
+ // Repo org or owner
53
+ case 'org':
54
+ case 'owner':
55
+ case 'organization':
56
+ case 'repoowner': // repoOwner
57
+ case 'repo-owner':
58
+ const url = await getGitRemote()
59
+ const parsed = GitUrlParse(url)
60
+ value = parsed.organization || parsed.owner
61
+ break;
62
+ // Repo name
63
+ case 'dir':
64
+ case 'dirpath': // dirPath
65
+ case 'dir-path':
66
+ case 'dir_path':
67
+ const gitBasePath = await _exec('git rev-parse --show-toplevel')
68
+ if (cwd) {
69
+ const subPath = cwd.replace(gitBasePath, '')
70
+ const branch = await _exec('git rev-parse --abbrev-ref HEAD')
71
+ const url = await getGitRemote()
72
+ value = (subPath) ? `${url}/tree/${branch}${subPath}` : url
73
+ }
74
+ break;
75
+ // Repo url
76
+ case 'url':
77
+ case 'repourl': // repoUrl
78
+ case 'repo-url':
79
+ value = await getGitRemote()
80
+ break;
81
+ // Current commit sha
82
+ case 'sha':
83
+ case 'sha1':
84
+ try {
85
+ value = await _exec('git rev-parse --short HEAD')
86
+ } catch (err) {
87
+ throw new Error(`\${git:sha1} error ${verifyMsg}`)
88
+ }
89
+ break
90
+ // Current commit full sha
91
+ case 'commit':
92
+ case 'commitsha':
93
+ case 'commit-sha':
94
+ case 'commithash':
95
+ case 'commit-hash':
96
+ try {
97
+ value = await _exec('git rev-parse HEAD')
98
+ } catch (err) {
99
+ throw new Error(`\${git:commit} error. ${verifyMsg}`)
100
+ }
101
+ break
102
+ // Branches
103
+ case 'branch':
104
+ case 'branchname':
105
+ case 'branch-name':
106
+ case 'currentbranch': // currentBranch
107
+ case 'current-branch':
108
+ try {
109
+ value = await _exec('git rev-parse --abbrev-ref HEAD')
110
+ } catch (err) {
111
+ throw new Error(`\${git:branch} error. ${verifyMsg}`)
112
+ }
113
+ break
114
+ // Commit msg
115
+ case 'msg':
116
+ case 'message':
117
+ case 'commitmessage': // commitMessage
118
+ case 'commit-message':
119
+ case 'commitmsg': // commitMsg
120
+ case 'commit-msg':
121
+ try {
122
+ value = await _exec('git log -1 --pretty=%B')
123
+ } catch (err) {
124
+ throw new Error(`\${git:message} error. ${verifyMsg}`)
125
+ }
126
+ break;
127
+ // Git tags
128
+ case 'tag':
129
+ case 'describe':
130
+ try {
131
+ value = await _exec('git describe --always')
132
+ } catch (err) {
133
+ throw new Error(`\${git:describeLight} error. ${verifyMsg}`)
134
+ }
135
+ break;
136
+ // Git tags
137
+ case 'describeLight':
138
+ case 'describelight':
139
+ case 'describe-light':
140
+ try {
141
+ value = await _exec('git describe --always --tags')
142
+ } catch (err) {
143
+ throw new Error(`\${git:describeLight} error. ${verifyMsg}`)
144
+ }
145
+ break;
146
+ // Is branch dirty
147
+ case 'isDirty':
148
+ case 'isdirty':
149
+ case 'is-dirty':
150
+ const writeTree = await _exec('git write-tree')
151
+ const changes = await _exec(`git diff-index ${writeTree} --`)
152
+ value = `${changes.length > 0}`
153
+ break
154
+ default:
155
+ throw new Error(`Git variable ${variable} is unknown. Candidates are 'describe', 'describeLight', 'sha1', 'commit', 'branch', 'message', 'repository'`)
156
+ }
157
+ return value
90
158
  }
91
- return value
159
+ return _getValueFromGit
92
160
  }
93
161
 
94
162
  async function getGitRemote(name = 'origin') {
@@ -130,7 +198,9 @@ async function getGitRemote(name = 'origin') {
130
198
  }
131
199
  }
132
200
 
133
- module.exports = {
134
- match: gitVariableSyntax,
135
- resolver: _getValueFromGit
201
+ module.exports = function createGitResolver(cwd) {
202
+ return {
203
+ match: gitVariableSyntax,
204
+ resolver: createResolver(cwd)
205
+ }
136
206
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "configorama",
3
- "version": "0.4.4",
3
+ "version": "0.4.6",
4
4
  "description": "Variable support for configuration files",
5
5
  "main": "lib/index.js",
6
6
  "files": [