Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 60 additions & 8 deletions .github/workflows/release-binaries.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,20 @@ jobs:
- name: Download Binaries
run: sh ./build/index.sh

- name: Compress Binaries
run: |
set -e
set -o pipefail
cat bin/darwin-x64 | gzip --best >bin/darwin-x64.gz
cat bin/linux-arm | gzip --best >bin/linux-arm.gz
cat bin/linux-arm64 | gzip --best >bin/linux-arm64.gz
cat bin/linux-ia32 | gzip --best >bin/linux-ia32.gz
cat bin/linux-x64 | gzip --best >bin/linux-x64.gz
cat bin/win32-ia32 | gzip --best >bin/win32-ia32.gz
cat bin/win32-x64 | gzip --best >bin/win32-x64.gz
ls -l bin
shell: bash

- name: Create Release
id: create_release
uses: actions/create-release@v1
Expand All @@ -31,6 +45,14 @@ jobs:
asset_path: bin/darwin-x64
asset_name: darwin-x64
asset_content_type: application/octet-stream
- uses: actions/upload-release-asset@v1.0.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: bin/darwin-x64.gz
asset_name: darwin-x64.gz
asset_content_type: application/octet-stream

- uses: actions/upload-release-asset@v1.0.1
env:
Expand All @@ -49,6 +71,14 @@ jobs:
asset_path: bin/linux-arm
asset_name: linux-arm
asset_content_type: application/octet-stream
- uses: actions/upload-release-asset@v1.0.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: bin/linux-arm.gz
asset_name: linux-arm.gz
asset_content_type: application/octet-stream

- uses: actions/upload-release-asset@v1.0.1
env:
Expand Down Expand Up @@ -76,6 +106,14 @@ jobs:
asset_path: bin/linux-arm64
asset_name: linux-arm64
asset_content_type: application/octet-stream
- uses: actions/upload-release-asset@v1.0.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: bin/linux-arm64.gz
asset_name: linux-arm64.gz
asset_content_type: application/octet-stream

- uses: actions/upload-release-asset@v1.0.1
env:
Expand Down Expand Up @@ -103,6 +141,14 @@ jobs:
asset_path: bin/linux-ia32
asset_name: linux-ia32
asset_content_type: application/octet-stream
- uses: actions/upload-release-asset@v1.0.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: bin/linux-ia32.gz
asset_name: linux-ia32.gz
asset_content_type: application/octet-stream

- uses: actions/upload-release-asset@v1.0.1
env:
Expand Down Expand Up @@ -130,6 +176,14 @@ jobs:
asset_path: bin/linux-x64
asset_name: linux-x64
asset_content_type: application/octet-stream
- uses: actions/upload-release-asset@v1.0.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: bin/linux-x64.gz
asset_name: linux-x64.gz
asset_content_type: application/octet-stream

- uses: actions/upload-release-asset@v1.0.1
env:
Expand Down Expand Up @@ -157,15 +211,14 @@ jobs:
asset_path: bin/win32-ia32
asset_name: win32-ia32
asset_content_type: application/octet-stream

- uses: actions/upload-release-asset@v1.0.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: bin/win32-ia32.README
asset_name: win32-ia32.README
asset_content_type: text/plain
asset_path: bin/win32-ia32.gz
asset_name: win32-ia32.gz
asset_content_type: application/octet-stream

- uses: actions/upload-release-asset@v1.0.1
env:
Expand All @@ -184,15 +237,14 @@ jobs:
asset_path: bin/win32-x64
asset_name: win32-x64
asset_content_type: application/octet-stream

- uses: actions/upload-release-asset@v1.0.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: bin/win32-x64.README
asset_name: win32-x64.README
asset_content_type: text/plain
asset_path: bin/win32-x64.gz
asset_name: win32-x64.gz
asset_content_type: application/octet-stream

- uses: actions/upload-release-asset@v1.0.1
env:
Expand Down
2 changes: 1 addition & 1 deletion build/index.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ set -e
echo using tar executable at $tar_exec

download () {
curl -L -# --compressed -A 'https://github.com/eugeneware/ffmpeg-static' -o $2 $1
curl -L -# --compressed -A 'https://github.com/eugeneware/ffmpeg-static build script' -o $2 $1
}

echo 'windows x64'
Expand Down
33 changes: 27 additions & 6 deletions install.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,11 @@ const {encode: encodeQuery} = require('querystring')
const {strictEqual} = require('assert')
const envPaths = require('env-paths')
const FileCache = require('@derhuerst/http-basic/lib/FileCache').default
const {extname} = require('path')
var ProgressBar = require("progress");
var request = require('@derhuerst/http-basic')
const {createGunzip} = require('zlib')
const {pipeline} = require('stream')
var ffmpegPath = require(".");
var pkg = require("./package");

Expand Down Expand Up @@ -71,6 +74,12 @@ cache.getCacheKey = (url) => {
return FileCache.prototype.getCacheKey(normalizeS3Url(url))
}

const isGzUrl = (url) => {
const path = new URL(url).pathname.split('/')
const filename = path[path.length - 1]
return filename && extname(filename) === '.gz'
}

const noop = () => {}
function downloadFile(url, destinationPath, progressCallback = noop) {
let fulfill, reject;
Expand Down Expand Up @@ -101,9 +110,19 @@ function downloadFile(url, destinationPath, progressCallback = noop) {
}

const file = fs.createWriteStream(destinationPath);
file.on("finish", () => fulfill());
file.on("error", error => reject(error));
response.body.pipe(file)
const streams = isGzUrl(url)
? [response.body, createGunzip(), file]
: [response.body, file]
pipeline(
...streams,
(err) => {
if (err) {
err.url = response.url
err.statusCode = response.statusCode
reject(err)
} else fulfill()
}
)

if (!response.fromCache && progressCallback) {
const cLength = response.headers["content-length"]
Expand Down Expand Up @@ -142,9 +161,11 @@ const releaseName = (
)
const arch = process.env.npm_config_arch || os.arch()
const platform = process.env.npm_config_platform || os.platform()
const downloadUrl = `https://github.com/eugeneware/ffmpeg-static/releases/download/${release}/${platform}-${arch}`
const readmeUrl = `${downloadUrl}.README`
const licenseUrl = `${downloadUrl}.LICENSE`

const baseUrl = `https://github.com/eugeneware/ffmpeg-static/releases/download/${release}`
const downloadUrl = `${baseUrl}/${platform}-${arch}.gz`
const readmeUrl = `${baseUrl}/${platform}-${arch}.README`
const licenseUrl = `${baseUrl}/${platform}-${arch}.LICENSE`

downloadFile(downloadUrl, ffmpegPath, onProgress)
.then(() => {
Expand Down