11import { logging } from '@angular-devkit/core' ;
2-
32import { Schema } from '../deploy/schema' ;
43const Heroku = require ( 'heroku-client' ) ;
54import * as tar from 'tar' ;
65const fetch = require ( "node-fetch" ) ;
7- import { ensureDir , copy , remove } from 'fs-extra' ;
6+ import {
7+ ensureDir , copy , remove , move ,
8+ copyFileSync , readFileSync , createWriteStream
9+ } from 'fs-extra' ;
10+
11+
812// TODO: add your deployment code here!
913export async function run ( dir : string ,
1014 options : Schema ,
@@ -18,57 +22,102 @@ export async function run(dir: string,
1822 const result = await heroku . get ( '/apps' ) ;
1923 const site = result . find ( ( app => app . name === 'ngx-deploy-demo' ) )
2024
25+ // async function download() {
26+ // const response = await fetch('https://nodejs.org/dist/v10.16.3/node-v10.16.3.tar.gz')
27+ // if (!response.ok) throw new Error(`unexpected response ${response .statusText}`)
28+ // await streamPipeline(response.body, fs.createWriteStream('./app'))
29+ // }
30+ // download()
31+
2132 const slugResult = await heroku . post ( `/apps/${ site . name } /slugs` , {
2233 body : {
2334 buildpack_provided_description : "heroku/nodejs" ,
24- process_types : { "web" : `node-v0.10.20 -linux-x64/bin/node index.js` }
35+ process_types : { "web" : `node-v10.16.3 -linux-x64/bin/node index.js` }
2536 }
26- }
27- ) ;
28-
29- // const upload
30- // console.log(site);
31- console . log ( slugResult ) ;
32- // !fs.existsSync(`${dir}/app`) && fs.mkdirSync(`${dir}/app`);
33-
37+ } ) ;
38+ logger . info ( 'Copying Build Files' ) ;
3439 await remove ( `${ dir } /app` ) ;
40+ await remove ( `${ dir } /tmp` ) ;
3541 await remove ( `${ dir } /slug.tgz` ) ;
3642 await ensureDir ( `${ dir } /app` ) ;
43+ await ensureDir ( `${ dir } /tmp` ) ;
44+ // fetch('https://nodejs.org/dist/v10.16.3/node-v10.16.3.tar.gz')
45+ // .then(res => {
46+ // const dest = fs.createWriteStream('./tmp/node-v10.16.3.tar.gz');
47+ // res.body.pipe(dest);
48+ // });
49+ await download ( ) ;
3750 await copy ( `${ outDir } ` , `${ dir } /app` ) ;
38- // await copy(`${dir}/index.js`, `${dir}/app`);
51+ await moveNodeJS ( 'node-v10.16.3-linux-x64' , `${ dir } /app/node-v10.16.3-linux-x64` )
52+ copyFileSync ( 'index.js' , `${ dir } /app/index.js` ) ;
53+
54+ // copyfiles([`${dir}/index.js`, `${dir}/app`], () => {
55+ // console.log('Files copied');
56+ // });
57+
3958
4059 console . log ( `${ outDir } outdir` ) ;
4160 const tarResponse = await tar . c (
4261 {
4362 gzip : true ,
4463 file : 'slug.tgz'
4564 } ,
46- [ 'app' ]
65+ [ './ app' ]
4766 ) ;
4867
49- console . log ( `${ tarResponse } response` ) ;
5068
69+ const buf = readFileSync ( `slug.tgz` ) ;
5170 const response = await fetch ( slugResult . blob . url , {
5271 method : 'PUT' , // or 'PUT'
5372 // body: JSON.stringify(data), // data can be `string` or {object}!
54- body : `@ ${ dir } /slug.tgz` ,
73+ body : buf ,
5574 headers : {
56- ' Content-Type' : ''
75+ " Content-Type" : ""
5776 }
58- } ) ;
59- console . log ( response ) ;
77+ } )
78+
79+ logger . info ( 'Starting deployment' ) ;
6080
6181 const release = await heroku . post ( `/apps/${ site . name } /releases` , {
6282 body : {
6383 slug : `${ slugResult . id } `
6484 }
6585 } ) ;
6686
67- console . log ( release ) ;
68-
87+ logger . info ( 'Deployment Success!' ) ;
88+ await remove ( `${ dir } /app` ) ;
89+ await remove ( `${ dir } /tmp` ) ;
90+ await remove ( `${ dir } /slug.tgz` ) ;
6991 }
7092 catch ( error ) {
7193 logger . error ( '❌ An error occurred!' ) ;
7294 throw error ;
7395 }
7496} ;
97+
98+
99+ async function download ( ) {
100+ const res = await fetch ( 'https://nodejs.org/dist/v10.16.3/node-v10.16.3-linux-x64.tar.gz' ) ;
101+ await new Promise ( ( resolve , reject ) => {
102+ const fileStream = createWriteStream ( './tmp/node-v10.16.3.tar.gz' ) ;
103+ res . body . pipe ( fileStream ) ;
104+ res . body . on ( "error" , ( err ) => {
105+ reject ( err ) ;
106+ } ) ;
107+ fileStream . on ( "finish" , function ( ) {
108+ tar . x ( {
109+ file : './tmp/node-v10.16.3.tar.gz'
110+ } )
111+ resolve ( ) ;
112+ } ) ;
113+ } ) ;
114+ }
115+
116+ async function moveNodeJS ( src , dest ) {
117+ try {
118+ await move ( src , dest )
119+ console . log ( 'success!' )
120+ } catch ( err ) {
121+ console . error ( err )
122+ }
123+ }
0 commit comments