mirror of
https://github.com/anidl/multi-downloader-nx.git
synced 2026-03-11 17:45:30 +00:00
Rework Building
Should now be more modular, at the cost of human-readable names. It can now be used to build android versions, alpine versions, as well as arm for each supported platform
This commit is contained in:
parent
103b17f449
commit
03e3c96f3c
5 changed files with 40 additions and 31 deletions
7
.github/workflows/release-matrix.yml
vendored
7
.github/workflows/release-matrix.yml
vendored
|
|
@ -8,9 +8,10 @@ jobs:
|
|||
build:
|
||||
strategy:
|
||||
matrix:
|
||||
build_type: [ ubuntu, macos, windows ]
|
||||
build_type: [ linux, macos, windows ]
|
||||
build_arch: [ x64 ]
|
||||
gui: [ gui, cli ]
|
||||
runs-on: ${{ matrix.build_type }}-latest
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
|
|
@ -38,7 +39,7 @@ jobs:
|
|||
with:
|
||||
upload_url: ${{ github.event.release.upload_url }}
|
||||
asset_name: multi-downloader-nx-${{ matrix.build_type }}-${{ matrix.gui }}.7z
|
||||
asset_path: ./lib/_builds/multi-downloader-nx-${{ matrix.build_type }}64-${{ matrix.gui }}.7z
|
||||
asset_path: ./lib/_builds/multi-downloader-nx-${{ matrix.build_type }}-${{ matrix.build_arch }}-${{ matrix.gui }}.7z
|
||||
asset_content_type: application/x-7z-compressed
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
|
|
|||
|
|
@ -15,13 +15,13 @@ RUN echo 'ffmpeg: "./bin/ffmpeg/ffmpeg"\nmkvmerge: "./bin/mkvtoolnix/mkvmerge"'
|
|||
|
||||
RUN npm install -g pnpm
|
||||
RUN pnpm i
|
||||
RUN pnpm run build-ubuntu-gui
|
||||
RUN pnpm run build-linux-gui
|
||||
|
||||
# Move build to new Clean Image
|
||||
|
||||
FROM node
|
||||
WORKDIR "/app"
|
||||
COPY --from=builder /app/lib/_builds/multi-downloader-nx-ubuntu64-gui ./
|
||||
COPY --from=builder /app/lib/_builds/multi-downloader-nx-linux64-gui ./
|
||||
|
||||
# Install mkvmerge and ffmpeg
|
||||
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ Afterwards run `pnpm run tsc false [true if you want gui, false otherwise]`.
|
|||
|
||||
If you want the `js` files you are done. Just `cd` into the `lib` folder, and run `node index.js --help` to get started with the CLI, or run `node gui.js` to run the GUI
|
||||
|
||||
If you want to package the application, run pnpm run build-`{platform}`-`{type}` where `{platform}` is the operating system (currently the choices are windows, ubuntu, macos, and arm) and `{type}` is cli or gui.
|
||||
If you want to package the application, run pnpm run build-`{platform}`-`{type}` where `{platform}` is the operating system (currently the choices are windows, linux, macos, alpine, android, and arm) and `{type}` is cli or gui.
|
||||
|
||||
## DRM Decryption
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import { console } from './log';
|
|||
const buildsDir = './_builds';
|
||||
const nodeVer = 'node18-';
|
||||
|
||||
type BuildTypes = `${'ubuntu'|'windows'|'macos'|'arm'}64`
|
||||
type BuildTypes = `${'windows'|'macos'|'linux'|'linuxstatic'|'alpine'}-${'x64'|'arm64'}`|'linuxstatic-armv7'
|
||||
|
||||
(async () => {
|
||||
const buildType = process.argv[2] as BuildTypes;
|
||||
|
|
@ -21,16 +21,23 @@ type BuildTypes = `${'ubuntu'|'windows'|'macos'|'arm'}64`
|
|||
// main
|
||||
async function buildBinary(buildType: BuildTypes, gui: boolean) {
|
||||
const buildStr = 'multi-downloader-nx';
|
||||
const acceptableBuilds = ['windows64','ubuntu64','macos64'];
|
||||
const acceptablePlatforms = ['windows','linux','linuxstatic','macos','alpine'];
|
||||
const acceptableArchs = ['x64','arm64'];
|
||||
const acceptableBuilds: string[] = ['linuxstatic-armv7'];
|
||||
for (const platform of acceptablePlatforms) {
|
||||
for (const arch of acceptableArchs) {
|
||||
acceptableBuilds.push(platform+'-'+arch);
|
||||
}
|
||||
}
|
||||
if(!acceptableBuilds.includes(buildType)){
|
||||
console.error('[ERROR] unknown build type!');
|
||||
console.error('Unknown build type!');
|
||||
process.exit(1);
|
||||
}
|
||||
await modulesCleanup('.');
|
||||
if(!fs.existsSync(buildsDir)){
|
||||
fs.mkdirSync(buildsDir);
|
||||
}
|
||||
const buildFull = `${buildStr}-${buildType}-${gui ? 'gui' : 'cli'}`;
|
||||
const buildFull = `${buildStr}-${getFriendlyName(buildType)}-${gui ? 'gui' : 'cli'}`;
|
||||
const buildDir = `${buildsDir}/${buildFull}`;
|
||||
if(fs.existsSync(buildDir)){
|
||||
fs.removeSync(buildDir);
|
||||
|
|
@ -38,7 +45,7 @@ async function buildBinary(buildType: BuildTypes, gui: boolean) {
|
|||
fs.mkdirSync(buildDir);
|
||||
const buildConfig = [
|
||||
gui ? 'gui.js' : 'index.js',
|
||||
'--target', nodeVer + getTarget(buildType),
|
||||
'--target', nodeVer + buildType,
|
||||
'--output', `${buildDir}/${pkg.short_name}`,
|
||||
];
|
||||
console.info(`[Build] Build configuration: ${buildFull}`);
|
||||
|
|
@ -70,15 +77,12 @@ async function buildBinary(buildType: BuildTypes, gui: boolean) {
|
|||
execSync(`7z a -t7z "${buildsDir}/${buildFull}.7z" "${buildDir}"`,{stdio:[0,1,2]});
|
||||
}
|
||||
|
||||
function getTarget(bt: string) : string {
|
||||
switch(bt){
|
||||
case 'windows64':
|
||||
return 'windows-x64';
|
||||
case 'ubuntu64':
|
||||
return 'linux-x64';
|
||||
case 'macos64':
|
||||
return 'macos-x64';
|
||||
default:
|
||||
return 'windows-x64';
|
||||
function getFriendlyName(buildString: string): string {
|
||||
if (buildString.includes('armv7')) {
|
||||
return 'android';
|
||||
}
|
||||
}
|
||||
if (buildString.includes('linuxstatic')) {
|
||||
buildString = buildString.replace('linuxstatic', 'linux');
|
||||
}
|
||||
return buildString;
|
||||
}
|
||||
22
package.json
22
package.json
|
|
@ -97,18 +97,22 @@
|
|||
"docs": "ts-node modules/build-docs.ts",
|
||||
"tsc": "ts-node tsc.ts",
|
||||
"prebuild-cli": "pnpm run tsc false false",
|
||||
"build-windows-cli": "pnpm run prebuild-cli && cd lib && node modules/build windows64",
|
||||
"build-ubuntu-cli": "pnpm run prebuild-cli && cd lib && node modules/build ubuntu64",
|
||||
"build-arm-cli": "pnpm run prebuild-cli && cd lib && node modules/build arm64",
|
||||
"build-macos-cli": "pnpm run prebuild-cli && cd lib && node modules/build macos64",
|
||||
"build-windows-cli": "pnpm run prebuild-cli && cd lib && node modules/build windows-x64",
|
||||
"build-linux-cli": "pnpm run prebuild-cli && cd lib && node modules/build linux-x64",
|
||||
"build-arm-cli": "pnpm run prebuild-cli && cd lib && node modules/build linux-arm64",
|
||||
"build-macos-cli": "pnpm run prebuild-cli && cd lib && node modules/build macos-x64",
|
||||
"build-alpine-cli": "pnpm run prebuild-cli && cd lib && node modules/build alpine-x64",
|
||||
"build-android-cli": "pnpm run prebuild-cli && cd lib && node modules/build linuxstatic-armv7",
|
||||
"prebuild-gui": "pnpm run tsc",
|
||||
"build-windows-gui": "pnpm run prebuild-gui && cd lib && node modules/build windows64 true",
|
||||
"build-ubuntu-gui": "pnpm run prebuild-gui && cd lib && node modules/build ubuntu64 true",
|
||||
"build-arm-gui": "pnpm run prebuild-gui && cd lib && node modules/build arm64 true",
|
||||
"build-macos-gui": "pnpm run prebuild-gui && cd lib && node modules/build macos64 true",
|
||||
"build-windows-gui": "pnpm run prebuild-gui && cd lib && node modules/build windows-x64 true",
|
||||
"build-linux-gui": "pnpm run prebuild-gui && cd lib && node modules/build linux-x64 true",
|
||||
"build-arm-gui": "pnpm run prebuild-gui && cd lib && node modules/build linux-arm64 true",
|
||||
"build-macos-gui": "pnpm run prebuild-gui && cd lib && node modules/build macos-x64 true",
|
||||
"build-alpine-gui": "pnpm run prebuild-gui && cd lib && node modules/build alpine-x64 true",
|
||||
"build-android-gui": "pnpm run prebuild-gui && cd lib && node modules/build linuxstatic-armv7 true",
|
||||
"eslint": "eslint *.js modules",
|
||||
"eslint-fix": "eslint *.js modules --fix",
|
||||
"pretest": "pnpm run tsc",
|
||||
"test": "pnpm run pretest && cd lib && node modules/build windows64 && node modules/build ubuntu64 && node modules/build macos64"
|
||||
"test": "pnpm run pretest && cd lib && node modules/build windows-x64 && node modules/build linux-x64 && node modules/build macos-x64 && node modules/build alpine-x64"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue