jellyfin / jellyfin-webos

WebOS Client for Jellyfin
https://jellyfin.org
Mozilla Public License 2.0
638 stars 65 forks source link

Split service/frontend, fix file duplication while packaging, add instructions for npm build env #66

Closed tuxuser closed 2 years ago

tuxuser commented 2 years ago

Hi!

Overview of this PR:

Bonus:

NOTE: The npm dependency webosose/ares-cli allows a standalone / non-SDK build process and almost eliminates the need for the full blown WebOS SDK to be installed.

Almost because it's missing two ares-tools:

Duplicated files inside ipk

IPK content before refactoring:

[~/Development/personal/lgtv/jellyfin-webos/org.jellyfin.webos/build] ar x org.jellyfin.webos_1.0.0_all.ipk 
[~/Development/personal/lgtv/jellyfin-webos/org.jellyfin.webos/build] task/package_json+ ± tar xf data.tar.gz 
[~/Development/personal/lgtv/jellyfin-webos/org.jellyfin.webos/build] task/package_json+ ± find usr/
usr/
usr/palm
usr/palm/applications
usr/palm/applications/org.jellyfin.webos
usr/palm/applications/org.jellyfin.webos/css
usr/palm/applications/org.jellyfin.webos/css/webOS.css
usr/palm/applications/org.jellyfin.webos/css/main.css
usr/palm/applications/org.jellyfin.webos/appinfo.json
usr/palm/applications/org.jellyfin.webos/index.html
usr/palm/applications/org.jellyfin.webos/.project
usr/palm/applications/org.jellyfin.webos/webOSTVjs-1.2.2
usr/palm/applications/org.jellyfin.webos/webOSTVjs-1.2.2/webOSTV-dev.js
usr/palm/applications/org.jellyfin.webos/webOSTVjs-1.2.2/webOSTV.js
usr/palm/applications/org.jellyfin.webos/webOSTVjs-1.2.2/LICENSE-2.0.txt
usr/palm/applications/org.jellyfin.webos/tools
usr/palm/applications/org.jellyfin.webos/tools/gen-manifest.js
usr/palm/applications/org.jellyfin.webos/tools/sync-version.js
usr/palm/applications/org.jellyfin.webos/package.json
usr/palm/applications/org.jellyfin.webos/services.json
usr/palm/applications/org.jellyfin.webos/build
usr/palm/applications/org.jellyfin.webos/js
usr/palm/applications/org.jellyfin.webos/js/index.js
usr/palm/applications/org.jellyfin.webos/js/ajax.js
usr/palm/applications/org.jellyfin.webos/js/webOS.js
usr/palm/applications/org.jellyfin.webos/js/storage.js
usr/palm/applications/org.jellyfin.webos/submission-icon.png
usr/palm/applications/org.jellyfin.webos/jellyfin_service.js
usr/palm/applications/org.jellyfin.webos/assets
usr/palm/applications/org.jellyfin.webos/assets/splash.png
usr/palm/applications/org.jellyfin.webos/assets/icon-transparent80.png
usr/palm/applications/org.jellyfin.webos/assets/banner-dark.png
usr/palm/applications/org.jellyfin.webos/assets/icon-transparent130.png
usr/palm/applications/org.jellyfin.webos/assets/icon-80.png
usr/palm/applications/org.jellyfin.webos/assets/icon-130.png
usr/palm/services
usr/palm/services/org.jellyfin.webos.service
usr/palm/services/org.jellyfin.webos.service/css
usr/palm/services/org.jellyfin.webos.service/css/webOS.css
usr/palm/services/org.jellyfin.webos.service/css/main.css
usr/palm/services/org.jellyfin.webos.service/appinfo.json
usr/palm/services/org.jellyfin.webos.service/index.html
usr/palm/services/org.jellyfin.webos.service/.project
usr/palm/services/org.jellyfin.webos.service/webOSTVjs-1.2.2
usr/palm/services/org.jellyfin.webos.service/webOSTVjs-1.2.2/webOSTV-dev.js
usr/palm/services/org.jellyfin.webos.service/webOSTVjs-1.2.2/webOSTV.js
usr/palm/services/org.jellyfin.webos.service/webOSTVjs-1.2.2/LICENSE-2.0.txt
usr/palm/services/org.jellyfin.webos.service/tools
usr/palm/services/org.jellyfin.webos.service/tools/gen-manifest.js
usr/palm/services/org.jellyfin.webos.service/tools/sync-version.js
usr/palm/services/org.jellyfin.webos.service/package.json
usr/palm/services/org.jellyfin.webos.service/services.json
usr/palm/services/org.jellyfin.webos.service/build
usr/palm/services/org.jellyfin.webos.service/js
usr/palm/services/org.jellyfin.webos.service/js/index.js
usr/palm/services/org.jellyfin.webos.service/js/ajax.js
usr/palm/services/org.jellyfin.webos.service/js/webOS.js
usr/palm/services/org.jellyfin.webos.service/js/storage.js
usr/palm/services/org.jellyfin.webos.service/submission-icon.png
usr/palm/services/org.jellyfin.webos.service/jellyfin_service.js
usr/palm/services/org.jellyfin.webos.service/assets
usr/palm/services/org.jellyfin.webos.service/assets/splash.png
usr/palm/services/org.jellyfin.webos.service/assets/icon-transparent80.png
usr/palm/services/org.jellyfin.webos.service/assets/banner-dark.png
usr/palm/services/org.jellyfin.webos.service/assets/icon-transparent130.png
usr/palm/services/org.jellyfin.webos.service/assets/icon-80.png
usr/palm/services/org.jellyfin.webos.service/assets/icon-130.png
usr/palm/packages
usr/palm/packages/org.jellyfin.webos
usr/palm/packages/org.jellyfin.webos/packageinfo.json

