Convert conversions module to typescript

Change-type: patch
Signed-off-by: Cameron Diver <cameron@resin.io>
This commit is contained in:
Cameron Diver 2018-05-01 13:35:14 +01:00
parent 367e90d6e4
commit 9150c3fdbc
No known key found for this signature in database
GPG Key ID: 69264F9C923F55C1
3 changed files with 59 additions and 12 deletions

View File

@ -1,12 +0,0 @@
_ = require 'lodash'
exports.envArrayToObject = (env) ->
# env is an array of strings that say 'key=value'
toPair = (keyVal) ->
m = keyVal.match(/^([^=]+)=(.*)$/)
if !m?
console.log("WARNING: Could not correctly parse env var #{keyVal}. " +
'Please fix this var and recreate the container.')
return null
return m[1..]
_(env).map(toPair).filter(([_, v]) -> v?).fromPairs().value()

21
src/lib/conversions.ts Normal file
View File

@ -0,0 +1,21 @@
import * as _ from 'lodash';
import { EnvVarObject } from './types';
export function envArrayToObject(env: string[]): EnvVarObject {
const toPair = (keyVal: string) => {
const m = keyVal.match(/^([^=]+)=(.*)$/);
if (m == null) {
console.log(`WARNING: Could not correctly parse env var ${keyVal}. ` +
'Please fix this var and recreate the container.');
return [null, null];
}
return m.slice(1);
};
return _(env)
.map(toPair)
.filter(([_, v]) => v != null)
.fromPairs()
.value();
}

View File

@ -0,0 +1,38 @@
m = require 'mochainon'
{ expect } = m.chai
conversion = require '../src/lib/conversions'
describe 'conversions', ->
describe 'envArrayToObject', ->
it 'should convert an env array to an object', ->
expect(conversion.envArrayToObject([
'key=value'
'test1=test2'
'k=v'
'equalsvalue=thisvaluehasan=char'
'asd='
'number=123'
])).to.deep.equal({
key: 'value'
test1: 'test2'
k: 'v'
equalsvalue: 'thisvaluehasan=char'
asd: ''
number: '123'
})
it 'should ignore invalid env array entries', ->
expect(conversion.envArrayToObject([
'key1',
'key1=value1'
])).to.deep.equal({
key1: 'value1'
})
it 'should return an empty object with an empty input', ->
expect(conversion.envArrayToObject(null)).to.deep.equal({})
expect(conversion.envArrayToObject('')).to.deep.equal({})
expect(conversion.envArrayToObject([])).to.deep.equal({})
expect(conversion.envArrayToObject(1)).to.deep.equal({})