2
2
const assert = require ( 'assert' ) ;
3
3
const path = require ( 'path' ) ;
4
4
const os = require ( 'os' ) ;
5
- // const fs = require('fs');
6
5
const util = require ( 'util' ) ;
6
+ const config = require ( '../lib/config.js' ) ;
7
7
8
8
if ( ! util . promisify ) {
9
9
util . promisify = require ( 'util.promisify' ) ;
@@ -12,59 +12,66 @@ if (!util.promisify) {
12
12
const exec = util . promisify ( require ( 'child_process' ) . execFile ) ;
13
13
const readFile = util . promisify ( require ( 'fs' ) . readFile ) ;
14
14
15
- function getRegEnv ( platform ) {
16
- const args = [
17
- 'QUERY' ,
18
- 'HKCU\\Environment'
19
- ] ;
15
+ function initWinEnv ( ) {
16
+ function getRegEnv ( platform ) {
17
+ const args = [
18
+ 'QUERY' ,
19
+ 'HKCU\\Environment'
20
+ ] ;
20
21
21
- if ( platform ) {
22
- args . push ( '/reg:' + platform ) ;
22
+ if ( platform ) {
23
+ args . push ( '/reg:' + platform ) ;
24
+ }
25
+ return exec ( 'REG' , args ) . then (
26
+ regQuery => regQuery . stdout ,
27
+ ( ) => { }
28
+ ) ;
23
29
}
24
- return exec ( 'REG' , args ) . then (
25
- regQuery => regQuery . stdout ,
26
- ( ) => { }
30
+ return Promise . all ( [
31
+ getRegEnv ( 64 ) ,
32
+ getRegEnv ( 32 ) ,
33
+ getRegEnv ( )
34
+ ] ) . then (
35
+ regs => regs . filter (
36
+ Boolean
37
+ ) . forEach (
38
+ regs => regs . replace (
39
+ / ^ \s * ( \w + ) \s + R E G _ \w + \s * ( .+ ) $ / gm,
40
+ ( s , key , value ) => {
41
+ process . env [ key ] = value ;
42
+ }
43
+ )
44
+ )
45
+ ) ;
46
+ }
47
+
48
+ function initEnv ( ) {
49
+ const home = os . homedir ( ) ;
50
+ const files = [
51
+ '.bash_profile' ,
52
+ '.bashrc' ,
53
+ '.zshrc'
54
+ ] . map (
55
+ file => path . join ( home , file )
27
56
) ;
57
+ return Promise . all ( files . map ( file => {
58
+ return readFile ( file , 'utf8' ) . then ( sh => {
59
+ sh . replace (
60
+ / ^ e x p o r t \s + ( .+ ?) = ( " | ' ) ? ( .+ ?) \2\s * $ / igm,
61
+ ( s , key , quote , value ) => {
62
+ process . env [ key ] = value ;
63
+ }
64
+ ) ;
65
+ } , ( ) => { } ) ;
66
+ } ) ) ;
28
67
}
29
68
30
69
describe ( 'environment variables' , ( ) => {
31
70
before ( ( ) => {
32
71
if ( process . platform === 'win32' ) {
33
- return Promise . all ( [
34
- getRegEnv ( 64 ) ,
35
- getRegEnv ( 32 ) ,
36
- getRegEnv ( )
37
- ] ) . then (
38
- regs => regs . filter (
39
- Boolean
40
- ) . forEach (
41
- regs => regs . replace (
42
- / ^ \s * ( \w + ) \s + R E G _ \w + \s * ( .+ ) $ / gm,
43
- ( s , key , value ) => {
44
- process . env [ key ] = value ;
45
- }
46
- )
47
- )
48
- ) ;
72
+ return initWinEnv ( ) ;
49
73
} else {
50
- const home = os . homedir ( ) ;
51
- const files = [
52
- '.bash_profile' ,
53
- '.bashrc' ,
54
- '.zshrc'
55
- ] . map (
56
- file => path . join ( home , file )
57
- ) ;
58
- return Promise . all ( files . map ( file => {
59
- return readFile ( file , 'utf8' ) . then ( sh => {
60
- sh . replace (
61
- / ^ e x p o r t \s + ( .+ ?) = ( " | ' ) ? ( .+ ?) \2\s * $ / igm,
62
- ( s , key , quote , value ) => {
63
- process . env [ key ] = value ;
64
- }
65
- ) ;
66
- } , ( ) => { } ) ;
67
- } ) ) ;
74
+ return initEnv ( ) ;
68
75
}
69
76
} ) ;
70
77
@@ -117,3 +124,12 @@ describe('npm config', () => {
117
124
assert . equal ( process . env . npm_config_puppeteer_download_host , 'https://npm.taobao.org/mirrors' ) ;
118
125
} ) ;
119
126
} ) ;
127
+
128
+ describe ( 'get config' , ( ) => {
129
+ it ( '--registry' , ( ) => {
130
+ assert . equal ( config ( [ '--registry=https://r.cnpmjs.org' ] ) . registry , 'https://r.cnpmjs.org' ) ;
131
+ } ) ;
132
+ it ( '--disturl' , ( ) => {
133
+ assert . equal ( config ( [ '--disturl=https://cnpmjs.org/dist' ] ) . disturl , 'https://cnpmjs.org/dist' ) ;
134
+ } ) ;
135
+ } ) ;
0 commit comments