diff --git a/.github/workflows/package-windows.yml b/.github/workflows/package-windows.yml index f9ca320..d72d3af 100644 --- a/.github/workflows/package-windows.yml +++ b/.github/workflows/package-windows.yml @@ -23,6 +23,16 @@ on: jobs: build: + strategy: + matrix: + entry: [ kcc, kcc-c2e, kcc-c2p ] + include: + - entry: kcc + command: build_binary + - entry: kcc-c2e + command: build_c2e + - entry: kcc-c2p + command: build_c2p runs-on: windows-latest steps: - uses: actions/checkout@v5 @@ -40,12 +50,12 @@ jobs: pip install certifi pyinstaller --no-binary pyinstaller - name: build binary run: | - python setup.py build_binary + python setup.py {{ matrix.command }} - name: upload-unsigned-artifact id: upload-unsigned-artifact uses: actions/upload-artifact@v4 with: - name: windows-build + name: windows-build-{{ matrix.entry }} path: dist/*.exe - id: optional_step_id uses: signpath/github-action-submit-signing-request@v1.3 @@ -65,5 +75,4 @@ jobs: prerelease: true generate_release_notes: true files: | - LICENSE.txt dist/*.exe diff --git a/setup.py b/setup.py index 0ab5f9d..4c12836 100644 --- a/setup.py +++ b/setup.py @@ -8,6 +8,8 @@ Install as Python package: Create EXE/APP: python3 setup.py build_binary + python3 setup.py build_c2e + python3 setup.py build_c2p """ import os @@ -57,10 +59,75 @@ class BuildBinaryCommand(setuptools.Command): else: sys.exit(0) +# noinspection PyUnresolvedReferences +class BuildC2ECommand(setuptools.Command): + description = 'build binary c2e release' + user_options = [] + + def initialize_options(self): + pass + + def finalize_options(self): + pass + + # noinspection PyShadowingNames + def run(self): + VERSION = __version__ + if sys.platform == 'darwin': + os.system('pyinstaller --hidden-import=_cffi_backend -y -D -i icons/comic2ebook.icns -n "KCC C2E" -c -s kcc-c2e.py') + # TODO /usr/bin/codesign --force -s "$MACOS_CERTIFICATE_NAME" --options runtime dist/Applications/Kindle\ Comic\ Converter.app -v + sys.exit(0) + elif sys.platform == 'win32': + if os.getenv('WINDOWS_7'): + os.system('pyinstaller --hidden-import=_cffi_backend -y -F -i icons\\comic2ebook.ico -n kcc_c2e_win7_legacy_' + VERSION + ' -c --noupx kcc-c2e.py') + else: + os.system('pyinstaller --hidden-import=_cffi_backend -y -F -i icons\\comic2ebook.ico -n kcc_c2e_' + VERSION + ' -c --noupx kcc-c2e.py') + sys.exit(0) + elif sys.platform == 'linux': + os.system( + 'pyinstaller --hidden-import=_cffi_backend --hidden-import=queue -y -F -i icons/comic2ebook.ico -n kcc_c2e_linux_' + VERSION + ' kcc-c2e.py') + sys.exit(0) + else: + sys.exit(0) + + +# noinspection PyUnresolvedReferences +class BuildC2PCommand(setuptools.Command): + description = 'build binary c2p release' + user_options = [] + + def initialize_options(self): + pass + + def finalize_options(self): + pass + + # noinspection PyShadowingNames + def run(self): + VERSION = __version__ + if sys.platform == 'darwin': + os.system('pyinstaller --hidden-import=_cffi_backend -y -n "KCC C2P" -c -s kcc-c2p.py') + # TODO /usr/bin/codesign --force -s "$MACOS_CERTIFICATE_NAME" --options runtime dist/Applications/Kindle\ Comic\ Converter.app -v + sys.exit(0) + elif sys.platform == 'win32': + if os.getenv('WINDOWS_7'): + os.system('pyinstaller --hidden-import=_cffi_backend -y -F -i icons\\comic2ebook.ico -n kcc_c2p_win7_legacy_' + VERSION + ' -c --noupx kcc-c2p.py') + else: + os.system('pyinstaller --hidden-import=_cffi_backend -y -F -i icons\\comic2ebook.ico -n KCC_C2P_' + VERSION + ' -c --noupx kcc-c2p.py') + sys.exit(0) + elif sys.platform == 'linux': + os.system( + 'pyinstaller --hidden-import=_cffi_backend --hidden-import=queue -y -F -i icons/comic2ebook.ico -n kcc_c2p_linux_' + VERSION + ' kcc-c2p.py') + sys.exit(0) + else: + sys.exit(0) + setuptools.setup( cmdclass={ 'build_binary': BuildBinaryCommand, + 'build_c2e': BuildC2ECommand, + 'build_c2p': BuildC2PCommand, }, name=NAME, version=VERSION,