chore: rc2

This commit is contained in:
calebboyd
2017-09-04 14:40:30 -05:00
parent 75651af5f9
commit eaaffc7221
6 changed files with 38 additions and 815 deletions
+25 -12
View File
@@ -8,7 +8,9 @@ import { Logger } from './logger'
import { readFileAsync, writeFileAsync, pathExistsAsync, dequote, isWindows } from './util'
import { NexeOptions, nexeVersion } from './options'
import { NexeTarget } from './target'
import { getLatestGitRelease, storeAsset } from './releases'
import download = require('download')
import { getLatestGitRelease } from './releases'
import { IncomingMessage } from 'http'
const isBsd = Boolean(~process.platform.indexOf('bsd'))
const make = isWindows ? 'vcbuild.bat' : isBsd ? 'gmake' : 'make'
@@ -93,7 +95,7 @@ export class NexeCompiler {
return this.log.flush()
}
private _getNodeExecutableLocation(target?: NexeTarget) {
public getNodeExecutableLocation(target?: NexeTarget) {
if (target) {
return join(this.options.temp, target.toString())
}
@@ -131,23 +133,35 @@ export class NexeCompiler {
`Compiling Node${buildOptions.length ? ' with arguments: ' + buildOptions : '...'}`
)
await this._runBuildCommandAsync(make, buildOptions)
return createReadStream(this._getNodeExecutableLocation())
return createReadStream(this.getNodeExecutableLocation())
}
private async _fetchPrebuiltBinaryAsync(target: NexeTarget) {
const githubRelease = await getLatestGitRelease({
const downloadOptions: any = {
headers: {
'User-Agent': 'nexe (https://www.npmjs.com/package/nexe)'
}
})
}
const githubRelease = await getLatestGitRelease(downloadOptions)
const assetName = target.toString()
const asset = githubRelease.assets.find(x => x.name === assetName)
if (!asset) {
throw new Error(`${assetName} not available, create one using --build`)
throw new Error(`${assetName} not available, create one using --build --empty`)
}
const filename = this._getNodeExecutableLocation(target)
await storeAsset(asset, dirname(filename))
const filename = this.getNodeExecutableLocation(target)
await download(
asset.browser_download_url,
dirname(filename),
downloadOptions
).on('response', (res: IncomingMessage) => {
const total = +res.headers['content-length']!
let current = 0
res.on('data', data => {
current += data.length
this.compileStep.modify(`Downloading...${(current / total * 100).toFixed()}%`)
})
})
return createReadStream(filename)
}
@@ -176,14 +190,13 @@ export class NexeCompiler {
async compileAsync(target: NexeTarget) {
const step = (this.compileStep = this.log.step('Compiling result'))
const build = this.options.build
const location = this._getNodeExecutableLocation(target)
const location = this.getNodeExecutableLocation(target)
let binary = (await pathExistsAsync(location)) ? createReadStream(location) : null
const header = this._generateHeader()
if (target && !build) {
if (!build && !binary) {
step.modify('Fetching prebuilt binary')
binary = await this._fetchPrebuiltBinaryAsync(target)
}
if (!binary) {
binary = await this._buildAsync()
step.log('Node binary compiled')
+8 -3
View File
@@ -14,6 +14,7 @@ import download from './steps/download'
import artifacts from './steps/artifacts'
import patches from './patches'
import { rimrafAsync } from './util'
import { NexeTarget } from './target'
async function compile(
compilerOptions?: Partial<NexeOptions>,
@@ -24,10 +25,14 @@ async function compile(
const build = compiler.options.build
if (options.clean) {
let path = compiler.src
if (!options.build) {
path = compiler.getNodeExecutableLocation(compiler.options.targets[0] as NexeTarget)
}
const step = compiler.log.step('Cleaning up nexe build artifacts...')
step.log(`Deleting directory and contents at: ${compiler.src}`)
await rimrafAsync(compiler.src)
step.log(`Deleted directory and contents at: ${compiler.src}`)
step.log(`Deleting contents at: ${path}`)
await rimrafAsync(path)
step.log(`Deleted contents at: ${path}`)
return compiler.quit()
}
+4 -2
View File
@@ -5,7 +5,7 @@ import { basename, extname, join, isAbsolute, relative } from 'path'
import { getTarget, NexeTarget } from './target'
import { EOL } from 'os'
export const nexeVersion = '2.0.0-rc.1'
export const nexeVersion = '2.0.0-rc.2'
export interface NexePatch {
(compiler: NexeCompiler, next: () => Promise<void>): Promise<void>
@@ -171,13 +171,15 @@ function findInput(input: string, cwd: string) {
if (isEntryFile(maybeInput)) {
return maybeInput
}
if (!process.stdin.isTTY) {
return ''
}
try {
const main = require.resolve(cwd)
return './' + relative(cwd, main)
} catch (e) {
void e
}
return ''
}
-5
View File
@@ -42,11 +42,6 @@ export function getLatestGitRelease(options?: any) {
return getJson<GitRelease>('https://api.github.com/repos/nexe/nexe/releases/latest', options)
}
export async function storeAsset(asset: GitAsset, dest: string, headers?: any) {
const options = headers ? { headers } : undefined
await download(asset.browser_download_url, dest, options as any)
}
export async function getUnBuiltReleases(options?: any) {
const nodeReleases = await getJson<NodeRelease[]>(
'https://nodejs.org/download/release/index.json'