🔀Migrate to downloadInternals

This commit is contained in:
SplatboyDev 2022-10-29 10:59:47 +02:00
parent dfc9d675e7
commit 2d4a6b974a
3 changed files with 46 additions and 70 deletions

View file

@ -6,18 +6,8 @@ import { bin_name, config } from '..'
import { log } from '../log' import { log } from '../log'
import { import {
setupFirefoxSource, downloadInternals
shouldSetupFirefoxSource,
} from './download/firefox' } from './download/firefox'
import {
addAddonsToMozBuild,
downloadAddon,
generateAddonMozBuild,
getAddons,
initializeAddon,
resolveAddonDownloadUrl,
unpackAddon,
} from './download/addon'
export const download = async (): Promise<void> => { export const download = async (): Promise<void> => {
const version = config.version.version const version = config.version.version
@ -30,20 +20,7 @@ export const download = async (): Promise<void> => {
process.exit(1) process.exit(1)
} }
if (shouldSetupFirefoxSource()) { await downloadInternals(version)
await setupFirefoxSource(version)
}
for (const addon of getAddons()) {
const downloadUrl = await resolveAddonDownloadUrl(addon)
const downloadedXPI = await downloadAddon(downloadUrl, addon)
await unpackAddon(downloadedXPI, addon)
await generateAddonMozBuild(addon)
await initializeAddon(addon)
}
await addAddonsToMozBuild(getAddons())
log.success( log.success(
`You should be ready to make changes to ${config.name}.`, `You should be ready to make changes to ${config.name}.`,

View file

@ -1,5 +1,5 @@
import execa from 'execa' import execa from 'execa'
import { existsSync } from 'node:fs' import { existsSync, mkdirSync, rmSync, writeFileSync } from 'node:fs'
import { dirname, resolve } from 'node:path' import { dirname, resolve } from 'node:path'
import { bin_name } from '../..' import { bin_name } from '../..'
import { BASH_PATH, ENGINE_DIR, MELON_TMP_DIR } from '../../constants' import { BASH_PATH, ENGINE_DIR, MELON_TMP_DIR } from '../../constants'
@ -8,6 +8,17 @@ import { commandExistsSync } from '../../utils/command-exists'
import { downloadFileToLocation } from '../../utils/download' import { downloadFileToLocation } from '../../utils/download'
import { ensureDirectory, windowsPathToUnix } from '../../utils/fs' import { ensureDirectory, windowsPathToUnix } from '../../utils/fs'
import { init } from '../init' import { init } from '../init'
import { config } from '../..'
import {
addAddonsToMozBuild,
downloadAddon,
generateAddonMozBuild,
getAddons,
initializeAddon,
resolveAddonDownloadUrl,
unpackAddon,
} from './addon'
import { configPath } from '../../utils'
export function shouldSetupFirefoxSource() { export function shouldSetupFirefoxSource() {
return !( return !(
@ -98,3 +109,33 @@ async function downloadFirefoxSource(version: string) {
await downloadFileToLocation(url, resolve(MELON_TMP_DIR, filename)) await downloadFileToLocation(url, resolve(MELON_TMP_DIR, filename))
return filename return filename
} }
export async function downloadInternals(version: string) {
// If gFFVersion isn't specified, provide legible error
if (!version) {
log.error(
'You have not specified a version of firefox in your config file. This is required to build a firefox fork.'
)
process.exit(1)
}
if (existsSync(ENGINE_DIR)) {
log.info("Deleting engine/")
rmSync(ENGINE_DIR)
await setupFirefoxSource(version)
}
for (const addon of getAddons()) {
const downloadUrl = await resolveAddonDownloadUrl(addon)
const downloadedXPI = await downloadAddon(downloadUrl, addon)
await unpackAddon(downloadedXPI, addon)
await generateAddonMozBuild(addon)
await initializeAddon(addon)
}
await addAddonsToMozBuild(getAddons())
config.version.version = version
writeFileSync(configPath, JSON.stringify(config, undefined, 2))
}

View file

@ -6,56 +6,14 @@ import { bin_name, config } from '..'
import { log } from '../log' import { log } from '../log'
import { import {
setupFirefoxSource, downloadInternals
shouldSetupFirefoxSource,
} from './download/firefox' } from './download/firefox'
import {
addAddonsToMozBuild,
downloadAddon,
generateAddonMozBuild,
getAddons,
initializeAddon,
resolveAddonDownloadUrl,
unpackAddon,
} from './download/addon'
import { getLatestFF } from '../utils' import { getLatestFF } from '../utils'
import { rmSync } from 'node:fs'
import { ENGINE_DIR } from '../constants'
export const update = async (): Promise<void> => { export const update = async (): Promise<void> => {
const version = await getLatestFF(config.version.product) const version = await getLatestFF(config.version.product)
// If gFFVersion isn't specified, provide legible error await downloadInternals(version)
if (!version) {
log.error(
'You have not specified a version of firefox in your config file. This is required to build a firefox fork.'
)
process.exit(1)
}
if (!shouldSetupFirefoxSource()) {
log.info('Remove ' + ENGINE_DIR)
rmSync(ENGINE_DIR, {
recursive: true,
force: true
})
log.info('Download Firefox ' + version)
await setupFirefoxSource(version)
} else {
log.error(`Firefox is missing, run |${bin_name} download| instead.`)
process.exit(1)
}
for (const addon of getAddons()) {
const downloadUrl = await resolveAddonDownloadUrl(addon)
const downloadedXPI = await downloadAddon(downloadUrl, addon)
await unpackAddon(downloadedXPI, addon)
await generateAddonMozBuild(addon)
await initializeAddon(addon)
}
await addAddonsToMozBuild(getAddons())
log.success( log.success(
`Firefox has sucessfully been updated to ${version}.`, `Firefox has sucessfully been updated to ${version}.`,