IPK content after

usr
usr/palm
usr/palm/applications
usr/palm/applications/org.jellyfin.webos
usr/palm/applications/org.jellyfin.webos/css
usr/palm/applications/org.jellyfin.webos/css/webOS.css
usr/palm/applications/org.jellyfin.webos/css/main.css
usr/palm/applications/org.jellyfin.webos/appinfo.json
usr/palm/applications/org.jellyfin.webos/index.html
usr/palm/applications/org.jellyfin.webos/.project
usr/palm/applications/org.jellyfin.webos/webOSTVjs-1.2.2
usr/palm/applications/org.jellyfin.webos/webOSTVjs-1.2.2/webOSTV-dev.js
usr/palm/applications/org.jellyfin.webos/webOSTVjs-1.2.2/webOSTV.js
usr/palm/applications/org.jellyfin.webos/webOSTVjs-1.2.2/LICENSE-2.0.txt
usr/palm/applications/org.jellyfin.webos/js
usr/palm/applications/org.jellyfin.webos/js/index.js
usr/palm/applications/org.jellyfin.webos/js/ajax.js
usr/palm/applications/org.jellyfin.webos/js/webOS.js
usr/palm/applications/org.jellyfin.webos/js/storage.js
usr/palm/applications/org.jellyfin.webos/submission-icon.png
usr/palm/applications/org.jellyfin.webos/assets
usr/palm/applications/org.jellyfin.webos/assets/splash.png
usr/palm/applications/org.jellyfin.webos/assets/icon-transparent80.png
usr/palm/applications/org.jellyfin.webos/assets/banner-dark.png
usr/palm/applications/org.jellyfin.webos/assets/icon-transparent130.png
usr/palm/applications/org.jellyfin.webos/assets/icon-80.png
usr/palm/applications/org.jellyfin.webos/assets/icon-130.png
usr/palm/services
usr/palm/services/org.jellyfin.webos.service
usr/palm/services/org.jellyfin.webos.service/service.js
usr/palm/services/org.jellyfin.webos.service/package.json
usr/palm/services/org.jellyfin.webos.service/services.json
usr/palm/packages
usr/palm/packages/org.jellyfin.webos
usr/palm/packages/org.jellyfin.webos/packageinfo.json

Cleanup repo structure

The repository contains the "master" package.json file in its root, a service-only package.json file is located inside services/. Also, webosose/ares-cli is now listed as a dependency so the project can be built without webos SDK being installed.

README

README is updated with instructions on how to use npm for building.

Informatic commented 2 years ago

Two cents. Considering how flaky unpinned npm installs can be, I would suggest: