3
3
const context = require ( './context' )
4
4
const github = require ( './github' )
5
5
const gitURLParse = require ( 'git-url-parse' )
6
+ const { exec } = require ( 'child_process' )
6
7
const logger = require ( './logger' )
8
+ const tmp = require ( 'tmp' )
9
+ const { cp } = require ( 'fs/promises' )
10
+ const path = require ( 'path' )
7
11
8
12
// setup logger namespace
9
13
const testCommandNamespace = 'wiby:test'
@@ -21,19 +25,33 @@ module.exports = async function ({ dependents }) {
21
25
const parentDependencyLink = await context . getDependencyLink ( parentRepositoryInfo . owner , parentRepositoryInfo . name , parentBranchName )
22
26
debug ( 'Commit URL to test:' , parentDependencyLink )
23
27
24
- for ( const { repository : url , pullRequest, sha } of dependents ) {
28
+ for ( const { repository : url , pullRequest, sha, mode } of dependents ) {
25
29
const dependentRepositoryInfo = gitURLParse ( url )
26
- const dependentPkgJson = await github . getPackageJson ( dependentRepositoryInfo . owner , dependentRepositoryInfo . name , sha )
27
- debug ( `Dependent module: ${ dependentRepositoryInfo . owner } /${ dependentRepositoryInfo . name } , sha ${ sha } ` )
28
30
29
- if ( ! context . checkDependentUsesParent ( parentPkgJSON . name , dependentPkgJson ) ) {
30
- throw new Error ( `${ parentRepositoryInfo . owner } /${ parentPkgJSON . name } not found in the package.json of ${ dependentRepositoryInfo . owner } /${ dependentRepositoryInfo . name } ` )
31
- }
32
-
33
- const patchedPackageJSON = applyPatch ( parentDependencyLink , parentPkgJSON . name , dependentPkgJson , parentPkgJSON . name )
34
- await pushPatch ( patchedPackageJSON , dependentRepositoryInfo . owner , dependentRepositoryInfo . name , parentPkgJSON . name , parentBranchName , sha )
35
- if ( pullRequest ) {
36
- await createPR ( dependentRepositoryInfo . owner , dependentRepositoryInfo . name , parentBranchName , parentDependencyLink )
31
+ if ( mode === 'download' ) {
32
+ debug ( 'Generating tarball' )
33
+ exec ( 'npm pack' )
34
+ const { name : tmpDir } = tmp . dirSync ( )
35
+
36
+ debug ( `Temporary directory: ${ tmpDir } ` )
37
+ debug ( `Copying package to ${ tmpDir } ` )
38
+ cp ( `${ parentPkgJSON . name } -${ parentPkgJSON . version } .tgz` , path . join ( tmpDir , `${ parentPkgJSON . name } -${ parentPkgJSON . version } .tgz` ) )
39
+
40
+ debug ( `Cloning dependent repository ${ url } into ${ tmpDir } ` )
41
+ exec ( `git clone ${ url } ${ tmpDir } ` , { cwd : tmpDir } )
42
+ } else {
43
+ const dependentPkgJson = await github . getPackageJson ( dependentRepositoryInfo . owner , dependentRepositoryInfo . name , sha )
44
+ debug ( `Dependent module: ${ dependentRepositoryInfo . owner } /${ dependentRepositoryInfo . name } , sha ${ sha } ` )
45
+
46
+ if ( ! context . checkDependentUsesParent ( parentPkgJSON . name , dependentPkgJson ) ) {
47
+ throw new Error ( `${ parentRepositoryInfo . owner } /${ parentPkgJSON . name } not found in the package.json of ${ dependentRepositoryInfo . owner } /${ dependentRepositoryInfo . name } ` )
48
+ }
49
+
50
+ const patchedPackageJSON = applyPatch ( parentDependencyLink , parentPkgJSON . name , dependentPkgJson , parentPkgJSON . name )
51
+ await pushPatch ( patchedPackageJSON , dependentRepositoryInfo . owner , dependentRepositoryInfo . name , parentPkgJSON . name , parentBranchName , sha )
52
+ if ( pullRequest ) {
53
+ await createPR ( dependentRepositoryInfo . owner , dependentRepositoryInfo . name , parentBranchName , parentDependencyLink )
54
+ }
37
55
}
38
56
}
39
57
}
0 commit comments