From 7ff73e13c795ef1e84b6a6f09fb9347de3600947 Mon Sep 17 00:00:00 2001 From: msojocs Date: Fri, 11 Mar 2022 22:44:35 +0800 Subject: [PATCH 01/21] test --- .../github.msojocs.wechat-devtools.yml | 13 ++++ tools/build-flatpak.sh | 75 +++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 res/flatpak/github.msojocs.wechat-devtools.yml create mode 100755 tools/build-flatpak.sh diff --git a/res/flatpak/github.msojocs.wechat-devtools.yml b/res/flatpak/github.msojocs.wechat-devtools.yml new file mode 100644 index 0000000..df8917b --- /dev/null +++ b/res/flatpak/github.msojocs.wechat-devtools.yml @@ -0,0 +1,13 @@ +app-id: github.msojocs.wechat-devtools +runtime: org.freedesktop.Platform +runtime-version: '21.08' +sdk: org.freedesktop.Sdk +command: hello.sh +modules: + - name: hello + buildsystem: simple + build-commands: + - install -D hello.sh /app/bin/hello.sh + sources: + - type: file + path: hello.sh \ No newline at end of file diff --git a/tools/build-flatpak.sh b/tools/build-flatpak.sh new file mode 100755 index 0000000..925a1e0 --- /dev/null +++ b/tools/build-flatpak.sh @@ -0,0 +1,75 @@ +#!/bin/bash + +# 参数: +# $1 - 版本 v1.05.2203030-2 +# $2 - 平台 x86_64 + +set -e +notice() { + echo -e "\033[36m $1 \033[0m " +} +fail() { + echo -e "\033[41;37m 失败 \033[0m $1" +} + +if [ -n "$1" ];then + export VERSION=$1 +fi +if [ -n "$2" ];then + export ARCH=$2 +fi + +if [[ $VERSION == '' ]];then + fail "请指定版本" + exit 1 +elif [[ $ARCH == '' ]];then + fail "请指定架构" + exit 1 +fi + +if [[ $NO_WINE == 'true' ]];then + TYPE='no_wine' +else + TYPE='wine' +fi + +root_dir=$(cd `dirname $0`/.. && pwd -P) +tmp_dir="$root_dir/tmp" +app_dir="$tmp_dir/Flatpak" +build_dir="$tmp_dir/build" +mkdir -p $build_dir + +notice "检查版本号" +DEVTOOLS_VERSION=$( cat "$root_dir/package.nw/package.json" | grep -m 1 -Eo "\"[0-9]{1}\.[0-9]{2}\.[0-9]+" ) +DEVTOOLS_VERSION="${DEVTOOLS_VERSION//\"/}" +INPUT_VERSION=$( echo $VERSION | sed 's/v//' | sed 's/-.*//' ) +if [[ "$INPUT_VERSION" != "$DEVTOOLS_VERSION" ]];then + fail "传入版本号与实际版本号不一致!" + exit 1 +fi + +# Remove any previous build +rm -rf $app_dir +# Make usr and icons dirs +mkdir -p $app_dir/bin +mkdir -p $app_dir/usr/{src,bin} +mkdir -p $app_dir/usr/share/{metainfo,icons,applications} + +notice "COPY FILES" +cp "$root_dir/bin/wechat-devtools" "$app_dir/bin/wechat-devtools" +cp "$root_dir/res/icons/wechat-devtools.png" "$app_dir/wechat-devtools.png" +\cp -rf "$root_dir/res/flatpak"/* "$app_dir" +cp $root_dir/res/template.desktop "$app_dir/github.msojocs.wechat_devtools.desktop" + +cp -r "$root_dir/package.nw" "$app_dir/package.nw" +cp -r "$root_dir/nwjs" "$app_dir/nwjs" +if [ -f $root_dir/node/bin/node ];then + rm -rf "$app_dir/nwjs/node" "$app_dir/nwjs/node.exe" + cp "$root_dir/node/bin/node" "$app_dir/nwjs/node" + cd "$app_dir/nwjs/" && ln -s "node" "node.exe" +fi +cd "$app_dir" + +# appimagetool $app_dir +notice "MAKE FLATPAK" + From e463415599a04fae282cb36e8a5d3ee2ebae2239 Mon Sep 17 00:00:00 2001 From: msojocs Date: Tue, 22 Mar 2022 22:58:52 +0800 Subject: [PATCH 02/21] feat: flatpak --- .vscode/settings.json | 10 ++++ .../github.msojocs.wechat-devtools.yml | 13 ----- .../io.github.msojocs.wechat-devtools.yml | 57 +++++++++++++++++++ tools/build-flatpak.sh | 47 +++++++-------- 4 files changed, 89 insertions(+), 38 deletions(-) create mode 100644 .vscode/settings.json delete mode 100644 res/flatpak/github.msojocs.wechat-devtools.yml create mode 100644 res/flatpak/io.github.msojocs.wechat-devtools.yml diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..f8cf3bb --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,10 @@ +{ + "files.watcherExclude": { + "**/.git/objects/**": true, + "**/.git/subtree-cache/**": true, + "**/node_modules/*/**": true, + "**/.hg/store/**": true, + ".flatpak/**": true, + "_build/**": true + } +} \ No newline at end of file diff --git a/res/flatpak/github.msojocs.wechat-devtools.yml b/res/flatpak/github.msojocs.wechat-devtools.yml deleted file mode 100644 index df8917b..0000000 --- a/res/flatpak/github.msojocs.wechat-devtools.yml +++ /dev/null @@ -1,13 +0,0 @@ -app-id: github.msojocs.wechat-devtools -runtime: org.freedesktop.Platform -runtime-version: '21.08' -sdk: org.freedesktop.Sdk -command: hello.sh -modules: - - name: hello - buildsystem: simple - build-commands: - - install -D hello.sh /app/bin/hello.sh - sources: - - type: file - path: hello.sh \ No newline at end of file diff --git a/res/flatpak/io.github.msojocs.wechat-devtools.yml b/res/flatpak/io.github.msojocs.wechat-devtools.yml new file mode 100644 index 0000000..4baab47 --- /dev/null +++ b/res/flatpak/io.github.msojocs.wechat-devtools.yml @@ -0,0 +1,57 @@ +app-id: io.github.msojocs.wechat-devtools +runtime: org.freedesktop.Platform +runtime-version: '21.08' +sdk: org.freedesktop.Sdk +command: startup +finish-args: + # X11 + XShm access + - --share=ipc + - --socket=x11 + # Wayland access + - --socket=wayland + # Needs to talk to the network: + - --share=network + # Needs to save files locally + - --filesystem=host + - --metadata=X-DConf=migrate-path=/org/gnome/dictionary/ +modules: + - name: nwjs + buildsystem: simple + sources: + - type: dir + # url: https://npm.taobao.org/mirrors/nwjs/v0.53.1/nwjs-sdk-v0.53.1-linux-x64.tar.gz + # md5: b6f49803c51d0abacca2d1e566c7fe19 + path: nwjs + build-commands: + - ls -l + - rm package.nw + - mkdir -p /app/opt/nwjs + - cp -r . /app/opt/nwjs + - name: package.nw + buildsystem: simple + sources: + - type: dir + # url: https://npm.taobao.org/mirrors/nwjs/v0.53.1/nwjs-sdk-v0.53.1-linux-x64.tar.gz + # md5: b6f49803c51d0abacca2d1e566c7fe19 + path: package.nw + build-commands: + - ls -l + - mkdir -p /app/opt/package.nw + - cp -r . /app/opt/package.nw + - name: wechat-devtools + buildsystem: simple + build-commands: + - install -Dm755 wechat-devtools /app/opt/bin/wechat-devtools + - install -Dm755 startup.sh /app/bin/startup + - install -Dm644 io.github.msojocs.wechat_devtools.desktop /app/share/applications/io.github.msojocs.wechat-devtools.desktop + - install -Dm644 io.github.msojocs.wechat_devtools.svg /app/share/icons/hicolor/scalable/apps/io.github.msojocs.wechat-devtools.svg + sources: + - type: file + path: bin/wechat-devtools + - type: file + path: startup.sh + - type: file + path: io.github.msojocs.wechat_devtools.desktop + - type: file + path: io.github.msojocs.wechat_devtools.svg + diff --git a/tools/build-flatpak.sh b/tools/build-flatpak.sh index 925a1e0..30fbf2f 100755 --- a/tools/build-flatpak.sh +++ b/tools/build-flatpak.sh @@ -19,20 +19,6 @@ if [ -n "$2" ];then export ARCH=$2 fi -if [[ $VERSION == '' ]];then - fail "请指定版本" - exit 1 -elif [[ $ARCH == '' ]];then - fail "请指定架构" - exit 1 -fi - -if [[ $NO_WINE == 'true' ]];then - TYPE='no_wine' -else - TYPE='wine' -fi - root_dir=$(cd `dirname $0`/.. && pwd -P) tmp_dir="$root_dir/tmp" app_dir="$tmp_dir/Flatpak" @@ -43,24 +29,23 @@ notice "检查版本号" DEVTOOLS_VERSION=$( cat "$root_dir/package.nw/package.json" | grep -m 1 -Eo "\"[0-9]{1}\.[0-9]{2}\.[0-9]+" ) DEVTOOLS_VERSION="${DEVTOOLS_VERSION//\"/}" INPUT_VERSION=$( echo $VERSION | sed 's/v//' | sed 's/-.*//' ) -if [[ "$INPUT_VERSION" != "$DEVTOOLS_VERSION" ]];then - fail "传入版本号与实际版本号不一致!" - exit 1 -fi +# if [[ "$INPUT_VERSION" != "$DEVTOOLS_VERSION" ]];then +# fail "传入版本号与实际版本号不一致!" +# exit 1 +# fi # Remove any previous build rm -rf $app_dir # Make usr and icons dirs mkdir -p $app_dir/bin -mkdir -p $app_dir/usr/{src,bin} -mkdir -p $app_dir/usr/share/{metainfo,icons,applications} notice "COPY FILES" cp "$root_dir/bin/wechat-devtools" "$app_dir/bin/wechat-devtools" -cp "$root_dir/res/icons/wechat-devtools.png" "$app_dir/wechat-devtools.png" +cp "$root_dir/res/icons/wechat-devtools.svg" "$app_dir/io.github.msojocs.wechat_devtools.svg" \cp -rf "$root_dir/res/flatpak"/* "$app_dir" -cp $root_dir/res/template.desktop "$app_dir/github.msojocs.wechat_devtools.desktop" - +cp $root_dir/res/template.desktop "$app_dir/io.github.msojocs.wechat_devtools.desktop" +sed -i 's/Icon=dir\/res\/icons\/wechat-devtools.svg/Icon=io.github.msojocs.wechat_devtools/' "$app_dir/io.github.msojocs.wechat_devtools.desktop" +sed -i 's/Exec=dir\/bin\/wechat-devtools/Exec=startup/' "$app_dir/io.github.msojocs.wechat_devtools.desktop" cp -r "$root_dir/package.nw" "$app_dir/package.nw" cp -r "$root_dir/nwjs" "$app_dir/nwjs" if [ -f $root_dir/node/bin/node ];then @@ -68,8 +53,20 @@ if [ -f $root_dir/node/bin/node ];then cp "$root_dir/node/bin/node" "$app_dir/nwjs/node" cd "$app_dir/nwjs/" && ln -s "node" "node.exe" fi -cd "$app_dir" -# appimagetool $app_dir notice "MAKE FLATPAK" +cd $app_dir + +# 此处关键参照 https://unix.stackexchange.com/questions/412869/how-to-allow-gui-application-in-flatpak-to-run-cli-tool +cat > startup.sh <<- 'EOF' +#!/bin/sh +export PATH="/var/run/host/usr/bin:$PATH" +exec /app/opt/bin/wechat-devtools +EOF + +# flatpak-builder build-dir io.github.msojocs.wechat-devtools.yml --force-clean + +flatpak-builder build-dir io.github.msojocs.wechat-devtools.yml --install --force-clean --user + +flatpak run io.github.msojocs.wechat-devtools \ No newline at end of file From 324d866482c77a9b7bb4715eebed9c149af7b1d8 Mon Sep 17 00:00:00 2001 From: msojocs Date: Wed, 23 Mar 2022 09:35:12 +0800 Subject: [PATCH 03/21] fix: krb5 --- .../io.github.msojocs.wechat-devtools.yml | 28 ++++++++++++++++++- tools/build-flatpak.sh | 3 +- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/res/flatpak/io.github.msojocs.wechat-devtools.yml b/res/flatpak/io.github.msojocs.wechat-devtools.yml index 4baab47..f72b945 100644 --- a/res/flatpak/io.github.msojocs.wechat-devtools.yml +++ b/res/flatpak/io.github.msojocs.wechat-devtools.yml @@ -45,6 +45,17 @@ modules: - install -Dm755 startup.sh /app/bin/startup - install -Dm644 io.github.msojocs.wechat_devtools.desktop /app/share/applications/io.github.msojocs.wechat-devtools.desktop - install -Dm644 io.github.msojocs.wechat_devtools.svg /app/share/icons/hicolor/scalable/apps/io.github.msojocs.wechat-devtools.svg + - ar p libgssapi-krb5-2_1.18.3-6+deb11u1_amd64.deb data.tar.xz | tar -xJ + - ar p libkrb5-3_1.18.3-6+deb11u1_amd64.deb data.tar.xz | tar -xJ + - ar p libk5crypto3_1.18.3-6+deb11u1_amd64.deb data.tar.xz | tar -xJ + - ar p libkrb5support0_1.18.3-6+deb11u1_amd64.deb data.tar.xz | tar -xJ + - ar p libkeyutils1_1.6.1-2_amd64.deb data.tar.xz | tar -xJ + - ls -l + post-install: + - rm -rf usr/share/{doc,man} + - cp -dr usr/* $FLATPAK_DEST/ + - cp -dr lib/* $FLATPAK_DEST/lib + # - cp -dr opt/* $FLATPAK_DEST/ sources: - type: file path: bin/wechat-devtools @@ -54,4 +65,19 @@ modules: path: io.github.msojocs.wechat_devtools.desktop - type: file path: io.github.msojocs.wechat_devtools.svg - + - type: file + url: http://ftp.cn.debian.org/debian/pool/main/k/krb5/libgssapi-krb5-2_1.18.3-6+deb11u1_amd64.deb + sha256: 2ab853cbd0494c06fa694906c6eeea4df79720f461c76d080eb21a3e98f44115 + - type: file + url: http://ftp.cn.debian.org/debian/pool/main/k/krb5/libkrb5-3_1.18.3-6+deb11u1_amd64.deb + sha256: afb9dced3fcbdbc439a166eaa217dbfd485585842f12ce4587123009618e8bfe + - type: file + url: http://ftp.cn.debian.org/debian/pool/main/k/krb5/libk5crypto3_1.18.3-6+deb11u1_amd64.deb + sha256: 4a010fc69322b6be9e141a76593f46e6588c968ee3b7cf79a3b8b7efda9aeeba + - type: file + url: http://ftp.cn.debian.org/debian/pool/main/k/krb5/libkrb5support0_1.18.3-6+deb11u1_amd64.deb + sha256: 1f19908dbd37bd2ba9b3b3c9eb6ab8bee9a72f72745e6887f5366bb5fece654b + - type: file + url: http://ftp.cn.debian.org/debian/pool/main/k/keyutils/libkeyutils1_1.6.1-2_amd64.deb + sha256: f01060b434d8cad3c58d5811d2082389f11b3db8152657d6c22c1d298953f2a5 + \ No newline at end of file diff --git a/tools/build-flatpak.sh b/tools/build-flatpak.sh index 30fbf2f..9c8527e 100755 --- a/tools/build-flatpak.sh +++ b/tools/build-flatpak.sh @@ -61,7 +61,8 @@ cd $app_dir # 此处关键参照 https://unix.stackexchange.com/questions/412869/how-to-allow-gui-application-in-flatpak-to-run-cli-tool cat > startup.sh <<- 'EOF' #!/bin/sh -export PATH="/var/run/host/usr/bin:$PATH" +export PATH="/var/run/host/usr/bin:$PATH" +export LD_LIBRARY_PATH="/app/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH" exec /app/opt/bin/wechat-devtools EOF From f29fa16289132b40ef1d85992600770cfd2ba298 Mon Sep 17 00:00:00 2001 From: msojocs Date: Fri, 25 Mar 2022 22:42:45 +0800 Subject: [PATCH 04/21] =?UTF-8?q?=E4=BD=BF=E7=94=A8debuild?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- changelog.md | 1 + docker/entrypoint | 4 +- res/deepin/DEBIAN/control | 7 --- res/deepin/debian/changelog | 8 +++ res/deepin/debian/compat | 1 + res/deepin/debian/control | 13 +++++ res/deepin/debian/install | 2 + res/deepin/debian/rules | 21 ++++++++ res/deepin/debian/shlibs.local | 0 tools/build-deepin copy.sh | 93 ++++++++++++++++++++++++++++++++++ tools/build-deepin.sh | 22 +++++--- 11 files changed, 155 insertions(+), 17 deletions(-) delete mode 100644 res/deepin/DEBIAN/control create mode 100644 res/deepin/debian/changelog create mode 100644 res/deepin/debian/compat create mode 100644 res/deepin/debian/control create mode 100644 res/deepin/debian/install create mode 100755 res/deepin/debian/rules create mode 100644 res/deepin/debian/shlibs.local create mode 100755 tools/build-deepin copy.sh diff --git a/changelog.md b/changelog.md index da10e66..0405d43 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,6 @@ # 1.05.2203070-7 / 2022-03-19 - fix: cli +- 兼容ubuntu16.04 # 1.05.2203070-6 / 2022-03-19 - feat: wcc node模块支持wxml引用 diff --git a/docker/entrypoint b/docker/entrypoint index 6658962..777e6b7 100755 --- a/docker/entrypoint +++ b/docker/entrypoint @@ -29,5 +29,5 @@ rm -rf node nwjs package.nw # exec ./tools/rebuild-node-modules 0.53.1 ./tools/setup-wechat-devtools-bash -chmod -R 777 tmp node nwjs package.nw -ls -l package.nw +# chmod -R 777 tmp node nwjs package.nw +# ls -l package.nw diff --git a/res/deepin/DEBIAN/control b/res/deepin/DEBIAN/control deleted file mode 100644 index de2ac60..0000000 --- a/res/deepin/DEBIAN/control +++ /dev/null @@ -1,7 +0,0 @@ -Package: io.github.msojocs.wechat-devtools -Version: BUILD_VERSION -Section: utils -Priority: optional -Architecture: amd64 -Maintainer: msojocs -Description: WeChat Devtools For Linux. diff --git a/res/deepin/debian/changelog b/res/deepin/debian/changelog new file mode 100644 index 0000000..1f0725b --- /dev/null +++ b/res/deepin/debian/changelog @@ -0,0 +1,8 @@ +io.github.msojocs.wechat-devtools-no-wine (1.05.2203070-7) unstable; urgency=medium + + * fix: + - cli + * 兼容 + - ubuntu16.04 + + -- msojocs Wed, 23 Mar 2022 14:56:04 +0800 diff --git a/res/deepin/debian/compat b/res/deepin/debian/compat new file mode 100644 index 0000000..9a03714 --- /dev/null +++ b/res/deepin/debian/compat @@ -0,0 +1 @@ +10 \ No newline at end of file diff --git a/res/deepin/debian/control b/res/deepin/debian/control new file mode 100644 index 0000000..ac4c781 --- /dev/null +++ b/res/deepin/debian/control @@ -0,0 +1,13 @@ +Source: io.github.msojocs.wechat-devtools +Maintainer: msojocs +Standards-Version: BUILD_VERSION +Priority: optional +Section: application + +Package: io.github.msojocs.wechat-devtools +Architecture: amd64 +Description: WeChat Devtools For Linux. + To help developers develop and debug Weixin Mini Programs more simply and efficiently, + Tencent have launched the new Weixin DevTools based on the original Official Account + web debugging tools. Therefore, we now have two developer modes (Official Account web + debugging) and (Mini Program debugging). This version is unofficial. diff --git a/res/deepin/debian/install b/res/deepin/debian/install new file mode 100644 index 0000000..1f1e5db --- /dev/null +++ b/res/deepin/debian/install @@ -0,0 +1,2 @@ +opt . +usr . \ No newline at end of file diff --git a/res/deepin/debian/rules b/res/deepin/debian/rules new file mode 100755 index 0000000..007a364 --- /dev/null +++ b/res/deepin/debian/rules @@ -0,0 +1,21 @@ +#!/usr/bin/make -f +# See debhelper(7) (uncomment to enable) +# output every command that modifies files on the build system. +DH_VERBOSE = 1 + +# see FEATURE AREAS in dpkg-buildflags(1) +#export DEB_BUILD_MAINT_OPTIONS = hardening=+all + +# see ENVIRONMENT in dpkg-buildflags(1) +# package maintainers to append CFLAGS +#export DEB_CFLAGS_MAINT_APPEND = -Wall -pedantic +# package maintainers to append LDFLAGS +#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed + +override_dh_strip_nondeterminism: + +override_dh_shlibdeps: + dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info + +%: + dh "$@" diff --git a/res/deepin/debian/shlibs.local b/res/deepin/debian/shlibs.local new file mode 100644 index 0000000..e69de29 diff --git a/tools/build-deepin copy.sh b/tools/build-deepin copy.sh new file mode 100755 index 0000000..258f92c --- /dev/null +++ b/tools/build-deepin copy.sh @@ -0,0 +1,93 @@ +#!/bin/bash +set -e +notice() { + echo -e "\033[36m $1 \033[0m " +} +fail() { + echo -e "\033[41;37m 失败 \033[0m $1" +} + + +root_dir=$(cd `dirname $0`/.. && pwd -P) +DEVTOOLS_VERSION=$( cat "$root_dir/package.nw/package.json" | grep -m 1 -Eo "\"[0-9]{1}\.[0-9]{2}\.[0-9]+" ) +DEVTOOLS_VERSION="${DEVTOOLS_VERSION//\"/}" +echo $BUILD_VERSION +if [ -n "$1" ];then + export BUILD_VERSION=$1 +fi +if [ -z "$BUILD_VERSION" ];then + export BUILD_VERSION='continuous' +fi +if [ "$BUILD_VERSION" == "continuous" ];then + export BUILD_VERSION="v${DEVTOOLS_VERSION}-continuous" +fi + +notice "检查版本号 -> $BUILD_VERSION" +INPUT_VERSION=$( echo $BUILD_VERSION | sed 's/v//' | sed 's/-.*//' ) +if [[ "$INPUT_VERSION" != "$DEVTOOLS_VERSION" ]];then + fail "传入版本号与实际版本号不一致!" + exit 1 +fi + +############ 准备构建deb包所需的文件及结构 ################ +package_name="io.github.msojocs.wechat-devtools" +if [[ $NO_WINE == 'true' ]];then + BUILD_MARK='no_wine' + package_name="${package_name}-no-wine" +else + BUILD_MARK='wine' + NAME_SUFFIX=" (wine)" + package_name="${package_name}-wine" +fi + +echo "root_dir: $root_dir" +tmp_dir="$root_dir/tmp" +build_dir="$root_dir/tmp/$package_name" +base_dir="$build_dir/opt/apps/$package_name" + +# Remove any previous build +rm -rf $build_dir +# Make usr and icons dirs +notice "Make Dirs" +mkdir -p $base_dir/{entries,files} +mkdir -p $base_dir/entries/{applications,icons/hicolor/scalable/apps/,mime,plugins,services} +mkdir -p $base_dir/files/{bin/bin,doc,lib} + +notice "COPY Files" +cp -r "$root_dir/res/deepin"/* $build_dir +mv "$build_dir/opt/apps/io.github.msojocs.wechat-devtools"/* $base_dir +rm -r "$build_dir/opt/apps/io.github.msojocs.wechat-devtools" +sed -i "s/BUILD_VERSION/${BUILD_VERSION//v/}/" "$build_dir/debian/control" "$base_dir/info" +sed -i "s/io.github.msojocs.wechat-devtools/$package_name/g" "$base_dir/info" "$build_dir/debian/control" +\cp -rf "$root_dir/bin/wechat-devtools" "$base_dir/files/bin/bin/wechat-devtools" + +# desktop +\cp -rf "$root_dir/res/template.desktop" "$base_dir/entries/applications/$package_name.desktop" +sed -i "s#Icon=dir/res/icons/wechat-devtools.svg#Icon=$package_name#" "$base_dir/entries/applications/$package_name.desktop" +sed -i "s#dir#/opt/apps/$package_name/files/bin#" "$base_dir/entries/applications/$package_name.desktop" +sed -i "s/WeChat Dev Tools/WeChat Dev Tools$NAME_SUFFIX/g" "$base_dir/info" "$base_dir/entries/applications/$package_name.desktop" +sed -i "s/微信开发者工具/微信开发者工具$NAME_SUFFIX/g" "$base_dir/entries/applications/$package_name.desktop" + +\cp -rf "$root_dir/res/icons/wechat-devtools.svg" "$base_dir/entries/icons/hicolor/scalable/apps/$package_name.svg" + +# 主体文件 +cp -r "$root_dir/package.nw" "$base_dir/files/bin/package.nw" +cp -r "$root_dir/nwjs" "$base_dir/files/bin/nwjs" +if [ -f "$root_dir/node/bin/node" ];then + rm -rf "$base_dir/files/bin/nwjs"/{node,node.exe} + cp "$root_dir/node/bin/node" "$base_dir/files/bin/nwjs/node" + cd "$base_dir/files/bin/nwjs/" && ln -s "node" "node.exe" +fi +# chown -R root:root "$base_dir" + +notice "BUILD DEB Package" +cd "$build_dir" +ls -l "$build_dir" +mkdir -p "$root_dir/tmp/build" + +if [[ ! $NO_WINE -eq 'true' ]];then + echo "Depends: wine, wine-binfmt" >> "$build_dir/debian/control" +fi + +# dpkg-deb -b . "$root_dir/tmp/build/WeChat_Dev_Tools_${BUILD_VERSION}_amd64_${BUILD_MARK}_deepin.deb" +debuild \ No newline at end of file diff --git a/tools/build-deepin.sh b/tools/build-deepin.sh index 13ed69a..94d203c 100755 --- a/tools/build-deepin.sh +++ b/tools/build-deepin.sh @@ -21,7 +21,6 @@ fi if [ "$BUILD_VERSION" == "continuous" ];then export BUILD_VERSION="v${DEVTOOLS_VERSION}-continuous" fi -echo $BUILD_VERSION notice "检查版本号 -> $BUILD_VERSION" INPUT_VERSION=$( echo $BUILD_VERSION | sed 's/v//' | sed 's/-.*//' ) @@ -41,10 +40,9 @@ else package_name="${package_name}-wine" fi -root_dir=$(cd `dirname $0`/.. && pwd -P) echo "root_dir: $root_dir" tmp_dir="$root_dir/tmp" -build_dir="$root_dir/tmp/deepin" +build_dir="$root_dir/tmp/$package_name" base_dir="$build_dir/opt/apps/$package_name" # Remove any previous build @@ -59,8 +57,8 @@ notice "COPY Files" cp -r "$root_dir/res/deepin"/* $build_dir mv "$build_dir/opt/apps/io.github.msojocs.wechat-devtools"/* $base_dir rm -r "$build_dir/opt/apps/io.github.msojocs.wechat-devtools" -sed -i "s/BUILD_VERSION/${BUILD_VERSION//v/}/" "$build_dir/DEBIAN/control" "$base_dir/info" -sed -i "s/io.github.msojocs.wechat-devtools/$package_name/g" "$base_dir/info" "$build_dir/DEBIAN/control" +sed -i "s/BUILD_VERSION/${BUILD_VERSION//v/}/" "$build_dir/debian/control" "$base_dir/info" +sed -i "s/io.github.msojocs.wechat-devtools/$package_name/g" "$base_dir/info" "$build_dir/debian/control" \cp -rf "$root_dir/bin/wechat-devtools" "$base_dir/files/bin/bin/wechat-devtools" # desktop @@ -72,6 +70,11 @@ sed -i "s/微信开发者工具/微信开发者工具$NAME_SUFFIX/g" "$base_dir/ \cp -rf "$root_dir/res/icons/wechat-devtools.svg" "$base_dir/entries/icons/hicolor/scalable/apps/$package_name.svg" +# 兼容普通deb +mkdir -p "$build_dir/usr/share/applications" "$build_dir/usr/share/icons/hicolor/scalable/apps" +\cp -rf "$base_dir/entries/applications/$package_name.desktop" "$build_dir/usr/share/applications/$package_name.desktop" +\cp -rf "$base_dir/entries/icons/hicolor/scalable/apps/$package_name.svg" "$build_dir/usr/share/icons/hicolor/scalable/apps/$package_name.svg" + # 主体文件 cp -r "$root_dir/package.nw" "$base_dir/files/bin/package.nw" cp -r "$root_dir/nwjs" "$base_dir/files/bin/nwjs" @@ -80,7 +83,7 @@ if [ -f "$root_dir/node/bin/node" ];then cp "$root_dir/node/bin/node" "$base_dir/files/bin/nwjs/node" cd "$base_dir/files/bin/nwjs/" && ln -s "node" "node.exe" fi -chown -R root:root "$base_dir" +# chown -R root:root "$base_dir" notice "BUILD DEB Package" cd "$build_dir" @@ -88,7 +91,10 @@ ls -l "$build_dir" mkdir -p "$root_dir/tmp/build" if [[ ! $NO_WINE -eq 'true' ]];then - echo "Depends: wine, wine-binfmt" >> "$build_dir/DEBIAN/control" + echo "Depends: wine, wine-binfmt" >> "$build_dir/debian/control" fi -dpkg-deb -b . "$root_dir/tmp/build/WeChat_Dev_Tools_${BUILD_VERSION}_amd64_${BUILD_MARK}_deepin.deb" +# cd "$tmp_dir" +# tar -zcf "$tmp_dir/${package_name}_${BUILD_VERSION//v/}.orig.tar.gz" "$package_name" +# dpkg-deb -b . "$root_dir/tmp/build/WeChat_Dev_Tools_${BUILD_VERSION}_amd64_${BUILD_MARK}_deepin.deb" +echo 'y' | debuild \ No newline at end of file From 3c373a8f6fa765741c3a974d72833b3e240adb2a Mon Sep 17 00:00:00 2001 From: msojocs Date: Sat, 26 Mar 2022 18:06:43 +0800 Subject: [PATCH 05/21] update: deepin build --- .github/workflows/release.yml | 6 +++--- res/deepin/debian/changelog | 2 +- tools/build-deepin.sh | 11 +++++------ 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 90f5917..baa2304 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,7 +9,7 @@ on: push: tags: - v* - branches: [ master, build] + branches: [ master, dev] pull_request: branches: [ master ] # # Allows you to run this workflow manually from the Actions tab @@ -237,10 +237,10 @@ jobs: ls -l mkdir -p tmp/build tools/build-prepare.sh - sudo env NO_WINE=false tools/build-deepin.sh ${{ steps.tag.outputs.tag }} + env NO_WINE=false tools/build-deepin.sh ${{ steps.tag.outputs.tag }} export NO_WINE=true tools/build-prepare.sh - sudo env NO_WINE=true tools/build-deepin.sh ${{ steps.tag.outputs.tag }} + env NO_WINE=true tools/build-deepin.sh ${{ steps.tag.outputs.tag }} - name: Upload artifact uses: actions/upload-artifact@v2.3.1 diff --git a/res/deepin/debian/changelog b/res/deepin/debian/changelog index 1f0725b..2b1230f 100644 --- a/res/deepin/debian/changelog +++ b/res/deepin/debian/changelog @@ -1,4 +1,4 @@ -io.github.msojocs.wechat-devtools-no-wine (1.05.2203070-7) unstable; urgency=medium +io.github.msojocs.wechat-devtools (1.05.2203070-7) unstable; urgency=medium * fix: - cli diff --git a/tools/build-deepin.sh b/tools/build-deepin.sh index 94d203c..8194912 100755 --- a/tools/build-deepin.sh +++ b/tools/build-deepin.sh @@ -58,7 +58,7 @@ cp -r "$root_dir/res/deepin"/* $build_dir mv "$build_dir/opt/apps/io.github.msojocs.wechat-devtools"/* $base_dir rm -r "$build_dir/opt/apps/io.github.msojocs.wechat-devtools" sed -i "s/BUILD_VERSION/${BUILD_VERSION//v/}/" "$build_dir/debian/control" "$base_dir/info" -sed -i "s/io.github.msojocs.wechat-devtools/$package_name/g" "$base_dir/info" "$build_dir/debian/control" +sed -i "s/io.github.msojocs.wechat-devtools/$package_name/g" "$base_dir/info" "$build_dir/debian/control" "$build_dir/debian/changelog" \cp -rf "$root_dir/bin/wechat-devtools" "$base_dir/files/bin/bin/wechat-devtools" # desktop @@ -90,11 +90,10 @@ cd "$build_dir" ls -l "$build_dir" mkdir -p "$root_dir/tmp/build" -if [[ ! $NO_WINE -eq 'true' ]];then +if [[ $NO_WINE != 'true' ]];then + echo "添加wine依赖 - $NO_WINE" echo "Depends: wine, wine-binfmt" >> "$build_dir/debian/control" fi -# cd "$tmp_dir" -# tar -zcf "$tmp_dir/${package_name}_${BUILD_VERSION//v/}.orig.tar.gz" "$package_name" -# dpkg-deb -b . "$root_dir/tmp/build/WeChat_Dev_Tools_${BUILD_VERSION}_amd64_${BUILD_MARK}_deepin.deb" -echo 'y' | debuild \ No newline at end of file +echo 'y' | debuild +mv $tmp_dir/*.deb $tmp_dir/build \ No newline at end of file From 6fa17ebca20f2980f08774c56a48dfa1b5ea6381 Mon Sep 17 00:00:00 2001 From: msojocs Date: Sat, 26 Mar 2022 19:05:35 +0800 Subject: [PATCH 06/21] fix: deepin build --- .github/workflows/release.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index baa2304..b17b30f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -233,6 +233,7 @@ jobs: - name: Build Deepin Package run: | + sudo apt-get install -y build-essential fakeroot devscripts git git-buildpackage debhelper debmake lintian pbuilder export BUILD_VERSION=${{ steps.tag.outputs.tag }} ls -l mkdir -p tmp/build From 150a944c026f14e6e4157ed84243560565a89818 Mon Sep 17 00:00:00 2001 From: msojocs Date: Sat, 26 Mar 2022 20:22:43 +0800 Subject: [PATCH 07/21] test --- tools/build-deepin.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/build-deepin.sh b/tools/build-deepin.sh index 8194912..13f0b0b 100755 --- a/tools/build-deepin.sh +++ b/tools/build-deepin.sh @@ -95,5 +95,5 @@ if [[ $NO_WINE != 'true' ]];then echo "Depends: wine, wine-binfmt" >> "$build_dir/debian/control" fi -echo 'y' | debuild +echo 'y' | debuild --no-tgz-check -i -I -b -us -uc mv $tmp_dir/*.deb $tmp_dir/build \ No newline at end of file From 3099858f56eab1db82c9965a60c323869898e37f Mon Sep 17 00:00:00 2001 From: msojocs Date: Sun, 3 Apr 2022 22:11:24 +0800 Subject: [PATCH 08/21] update --- .github/workflows/release.yml | 88 +++++++++++++++++------------------ readme.md | 5 +- tools/build-deepin.sh | 4 +- 3 files changed, 49 insertions(+), 48 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b17b30f..6dfe2d3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -155,55 +155,55 @@ jobs: name: wechat-devtools-${{ matrix.ARCH }}.build path: tmp/build - build-deb: - name: Build Deb Package - needs: - - build-src - runs-on: ubuntu-18.04 + # build-deb: + # name: Build Deb Package + # needs: + # - build-src + # runs-on: ubuntu-18.04 - strategy: - matrix: - ARCH: ['x86_64'] - # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ + # strategy: + # matrix: + # ARCH: ['x86_64'] + # # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ - steps: - - uses: actions/checkout@v2 - - name: Download artifacts - uses: actions/download-artifact@v2 + # steps: + # - uses: actions/checkout@v2 + # - name: Download artifacts + # uses: actions/download-artifact@v2 - - name: Generate TAG - id: Tag - run: | - tag='continuous' - name='Continuous Build' - if [ 'true' == ${{ startsWith(github.ref, 'refs/tags/') }} ];then - tag='${{ github.ref_name }}' - name='${{ github.ref_name }}' - fi - echo "tag result: $tag - $name" - echo "::set-output name=tag::$tag" - echo "::set-output name=name::$name" + # - name: Generate TAG + # id: Tag + # run: | + # tag='continuous' + # name='Continuous Build' + # if [ 'true' == ${{ startsWith(github.ref, 'refs/tags/') }} ];then + # tag='${{ github.ref_name }}' + # name='${{ github.ref_name }}' + # fi + # echo "tag result: $tag - $name" + # echo "::set-output name=tag::$tag" + # echo "::set-output name=name::$name" - - name: Build Deb Package - run: | - export BUILD_VERSION=${{ steps.tag.outputs.tag }} - ls -l - mkdir -p tmp/build - tools/build-prepare.sh - tools/build-deb.sh ${{ steps.tag.outputs.tag }} - export NO_WINE=true - tools/build-prepare.sh - tools/build-deb.sh ${{ steps.tag.outputs.tag }} + # - name: Build Deb Package + # run: | + # export BUILD_VERSION=${{ steps.tag.outputs.tag }} + # ls -l + # mkdir -p tmp/build + # tools/build-prepare.sh + # tools/build-deb.sh ${{ steps.tag.outputs.tag }} + # export NO_WINE=true + # tools/build-prepare.sh + # tools/build-deb.sh ${{ steps.tag.outputs.tag }} - - name: Upload artifact - uses: actions/upload-artifact@v2.3.1 - with: - # Artifact name - name: wechat-devtools-${{ matrix.ARCH }}.build - path: tmp/build + # - name: Upload artifact + # uses: actions/upload-artifact@v2.3.1 + # with: + # # Artifact name + # name: wechat-devtools-${{ matrix.ARCH }}.build + # path: tmp/build - build-deepin: - name: Build Deepin Package + build-deb: + name: Build DEB Package needs: - build-src runs-on: ubuntu-18.04 @@ -328,7 +328,7 @@ jobs: needs: - build-tar - build-deb - - build-deepin + # - build-deepin - build-arch runs-on: ubuntu-latest steps: diff --git a/readme.md b/readme.md index 14cc1f2..9ce24d1 100644 --- a/readme.md +++ b/readme.md @@ -142,11 +142,12 @@ git clone https://github.com/msojocs/wechat-devtools-linux.git 微信开发者工具版权归腾讯公司所有,本项目旨在交流学习之用。如有不当之处,请联系本人,邮箱:jiyecafe@gmail.com # 赞赏 - 如果这个仓库让你感到舒适,可以点个Star或者请我喝杯咖啡(请尽量带上github昵称): + 如果这个仓库让你感到舒适,可以点个Star或者请这个菜鸡大学生喝杯咖啡(请尽量带上github昵称): ![赞赏码](https://user-images.githubusercontent.com/20937135/154661198-93854dc1-c8ba-4c97-a7ab-9f8de26c0226.png) # 感谢赞赏支持 1. *喆 2. @shaoxp - 3. . \ No newline at end of file + 3. . + 4. IvesSSa \ No newline at end of file diff --git a/tools/build-deepin.sh b/tools/build-deepin.sh index 13f0b0b..55b5fd5 100755 --- a/tools/build-deepin.sh +++ b/tools/build-deepin.sh @@ -95,5 +95,5 @@ if [[ $NO_WINE != 'true' ]];then echo "Depends: wine, wine-binfmt" >> "$build_dir/debian/control" fi -echo 'y' | debuild --no-tgz-check -i -I -b -us -uc -mv $tmp_dir/*.deb $tmp_dir/build \ No newline at end of file +debuild --no-tgz-check -i -I -b -us -uc +# mv $tmp_dir/*.deb $tmp_dir/build \ No newline at end of file From 76aac0f6a5ecae98c28b77ffc016a79d530584b1 Mon Sep 17 00:00:00 2001 From: msojocs Date: Sun, 3 Apr 2022 23:05:16 +0800 Subject: [PATCH 09/21] fix: build --- tools/build-deepin.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/build-deepin.sh b/tools/build-deepin.sh index 55b5fd5..73af988 100755 --- a/tools/build-deepin.sh +++ b/tools/build-deepin.sh @@ -96,4 +96,4 @@ if [[ $NO_WINE != 'true' ]];then fi debuild --no-tgz-check -i -I -b -us -uc -# mv $tmp_dir/*.deb $tmp_dir/build \ No newline at end of file +mv $tmp_dir/*.deb $tmp_dir/build \ No newline at end of file From 4ff58b2fb854a874de86a5ec2be1846d8bb00f2c Mon Sep 17 00:00:00 2001 From: msojocs Date: Wed, 6 Apr 2022 13:54:21 +0800 Subject: [PATCH 10/21] update: mirror --- .gitignore | 5 ++++- conf/node_info | 2 +- docker/Dockerfile | 2 +- docs/Nodegit.MD | 2 +- res/aur/PKGBUILD | 4 ++-- tools/rebuild-node-modules.sh | 2 +- tools/setup-wechat-devtools-bash | 20 ++++++++++---------- 7 files changed, 20 insertions(+), 17 deletions(-) diff --git a/.gitignore b/.gitignore index de3505e..12a3af6 100644 --- a/.gitignore +++ b/.gitignore @@ -14,4 +14,7 @@ build appimage-builder-cache wcc.bin wcsc.bin -temp.sh \ No newline at end of file +temp.sh +# flatpak +.flatpak-builder +build-dir \ No newline at end of file diff --git a/conf/node_info b/conf/node_info index a970451..7abe10d 100644 --- a/conf/node_info +++ b/conf/node_info @@ -2,5 +2,5 @@ if [ -z $NODE_VERSION ];then NODE_VERSION=16.1.0 fi -NODE_URL_CN=https://npm.taobao.org/mirrors/node/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.gz +NODE_URL_CN=https://npmmirror.com/mirrors/node/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.gz NODE_URL_GLOBAL=https://nodejs.org/download/release/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.gz diff --git a/docker/Dockerfile b/docker/Dockerfile index 996680f..d594a5e 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -14,7 +14,7 @@ RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list && \ apt-get install -y aptitude &&\ aptitude -y install gcc make zlib1g-dev libffi-dev libssl-dev &&\ mkdir -p test && cd test &&\ - wget http://npm.taobao.org/mirrors/python/3.6.5/Python-3.6.5.tgz &&\ + wget http://npmmirror.com/mirrors/python/3.6.5/Python-3.6.5.tgz &&\ tar -xvf Python-3.6.5.tgz &&\ chmod -R +x Python-3.6.5 &&\ cd Python-3.6.5/ &&\ diff --git a/docs/Nodegit.MD b/docs/Nodegit.MD index 6bf8a25..883cd22 100644 --- a/docs/Nodegit.MD +++ b/docs/Nodegit.MD @@ -23,7 +23,7 @@ apt update apt-get install -y python2 python3 libkrb5-dev gcc openssl libssh2-1-dev g++ make echo "start" -npm install nodegit --registry=https://registry.npm.taobao.org +npm install nodegit --registry=http://registry.npmmirror.com/ npm uninstall nodegit ``` \ No newline at end of file diff --git a/res/aur/PKGBUILD b/res/aur/PKGBUILD index 801bae7..87ce0b1 100644 --- a/res/aur/PKGBUILD +++ b/res/aur/PKGBUILD @@ -29,9 +29,9 @@ license=('unknown') depends=('gconf' 'libxkbfile') makedepends=('p7zip' 'python2' 'openssl' 'gcc' 'make' 'libssh2' 'krb5') # compiler 用于可视化,以及编译 -source=("nwjs-v${_nwjs_ver}.tar.gz::https://npm.taobao.org/mirrors/nwjs/v${_nwjs_ver}/nwjs-sdk-v${_nwjs_ver}-linux-x64.tar.gz" +source=("nwjs-v${_nwjs_ver}.tar.gz::http://npmmirror.com/mirrors/nwjs/v${_nwjs_ver}/nwjs-sdk-v${_nwjs_ver}-linux-x64.tar.gz" "${_wechat_devtools_exe}::${_wechat_devtools_url}" - "node-v${_node_version}.tar.gz::https://npm.taobao.org/mirrors/node/v${_node_version}/node-v${_node_version}-linux-x64.tar.gz" + "node-v${_node_version}.tar.gz::http://npmmirror.com/mirrors/node/v${_node_version}/node-v${_node_version}-linux-x64.tar.gz" "compiler.tar.gz::https://github.rc1844.workers.dev/msojocs/wechat-web-devtools-linux/releases/download/v1.05.2203070-3/compiler.tar.gz" "wechat-devtools.desktop" "logo.svg" diff --git a/tools/rebuild-node-modules.sh b/tools/rebuild-node-modules.sh index 2759ca6..bd7dcf8 100755 --- a/tools/rebuild-node-modules.sh +++ b/tools/rebuild-node-modules.sh @@ -80,7 +80,7 @@ rm -fr "${package_dir}/node_modules_tmp/node_modules/spdlog-node" vscode-oniguruma \ vscode-ripgrep \ nodegit \ - --nodegit_binary_host_mirror=https://npm.taobao.org/mirrors/nodegit/v0.27.0/) # reinstall modules + --nodegit_binary_host_mirror=http://npmmirror.com/mirrors/nodegit/v0.27.0/) # reinstall modules # rebuild cd "$package_dir/node_modules_tmp/node_modules/node-pty" && nw-gyp rebuild --arch=x64 "--target=$NW_VERSION" --dist-url=https://registry.npmmirror.com/-/binary/nwjs diff --git a/tools/setup-wechat-devtools-bash b/tools/setup-wechat-devtools-bash index 9822af9..dbbf0fa 100755 --- a/tools/setup-wechat-devtools-bash +++ b/tools/setup-wechat-devtools-bash @@ -39,17 +39,17 @@ fi export PATH="$root_dir/node/bin":$PATH if [ $ACTION_MODE!='true' ]; then notice "非ACTION模式, 设置镜像源" - npm set registry https://r.npm.taobao.org # 注册模块镜像 - npm set disturl https://npm.taobao.org/dist # node-gyp 编译依赖的 node 源码镜像 + npm set registry http://registry.npmmirror.com/ # 注册模块镜像 + npm set disturl http://npmmirror.com/dist # node-gyp 编译依赖的 node 源码镜像 ## 以下选择添加 - npm set sass_binary_site https://npm.taobao.org/mirrors/node-sass # node-sass 二进制包镜像 - npm set electron_mirror https://npm.taobao.org/mirrors/electron/ # electron 二进制包镜像 - npm set puppeteer_download_host https://npm.taobao.org/mirrors # puppeteer 二进制包镜像 - npm set chromedriver_cdnurl https://npm.taobao.org/mirrors/chromedriver # chromedriver 二进制包镜像 - npm set operadriver_cdnurl https://npm.taobao.org/mirrors/operadriver # operadriver 二进制包镜像 - npm set phantomjs_cdnurl https://npm.taobao.org/mirrors/phantomjs # phantomjs 二进制包镜像 - npm set selenium_cdnurl https://npm.taobao.org/mirrors/selenium # selenium 二进制包镜像 - npm set node_inspector_cdnurl https://npm.taobao.org/mirrors/node-inspector # node-inspector 二进制包镜像 + npm set sass_binary_site http://npmmirror.com/mirrors/node-sass # node-sass 二进制包镜像 + npm set electron_mirror http://npmmirror.com/mirrors/electron/ # electron 二进制包镜像 + npm set puppeteer_download_host http://npmmirror.com/mirrors # puppeteer 二进制包镜像 + npm set chromedriver_cdnurl http://npmmirror.com/mirrors/chromedriver # chromedriver 二进制包镜像 + npm set operadriver_cdnurl http://npmmirror.com/mirrors/operadriver # operadriver 二进制包镜像 + npm set phantomjs_cdnurl http://npmmirror.com/mirrors/phantomjs # phantomjs 二进制包镜像 + npm set selenium_cdnurl http://npmmirror.com/mirrors/selenium # selenium 二进制包镜像 + npm set node_inspector_cdnurl http://npmmirror.com/mirrors/node-inspector # node-inspector 二进制包镜像 # npm cache clean --force # 清空缓存 fi echo "=====安装node-gyp nw-gyp====" From b00dfb3ef7d46f0423fa916078c6de6506ad525f Mon Sep 17 00:00:00 2001 From: msojocs Date: Wed, 6 Apr 2022 23:20:48 +0800 Subject: [PATCH 11/21] feat: nodegit compiler in parallel --- res/flatpak/startup.sh | 4 ++++ tools/rebuild-node-modules.sh | 6 +++--- tools/setup-wechat-devtools-bash | 20 ++++++++++---------- 3 files changed, 17 insertions(+), 13 deletions(-) create mode 100644 res/flatpak/startup.sh diff --git a/res/flatpak/startup.sh b/res/flatpak/startup.sh new file mode 100644 index 0000000..92803f4 --- /dev/null +++ b/res/flatpak/startup.sh @@ -0,0 +1,4 @@ +#!/bin/sh +export PATH="/var/run/host/usr/bin:$PATH" +export LD_LIBRARY_PATH="/app/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH" +exec /app/opt/bin/wechat-devtools \ No newline at end of file diff --git a/tools/rebuild-node-modules.sh b/tools/rebuild-node-modules.sh index bd7dcf8..6d65614 100755 --- a/tools/rebuild-node-modules.sh +++ b/tools/rebuild-node-modules.sh @@ -69,6 +69,8 @@ rm -fr "${package_dir}/node_modules_tmp/node_modules/vscode-ripgrep" rm -fr "${package_dir}/node_modules_tmp/node_modules/spdlog" rm -fr "${package_dir}/node_modules_tmp/node_modules/spdlog-node" +max_thread=$(cat /proc/cpuinfo| grep "processor"| wc -l) +export JOBS=$max_thread (cd "${package_dir}/node_modules_tmp" && npm install \ extract-file-icon \ native-keymap \ @@ -80,6 +82,7 @@ rm -fr "${package_dir}/node_modules_tmp/node_modules/spdlog-node" vscode-oniguruma \ vscode-ripgrep \ nodegit \ + --registry=http://registry.npmmirror.com --nodegit_binary_host_mirror=http://npmmirror.com/mirrors/nodegit/v0.27.0/) # reinstall modules # rebuild @@ -106,6 +109,3 @@ mkdir -p "${package_dir}/node_modules/vscode-ripgrep/bin" (cd "${package_dir}/node_modules" && find -name ".deps" | xargs -I{} rm -rf {} && find -name "obj.target" | xargs -I{} rm -rf {} && find -name "*.a" -delete && find -name "*.lib" -delete && find -name "*.mk" -delete && find -name "*Makefile" -delete && find -name "*gyp*" -delete) rm -rf "${package_dir}/node_modules_tmp" - -# 移除旧配置 -# rm -fr ~/.config/wechat_devtools diff --git a/tools/setup-wechat-devtools-bash b/tools/setup-wechat-devtools-bash index dbbf0fa..47f62cc 100755 --- a/tools/setup-wechat-devtools-bash +++ b/tools/setup-wechat-devtools-bash @@ -39,17 +39,17 @@ fi export PATH="$root_dir/node/bin":$PATH if [ $ACTION_MODE!='true' ]; then notice "非ACTION模式, 设置镜像源" - npm set registry http://registry.npmmirror.com/ # 注册模块镜像 - npm set disturl http://npmmirror.com/dist # node-gyp 编译依赖的 node 源码镜像 + npm config set registry http://registry.npmmirror.com/ # 注册模块镜像 + npm config set disturl http://npmmirror.com/dist # node-gyp 编译依赖的 node 源码镜像 ## 以下选择添加 - npm set sass_binary_site http://npmmirror.com/mirrors/node-sass # node-sass 二进制包镜像 - npm set electron_mirror http://npmmirror.com/mirrors/electron/ # electron 二进制包镜像 - npm set puppeteer_download_host http://npmmirror.com/mirrors # puppeteer 二进制包镜像 - npm set chromedriver_cdnurl http://npmmirror.com/mirrors/chromedriver # chromedriver 二进制包镜像 - npm set operadriver_cdnurl http://npmmirror.com/mirrors/operadriver # operadriver 二进制包镜像 - npm set phantomjs_cdnurl http://npmmirror.com/mirrors/phantomjs # phantomjs 二进制包镜像 - npm set selenium_cdnurl http://npmmirror.com/mirrors/selenium # selenium 二进制包镜像 - npm set node_inspector_cdnurl http://npmmirror.com/mirrors/node-inspector # node-inspector 二进制包镜像 + npm config set sass_binary_site http://npmmirror.com/mirrors/node-sass # node-sass 二进制包镜像 + npm config set electron_mirror http://npmmirror.com/mirrors/electron/ # electron 二进制包镜像 + npm config set puppeteer_download_host http://npmmirror.com/mirrors # puppeteer 二进制包镜像 + npm config set chromedriver_cdnurl http://npmmirror.com/mirrors/chromedriver # chromedriver 二进制包镜像 + npm config set operadriver_cdnurl http://npmmirror.com/mirrors/operadriver # operadriver 二进制包镜像 + npm config set phantomjs_cdnurl http://npmmirror.com/mirrors/phantomjs # phantomjs 二进制包镜像 + npm config set selenium_cdnurl http://npmmirror.com/mirrors/selenium # selenium 二进制包镜像 + npm config set node_inspector_cdnurl http://npmmirror.com/mirrors/node-inspector # node-inspector 二进制包镜像 # npm cache clean --force # 清空缓存 fi echo "=====安装node-gyp nw-gyp====" From 9f7fd4ed39cc335966a095c9ab05931246282e3e Mon Sep 17 00:00:00 2001 From: msojocs Date: Wed, 6 Apr 2022 23:34:18 +0800 Subject: [PATCH 12/21] update: flatpak --- .github/workflows/flatpak-verify.yml | 41 ++++ io.github.msojocs.wechat-devtools.yml | 181 ++++++++++++++++++ .../io.github.msojocs.wechat-devtools.yml | 83 -------- tools/build-deepin copy.sh | 93 --------- tools/build-flatpak.sh | 2 +- 5 files changed, 223 insertions(+), 177 deletions(-) create mode 100644 .github/workflows/flatpak-verify.yml create mode 100644 io.github.msojocs.wechat-devtools.yml delete mode 100644 res/flatpak/io.github.msojocs.wechat-devtools.yml delete mode 100755 tools/build-deepin copy.sh diff --git a/.github/workflows/flatpak-verify.yml b/.github/workflows/flatpak-verify.yml new file mode 100644 index 0000000..d88c893 --- /dev/null +++ b/.github/workflows/flatpak-verify.yml @@ -0,0 +1,41 @@ +# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node +# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions + +name: Build Packages + +on: + release: + types: [published] + push: + tags: + - v* + branches: [ master, dev] + pull_request: + branches: [ master ] + # # Allows you to run this workflow manually from the Actions tab + # workflow_dispatch: + +jobs: + flatpak: + name: "Flatpak" + runs-on: ubuntu-latest + container: + image: bilelmoussaoui/flatpak-github-actions:freedesktop-21.08 + options: --privileged + strategy: + matrix: + arch: [x86_64] + # Don't fail the whole workflow if one architecture fails + fail-fast: false + steps: + - uses: actions/checkout@v2 + # Docker is required by the docker/setup-qemu-action which enables emulation + - name: Install deps + run: | + dnf -y install docker + - uses: bilelmoussaoui/flatpak-github-actions/flatpak-builder@v4 + with: + bundle: wechat-devtools.flatpak + manifest-path: io.github.msojocs.wechat-devtools.yml + cache-key: flatpak-builder-${{ github.sha }} + arch: ${{ matrix.arch }} \ No newline at end of file diff --git a/io.github.msojocs.wechat-devtools.yml b/io.github.msojocs.wechat-devtools.yml new file mode 100644 index 0000000..b5ff423 --- /dev/null +++ b/io.github.msojocs.wechat-devtools.yml @@ -0,0 +1,181 @@ +app-id: io.github.msojocs.wechat-devtools +runtime: org.freedesktop.Platform +runtime-version: '21.08' +sdk: org.freedesktop.Sdk +sdk-extensions: + - org.freedesktop.Sdk.Extension.node12 +command: startup +finish-args: + # X11 + XShm access + - --share=ipc + - --socket=x11 + # Wayland access + - --socket=wayland + # Needs to talk to the network: + - --share=network + # Needs to save files locally + - --filesystem=host + - --metadata=X-DConf=migrate-path=/org/gnome/dictionary/ +modules: + - name: nwjs + buildsystem: simple + sources: + - type: archive + url: http://npmmirror.com/mirrors/nwjs/v0.53.1/nwjs-sdk-v0.53.1-linux-x64.tar.gz + md5: b6f49803c51d0abacca2d1e566c7fe19 + build-commands: + - ls -l + - mkdir -p /app/opt/nwjs + - mv * /app/opt/nwjs + + - name: package.nw + buildsystem: simple + sources: + - type: archive + url: https://servicewechat.com/wxa-dev-logic/download_redirect?type=x64&from=mpwiki&download_version=1052203070&version_type=1 + md5: 2785d569b88d72a8e238d438d92faf44 + archive-type: 7z + path: code + strip-components: 0 + dest-filename: wechat_devtools.7z + build-commands: + - ls -l + - mv code/package.nw /app/opt/package.nw + + - name: nodejs + buildsystem: simple + build-options: + prepend-path: /app/opt/nodejs/bin + build-args: + - --share=network + sources: + - type: archive + url: https://npmmirror.com/mirrors/node/v16.1.0/node-v16.1.0-linux-x64.tar.gz + md5: 2280bfbbf29981fd5adce334f40146ff + build-commands: + - ls -l + - mkdir -p /app/opt/nodejs + - mv * /app/opt/nodejs + - npm config set registry https://registry.npmmirror.com # 注册模块镜像 + - npm config set disturl https://npmmirror.com/dist # node-gyp 编译依赖的 node 源码镜像 + - npm install -g npm@8.6.0 + - npm --version + - npm -g install nw-gyp node-gyp + + - name: library + buildsystem: simple + build-commands: + - for file in *.deb; do ar p $file data.tar.xz | tar -xJ; done; + post-install: + - rm -rf usr/share/{doc,man} + - cp -dr usr/* $FLATPAK_DEST/ + # - cp -dr lib/* $FLATPAK_DEST/lib + # - cp -dr opt/* $FLATPAK_DEST/ + sources: + - type: file + url: http://ftp.cn.debian.org/debian/pool/main/k/krb5/libkrb5-dev_1.18.3-6+deb11u1_amd64.deb + sha256: d3a4a4705329c51d7a9843a72f87421938eeeef8548b3f2d46ce83f0862f9311 + - type: file + url: http://ftp.cn.debian.org/debian/pool/main/k/krb5/krb5-multidev_1.18.3-6+deb11u1_amd64.deb + sha256: b8bbee0879e6041ebbf58f62e1a526cc25225d67c140d5593b1341cc31388351 + - type: file + url: http://ftp.cn.debian.org/debian/pool/main/k/krb5/libkrb5-3_1.18.3-6+deb11u1_amd64.deb + sha256: afb9dced3fcbdbc439a166eaa217dbfd485585842f12ce4587123009618e8bfe + - type: file + url: http://ftp.cn.debian.org/debian/pool/main/k/krb5/libk5crypto3_1.18.3-6+deb11u1_amd64.deb + sha256: 4a010fc69322b6be9e141a76593f46e6588c968ee3b7cf79a3b8b7efda9aeeba + - type: file + url: http://ftp.cn.debian.org/debian/pool/main/k/krb5/libgssapi-krb5-2_1.18.3-6+deb11u1_amd64.deb + sha256: 2ab853cbd0494c06fa694906c6eeea4df79720f461c76d080eb21a3e98f44115 + + - name: build + buildsystem: simple + build-options: + ldflags: -L/app/lib/x86_64-linux-gnu + prepend-path: /app/opt/nodejs/bin:/usr/lib/sdk/node12/bin + build-args: + - --share=network + prepend-ld-library-path: /app/lib/x86_64-linux-gnu + env: + NO_WINE: true + sources: + # - type: git + # branch: dev + # url: https://github.com/msojocs/wechat-web-devtools-linux.git + - type: dir + path: tools + dest: tools + - type: dir + path: compiler + dest: compiler + build-commands: + - env + - echo $PATH + - ln -s /app/opt/package.nw package.nw + - cd package.nw && ls -l + - python --version + - python3 --version + - python2 --version + - node --version + - tools/fix-package-name.js + - tools/fix-selection-copy-node + - tools/fix-cli.sh + - tools/fix-core.sh + - tools/fix-menu.sh + - tools/fix-other.sh + - tools/rebuild-node-modules.sh 0.53.1 + # - ls -l + + - name: library + buildsystem: simple + build-commands: + - for file in *.deb; do ar p $file data.tar.xz | tar -xJ; done; + post-install: + - rm -rf usr/share/{doc,man} + - cp -dr usr/* $FLATPAK_DEST/ + - cp -dr lib/* $FLATPAK_DEST/lib + # - cp -dr opt/* $FLATPAK_DEST/ + sources: + - type: file + url: http://ftp.cn.debian.org/debian/pool/main/k/krb5/libgssapi-krb5-2_1.18.3-6+deb11u1_amd64.deb + sha256: 2ab853cbd0494c06fa694906c6eeea4df79720f461c76d080eb21a3e98f44115 + - type: file + url: http://ftp.cn.debian.org/debian/pool/main/k/krb5/libkrb5-3_1.18.3-6+deb11u1_amd64.deb + sha256: afb9dced3fcbdbc439a166eaa217dbfd485585842f12ce4587123009618e8bfe + - type: file + url: http://ftp.cn.debian.org/debian/pool/main/k/krb5/libk5crypto3_1.18.3-6+deb11u1_amd64.deb + sha256: 4a010fc69322b6be9e141a76593f46e6588c968ee3b7cf79a3b8b7efda9aeeba + - type: file + url: http://ftp.cn.debian.org/debian/pool/main/k/krb5/libkrb5support0_1.18.3-6+deb11u1_amd64.deb + sha256: 1f19908dbd37bd2ba9b3b3c9eb6ab8bee9a72f72745e6887f5366bb5fece654b + - type: file + url: http://ftp.cn.debian.org/debian/pool/main/k/keyutils/libkeyutils1_1.6.1-2_amd64.deb + sha256: f01060b434d8cad3c58d5811d2082389f11b3db8152657d6c22c1d298953f2a5 + + - name: clean + buildsystem: simple + build-commands: + - cp /app/opt/nodejs/bin/node /app/opt/nwjs + - cd /app/opt/nwjs && ln -s node node.exe + - rm -rf /app/opt/nodejs + + - name: startup + buildsystem: simple + build-commands: + - sed -i 's/Icon=dir\/res\/icons\/wechat-devtools.svg/Icon=io.github.msojocs.wechat_devtools/' template.desktop + - sed -i 's/Exec=dir\/bin\/wechat-devtools/Exec=startup/' template.desktop + post-install: + - install -Dm755 wechat-devtools /app/opt/bin/wechat-devtools + - install -Dm755 startup.sh /app/bin/startup + - install -Dm644 template.desktop /app/share/applications/io.github.msojocs.wechat-devtools.desktop + - install -Dm644 wechat-devtools.svg /app/share/icons/hicolor/scalable/apps/io.github.msojocs.wechat-devtools.svg + sources: + - type: file + path: bin/wechat-devtools + - type: file + path: res/flatpak/startup.sh + - type: file + path: res/template.desktop + - type: file + path: res/icons/wechat-devtools.svg + \ No newline at end of file diff --git a/res/flatpak/io.github.msojocs.wechat-devtools.yml b/res/flatpak/io.github.msojocs.wechat-devtools.yml deleted file mode 100644 index f72b945..0000000 --- a/res/flatpak/io.github.msojocs.wechat-devtools.yml +++ /dev/null @@ -1,83 +0,0 @@ -app-id: io.github.msojocs.wechat-devtools -runtime: org.freedesktop.Platform -runtime-version: '21.08' -sdk: org.freedesktop.Sdk -command: startup -finish-args: - # X11 + XShm access - - --share=ipc - - --socket=x11 - # Wayland access - - --socket=wayland - # Needs to talk to the network: - - --share=network - # Needs to save files locally - - --filesystem=host - - --metadata=X-DConf=migrate-path=/org/gnome/dictionary/ -modules: - - name: nwjs - buildsystem: simple - sources: - - type: dir - # url: https://npm.taobao.org/mirrors/nwjs/v0.53.1/nwjs-sdk-v0.53.1-linux-x64.tar.gz - # md5: b6f49803c51d0abacca2d1e566c7fe19 - path: nwjs - build-commands: - - ls -l - - rm package.nw - - mkdir -p /app/opt/nwjs - - cp -r . /app/opt/nwjs - - name: package.nw - buildsystem: simple - sources: - - type: dir - # url: https://npm.taobao.org/mirrors/nwjs/v0.53.1/nwjs-sdk-v0.53.1-linux-x64.tar.gz - # md5: b6f49803c51d0abacca2d1e566c7fe19 - path: package.nw - build-commands: - - ls -l - - mkdir -p /app/opt/package.nw - - cp -r . /app/opt/package.nw - - name: wechat-devtools - buildsystem: simple - build-commands: - - install -Dm755 wechat-devtools /app/opt/bin/wechat-devtools - - install -Dm755 startup.sh /app/bin/startup - - install -Dm644 io.github.msojocs.wechat_devtools.desktop /app/share/applications/io.github.msojocs.wechat-devtools.desktop - - install -Dm644 io.github.msojocs.wechat_devtools.svg /app/share/icons/hicolor/scalable/apps/io.github.msojocs.wechat-devtools.svg - - ar p libgssapi-krb5-2_1.18.3-6+deb11u1_amd64.deb data.tar.xz | tar -xJ - - ar p libkrb5-3_1.18.3-6+deb11u1_amd64.deb data.tar.xz | tar -xJ - - ar p libk5crypto3_1.18.3-6+deb11u1_amd64.deb data.tar.xz | tar -xJ - - ar p libkrb5support0_1.18.3-6+deb11u1_amd64.deb data.tar.xz | tar -xJ - - ar p libkeyutils1_1.6.1-2_amd64.deb data.tar.xz | tar -xJ - - ls -l - post-install: - - rm -rf usr/share/{doc,man} - - cp -dr usr/* $FLATPAK_DEST/ - - cp -dr lib/* $FLATPAK_DEST/lib - # - cp -dr opt/* $FLATPAK_DEST/ - sources: - - type: file - path: bin/wechat-devtools - - type: file - path: startup.sh - - type: file - path: io.github.msojocs.wechat_devtools.desktop - - type: file - path: io.github.msojocs.wechat_devtools.svg - - type: file - url: http://ftp.cn.debian.org/debian/pool/main/k/krb5/libgssapi-krb5-2_1.18.3-6+deb11u1_amd64.deb - sha256: 2ab853cbd0494c06fa694906c6eeea4df79720f461c76d080eb21a3e98f44115 - - type: file - url: http://ftp.cn.debian.org/debian/pool/main/k/krb5/libkrb5-3_1.18.3-6+deb11u1_amd64.deb - sha256: afb9dced3fcbdbc439a166eaa217dbfd485585842f12ce4587123009618e8bfe - - type: file - url: http://ftp.cn.debian.org/debian/pool/main/k/krb5/libk5crypto3_1.18.3-6+deb11u1_amd64.deb - sha256: 4a010fc69322b6be9e141a76593f46e6588c968ee3b7cf79a3b8b7efda9aeeba - - type: file - url: http://ftp.cn.debian.org/debian/pool/main/k/krb5/libkrb5support0_1.18.3-6+deb11u1_amd64.deb - sha256: 1f19908dbd37bd2ba9b3b3c9eb6ab8bee9a72f72745e6887f5366bb5fece654b - - type: file - url: http://ftp.cn.debian.org/debian/pool/main/k/keyutils/libkeyutils1_1.6.1-2_amd64.deb - sha256: f01060b434d8cad3c58d5811d2082389f11b3db8152657d6c22c1d298953f2a5 - \ No newline at end of file diff --git a/tools/build-deepin copy.sh b/tools/build-deepin copy.sh deleted file mode 100755 index 258f92c..0000000 --- a/tools/build-deepin copy.sh +++ /dev/null @@ -1,93 +0,0 @@ -#!/bin/bash -set -e -notice() { - echo -e "\033[36m $1 \033[0m " -} -fail() { - echo -e "\033[41;37m 失败 \033[0m $1" -} - - -root_dir=$(cd `dirname $0`/.. && pwd -P) -DEVTOOLS_VERSION=$( cat "$root_dir/package.nw/package.json" | grep -m 1 -Eo "\"[0-9]{1}\.[0-9]{2}\.[0-9]+" ) -DEVTOOLS_VERSION="${DEVTOOLS_VERSION//\"/}" -echo $BUILD_VERSION -if [ -n "$1" ];then - export BUILD_VERSION=$1 -fi -if [ -z "$BUILD_VERSION" ];then - export BUILD_VERSION='continuous' -fi -if [ "$BUILD_VERSION" == "continuous" ];then - export BUILD_VERSION="v${DEVTOOLS_VERSION}-continuous" -fi - -notice "检查版本号 -> $BUILD_VERSION" -INPUT_VERSION=$( echo $BUILD_VERSION | sed 's/v//' | sed 's/-.*//' ) -if [[ "$INPUT_VERSION" != "$DEVTOOLS_VERSION" ]];then - fail "传入版本号与实际版本号不一致!" - exit 1 -fi - -############ 准备构建deb包所需的文件及结构 ################ -package_name="io.github.msojocs.wechat-devtools" -if [[ $NO_WINE == 'true' ]];then - BUILD_MARK='no_wine' - package_name="${package_name}-no-wine" -else - BUILD_MARK='wine' - NAME_SUFFIX=" (wine)" - package_name="${package_name}-wine" -fi - -echo "root_dir: $root_dir" -tmp_dir="$root_dir/tmp" -build_dir="$root_dir/tmp/$package_name" -base_dir="$build_dir/opt/apps/$package_name" - -# Remove any previous build -rm -rf $build_dir -# Make usr and icons dirs -notice "Make Dirs" -mkdir -p $base_dir/{entries,files} -mkdir -p $base_dir/entries/{applications,icons/hicolor/scalable/apps/,mime,plugins,services} -mkdir -p $base_dir/files/{bin/bin,doc,lib} - -notice "COPY Files" -cp -r "$root_dir/res/deepin"/* $build_dir -mv "$build_dir/opt/apps/io.github.msojocs.wechat-devtools"/* $base_dir -rm -r "$build_dir/opt/apps/io.github.msojocs.wechat-devtools" -sed -i "s/BUILD_VERSION/${BUILD_VERSION//v/}/" "$build_dir/debian/control" "$base_dir/info" -sed -i "s/io.github.msojocs.wechat-devtools/$package_name/g" "$base_dir/info" "$build_dir/debian/control" -\cp -rf "$root_dir/bin/wechat-devtools" "$base_dir/files/bin/bin/wechat-devtools" - -# desktop -\cp -rf "$root_dir/res/template.desktop" "$base_dir/entries/applications/$package_name.desktop" -sed -i "s#Icon=dir/res/icons/wechat-devtools.svg#Icon=$package_name#" "$base_dir/entries/applications/$package_name.desktop" -sed -i "s#dir#/opt/apps/$package_name/files/bin#" "$base_dir/entries/applications/$package_name.desktop" -sed -i "s/WeChat Dev Tools/WeChat Dev Tools$NAME_SUFFIX/g" "$base_dir/info" "$base_dir/entries/applications/$package_name.desktop" -sed -i "s/微信开发者工具/微信开发者工具$NAME_SUFFIX/g" "$base_dir/entries/applications/$package_name.desktop" - -\cp -rf "$root_dir/res/icons/wechat-devtools.svg" "$base_dir/entries/icons/hicolor/scalable/apps/$package_name.svg" - -# 主体文件 -cp -r "$root_dir/package.nw" "$base_dir/files/bin/package.nw" -cp -r "$root_dir/nwjs" "$base_dir/files/bin/nwjs" -if [ -f "$root_dir/node/bin/node" ];then - rm -rf "$base_dir/files/bin/nwjs"/{node,node.exe} - cp "$root_dir/node/bin/node" "$base_dir/files/bin/nwjs/node" - cd "$base_dir/files/bin/nwjs/" && ln -s "node" "node.exe" -fi -# chown -R root:root "$base_dir" - -notice "BUILD DEB Package" -cd "$build_dir" -ls -l "$build_dir" -mkdir -p "$root_dir/tmp/build" - -if [[ ! $NO_WINE -eq 'true' ]];then - echo "Depends: wine, wine-binfmt" >> "$build_dir/debian/control" -fi - -# dpkg-deb -b . "$root_dir/tmp/build/WeChat_Dev_Tools_${BUILD_VERSION}_amd64_${BUILD_MARK}_deepin.deb" -debuild \ No newline at end of file diff --git a/tools/build-flatpak.sh b/tools/build-flatpak.sh index 9c8527e..2b78e43 100755 --- a/tools/build-flatpak.sh +++ b/tools/build-flatpak.sh @@ -68,6 +68,6 @@ EOF # flatpak-builder build-dir io.github.msojocs.wechat-devtools.yml --force-clean -flatpak-builder build-dir io.github.msojocs.wechat-devtools.yml --install --force-clean --user +flatpak-builder build-dir io.github.msojocs.wechat-devtools.yml --force-clean --install --user flatpak run io.github.msojocs.wechat-devtools \ No newline at end of file From da0a56a89256a5b9792edd625666d06949ede55c Mon Sep 17 00:00:00 2001 From: msojocs Date: Thu, 7 Apr 2022 12:16:02 +0800 Subject: [PATCH 13/21] =?UTF-8?q?fix:=20=E5=8F=AF=E8=83=BD=E7=9A=84vscode-?= =?UTF-8?q?ripgrep/bin/rg=20=E4=B8=8D=E5=AD=98=E5=9C=A8=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tools/rebuild-node-modules.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/rebuild-node-modules.sh b/tools/rebuild-node-modules.sh index 6d65614..952c3b5 100755 --- a/tools/rebuild-node-modules.sh +++ b/tools/rebuild-node-modules.sh @@ -82,7 +82,7 @@ export JOBS=$max_thread vscode-oniguruma \ vscode-ripgrep \ nodegit \ - --registry=http://registry.npmmirror.com + --registry=http://registry.npmmirror.com \ --nodegit_binary_host_mirror=http://npmmirror.com/mirrors/nodegit/v0.27.0/) # reinstall modules # rebuild @@ -104,6 +104,7 @@ cp -fr "${package_dir}/node_modules_tmp/node_modules/nodegit" "${package_dir}/no (cd "${package_dir}/node_modules_tmp/node_modules" && find -name ".deps" | xargs -I{} rm -rf {} && find -name "obj.target" | xargs -I{} rm -rf {} && find -name "*.a" -delete && find -name "*.lib" -delete && find -name "*.mk" -delete) (cd "${package_dir}/node_modules_tmp/node_modules" && find -name "*.node" | xargs -I{} \cp -rf {} ${package_dir}/node_modules/{}) +cd "${package_dir}/node_modules_tmp/node_modules/vscode-ripgrep" && npm run postinstall mkdir -p "${package_dir}/node_modules/vscode-ripgrep/bin" \cp -fr "${package_dir}/node_modules_tmp/node_modules/vscode-ripgrep/bin/rg" "${package_dir}/node_modules/vscode-ripgrep/bin/rg" From 039de9c1b3dd53960dd7cb7fbdea6bf147481536 Mon Sep 17 00:00:00 2001 From: msojocs Date: Thu, 7 Apr 2022 12:16:18 +0800 Subject: [PATCH 14/21] update: flatpak --- io.github.msojocs.wechat-devtools.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/io.github.msojocs.wechat-devtools.yml b/io.github.msojocs.wechat-devtools.yml index b5ff423..a3a8bb6 100644 --- a/io.github.msojocs.wechat-devtools.yml +++ b/io.github.msojocs.wechat-devtools.yml @@ -111,7 +111,8 @@ modules: build-commands: - env - echo $PATH - - ln -s /app/opt/package.nw package.nw + # - ln -s /app/opt/package.nw package.nw + - cp -r /app/opt/package.nw . - cd package.nw && ls -l - python --version - python3 --version @@ -125,6 +126,9 @@ modules: - tools/fix-other.sh - tools/rebuild-node-modules.sh 0.53.1 # - ls -l + post-install: + - rm -rf /app/opt/package.nw + - cp -r package.nw /app/opt - name: library buildsystem: simple From 6f048bf662c2e2f64addd58d9039310a189af441 Mon Sep 17 00:00:00 2001 From: msojocs Date: Thu, 7 Apr 2022 12:26:45 +0800 Subject: [PATCH 15/21] update --- .github/workflows/flatpak-verify.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/flatpak-verify.yml b/.github/workflows/flatpak-verify.yml index d88c893..76b84e3 100644 --- a/.github/workflows/flatpak-verify.yml +++ b/.github/workflows/flatpak-verify.yml @@ -1,7 +1,7 @@ # This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions -name: Build Packages +name: Flatpak Verify on: release: From 15f29ca887a51d7ecc783f8fddabf4e9cd3b5d21 Mon Sep 17 00:00:00 2001 From: msojocs Date: Thu, 7 Apr 2022 13:12:07 +0800 Subject: [PATCH 16/21] update: flatpak --- .github/workflows/flatpak-verify.yml | 3 +++ io.github.msojocs.wechat-devtools.yml | 6 ++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/flatpak-verify.yml b/.github/workflows/flatpak-verify.yml index 76b84e3..f355269 100644 --- a/.github/workflows/flatpak-verify.yml +++ b/.github/workflows/flatpak-verify.yml @@ -29,6 +29,9 @@ jobs: fail-fast: false steps: - uses: actions/checkout@v2 + - name: Test + run: | + 7z # Docker is required by the docker/setup-qemu-action which enables emulation - name: Install deps run: | diff --git a/io.github.msojocs.wechat-devtools.yml b/io.github.msojocs.wechat-devtools.yml index a3a8bb6..0ed7a13 100644 --- a/io.github.msojocs.wechat-devtools.yml +++ b/io.github.msojocs.wechat-devtools.yml @@ -15,7 +15,7 @@ finish-args: - --share=network # Needs to save files locally - --filesystem=host - - --metadata=X-DConf=migrate-path=/org/gnome/dictionary/ + - --metadata=X-DConf=migrate-path=/io/github/msojocs/wechat-devtools modules: - name: nwjs buildsystem: simple @@ -97,7 +97,7 @@ modules: - --share=network prepend-ld-library-path: /app/lib/x86_64-linux-gnu env: - NO_WINE: true + - NO_WINE=true sources: # - type: git # branch: dev @@ -109,8 +109,6 @@ modules: path: compiler dest: compiler build-commands: - - env - - echo $PATH # - ln -s /app/opt/package.nw package.nw - cp -r /app/opt/package.nw . - cd package.nw && ls -l From 28e7e834f793b3c9ce05c47d41e15f8a1f49d30b Mon Sep 17 00:00:00 2001 From: msojocs Date: Thu, 7 Apr 2022 13:22:57 +0800 Subject: [PATCH 17/21] fix: 7z --- .github/workflows/flatpak-verify.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/flatpak-verify.yml b/.github/workflows/flatpak-verify.yml index f355269..8a53795 100644 --- a/.github/workflows/flatpak-verify.yml +++ b/.github/workflows/flatpak-verify.yml @@ -31,6 +31,8 @@ jobs: - uses: actions/checkout@v2 - name: Test run: | + cat /etc/issue + yum install -y p7zip p7zip-plugins 7z # Docker is required by the docker/setup-qemu-action which enables emulation - name: Install deps From 68dd8fecc8e6d92278d516870d03cd9e89b2582c Mon Sep 17 00:00:00 2001 From: msojocs Date: Fri, 8 Apr 2022 21:45:04 +0800 Subject: [PATCH 18/21] update: readme --- docker/docker-entrypoint | 2 + docs/修正主题监听.MD | 160 +++++++++++++++++++++++++++++++++++++++ readme.md | 3 +- test/core-test | 4 +- tools/wxvpkg_unpack.js | 7 ++ 5 files changed, 173 insertions(+), 3 deletions(-) create mode 100644 docs/修正主题监听.MD diff --git a/docker/docker-entrypoint b/docker/docker-entrypoint index dfe4960..5a9263d 100755 --- a/docker/docker-entrypoint +++ b/docker/docker-entrypoint @@ -7,6 +7,8 @@ notice() { echo -e "\033[36m $1 \033[0m " } +rm -rf /tmp/vscode-ripgrep-cache-1.13.2/ripgrep-v13.0.0-4-x86_64-unknown-linux-musl.tar.gz + if [ "$(id -u)" -eq '0' ];then USER_ID=${LOCAL_USER_ID:-1000} GROUP_ID=${LOCAL_GROUP_ID:-1000} diff --git a/docs/修正主题监听.MD b/docs/修正主题监听.MD new file mode 100644 index 0000000..2afd2ff --- /dev/null +++ b/docs/修正主题监听.MD @@ -0,0 +1,160 @@ +## 设置位置 + +菜单栏 -> 设置 -> 外观设置 -> 主题 + +## 定位点 + +1. F12打开调试器 +2. 进入Elements标签 +3. 变更设置,发现`body`标签的`class`属性发生变化 +4. 变化:深色添加`dark`类,浅色则移除 +5. 完整class: `class="with-vscode-font-patch --with-theming dark"` + +可以将这三个`class`作为定位点入手处理 + +## 定位具体代码 + +使用`--with-theming` + +在解压后的`core.wxvpkg`中搜索 `grep -lr '\-\-with\-theming' .` +得到两个位置: +1. (exports.ThemingEnabledClass = "--with-theming"); +2. t.body.classList.add("--with-theming"), + +第二个大概率是目标了; +正好第二个后面紧接着`this.themeChange()`,好了,看命名可以确定是这个了 +```javascript +this.setup().finally(() => { + var e, t; + document.body.classList.add("with-vscode-font-patch"), + null === (e = this.ourDocumentRef) || + void 0 === e || + e.body.classList.add("with-vscode-font-patch"), + null === (t = this.ourDocumentRef) || + void 0 === t || + t.body.classList.add("--with-theming"), + this.themeChange(); +}); +``` + +## 分析实现 + +`themeChange` 函数: +```javascript +themeChange(e) { + var t, n, i, s, o; + "dark" === + (null !== + (n = + null === (t = (e = e || this.props).settings.appearance) || + void 0 === t + ? void 0 + : t.theme) && void 0 !== n + ? n + : "dark") + ? null === (i = this.ourDocumentRef) || + void 0 === i || + i.body.classList.add("dark") + : null === (s = this.ourDocumentRef) || + void 0 === s || + s.body.classList.remove("dark"), + null === (o = this.ourDocumentRef) || + void 0 === o || + o.body.classList.add("with-vscode-font-patch"); +} +``` +命名处理: +```javascript +themeChange(config) { + var appearance, theme, docRef1, docRef2, docRef3; + console.warn('themeChange', config); + "dark" === + (null !== + (theme = + null === (appearance = (config = config || this.props).settings.appearance) || + void 0 === appearance + ? void 0 + : appearance.theme) && void 0 !== theme + ? theme + : "dark") + ? null === (docRef1 = this.ourDocumentRef) || + void 0 === docRef1 || + docRef1.body.classList.add("dark") + : null === (docRef2 = this.ourDocumentRef) || + void 0 === docRef2 || + docRef2.body.classList.remove("dark"), + null === (docRef3 = this.ourDocumentRef) || + void 0 === docRef3 || + docRef3.body.classList.add("with-vscode-font-patch"); +} +``` +审查代码,得出大致逻辑: +1. 有传入配置使用配置;没有传入,则使用当前配置 +2. 获取主题配置 +3. 有主题配置则直接使用,否则默认`dark` +4. 主题配置是`dark`添加`dark`类,否则移除 + +很明显,`theme`的值只有`dark`和`非dark`的区别(根据`console.warn`的结果看,另一个值是`white`,当然这不重要); +此处没有跟随系统的判断,应该在别处。 +另外,根据`console.warn`可以知道跟随系统也会触发`themeChange`。 + +好的,我们卡住了,需要另辟蹊径。 + +## 另辟蹊径 + +简述: 通过字符串定位触发位置 + +1. 搜索`应用(除调试器外)的主题设置`,即`grep -lr '应用(除调试器外)的主题设置' .` +2. 获取对应标志`SETTING_THEME_DESC` +3. 搜索`SETTING_THEME_DESC`,即`grep -lr 'SETTING_THEME_DESC' .` +4. 三个结果,两个翻译,确定了 + +关键代码: +```javascript +t.createElement( + "div", + { className: "uiv2-padding" }, + t.createElement( + "label", + { + className: "uiv2-radio", + onClick: this.handleAutoDetectThemeClick, + }, + t.createElement("i", { + className: r + ? "uiv2-radio-icon-o" + : "uiv2-radio-icon", + }), + t.createElement( + "span", + { className: "uiv2-radio-text" }, + o.config.FOLLOW_SYSTEM + ) + ) +) +``` + +可以看到处理“跟随系统”的函数是`handleAutoDetectThemeClick` +函数内执行`this.props.updateIDESetting("appearance", "autoDetectTheme", !0);` + +通过搜索`autoDetectTheme`,找到一个跟主题控制相关的实现 +```javascript +constructor() { + (this.onDidOSThemeChange = () => { + const o = s.OSThemeController.shared.getCurrentTheme(); + if (o === s.OSTheme.Unknown) return; + const n = o === s.OSTheme.Dark ? "dark" : "white"; + this._enabledThemeAutoDetect && + e.dispatch(t.updateIDESetting("appearance", "theme", n)), + this._enabledDevtoolsThemeAutoDetect && + e.dispatch( + t.updateIDESetting("appearance", "devtoolsTheme", n) + ); + }), + (this._enabledThemeAutoDetect = !1), + (this._enabledDevtoolsThemeAutoDetect = !1), + this.registerListeners(); +} +``` + +好了,去看看`OSThemeController`就知道怎么回事了 \ No newline at end of file diff --git a/readme.md b/readme.md index 9ce24d1..16fdf6a 100644 --- a/readme.md +++ b/readme.md @@ -150,4 +150,5 @@ git clone https://github.com/msojocs/wechat-devtools-linux.git 1. *喆 2. @shaoxp 3. . - 4. IvesSSa \ No newline at end of file + 4. IvesSSa + 5. icepie \ No newline at end of file diff --git a/test/core-test b/test/core-test index f10ab1b..3f39ebb 100755 --- a/test/core-test +++ b/test/core-test @@ -7,7 +7,7 @@ if [ "$a" == '1' ];then node tools/wxvpkg_unpack.js "$root_dir/package.nw/core.wxvpkg" "$root_dir/package.nw/core.wxvpkg.ext" else node tools/wxvpkg_pack.js package.nw/core.wxvpkg.ext package.nw/core.wxvpkg - rm -rf ~/.config/wechat_devtools/WeappCache - rm -rf ~/.config/wechat_devtools/WeappVendor + rm -rf ~/.config/wechat-devtools/WeappCache + rm -rf ~/.config/wechat-devtools/WeappVendor bin/wechat-devtools fi \ No newline at end of file diff --git a/tools/wxvpkg_unpack.js b/tools/wxvpkg_unpack.js index 112645c..9016c73 100755 --- a/tools/wxvpkg_unpack.js +++ b/tools/wxvpkg_unpack.js @@ -1,4 +1,11 @@ // Extract core.wxvpkg of current folder to dest folder +/** + * 使用: + * 两个参数 + * uppack.js from to + * from: pkg文件 + * to: 目标文件夹 + */ const path = require('path') const fs = require('fs') From cc8bf6af19a7a34c1a7995485694d9f24b5d6b15 Mon Sep 17 00:00:00 2001 From: msojocs Date: Sat, 9 Apr 2022 15:25:09 +0800 Subject: [PATCH 19/21] test: theme-check --- test/theme-check.js | 167 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 test/theme-check.js diff --git a/test/theme-check.js b/test/theme-check.js new file mode 100644 index 0000000..ef820ef --- /dev/null +++ b/test/theme-check.js @@ -0,0 +1,167 @@ +#!/usr/bin/env node +const { execSync, spawn } = require("child_process"); + +class CheckDark { + // 监听gsettings monitor org.gnome.desktop.interface gtk-theme + monitorTheme() { + let monitor = null; + const { DESKTOP_SESSION } = process.env; + switch (DESKTOP_SESSION) { + case "deepin": + monitor = spawn("gsettings", [ + "monitor", + "com.deepin.dde.appearance", + "gtk-theme", + ]); + break; + case "gnome": + case "gnome-classic": + monitor = spawn("gsettings", [ + "monitor", + "org.gnome.desktop.interface", + "gtk-theme", + ]); + break; + + default: + break; + } + monitor && + monitor.on("error", (err) => { + console.error("monitorTheme", err); + }); + monitor && + monitor.stdout.on("data", (chunk) => { + const data = chunk.toString(); + console.log(data); + }); + } + get isDark() { + const { DESKTOP_SESSION } = process.env; + console.log(DESKTOP_SESSION); + let theme = ""; + switch (DESKTOP_SESSION) { + case "deepin": + theme = execSync( + `gsettings get com.deepin.dde.appearance gtk-theme` + ); + break; + case "gnome": + case "gnome-classic": + theme = execSync( + `gsettings get org.gnome.desktop.interface gtk-theme` + ); + break; + + default: + break; + } + return theme.includes("dark"); + } +} +const cd = new CheckDark(); +console.log(cd.isDark); +cd.monitorTheme(); + +function original() { + !(function (require, directRequire) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: !0 }), + (exports.OSThemeController = exports.OSTheme = void 0); + const e = require("lodash"), + t = require("./e45a1736f0cff12ccd223e3f4dd75808.js"); + var i; + !(function (e) { + (e[(e.Dark = 0)] = "Dark"), + (e[(e.Light = 1)] = "Light"), + (e[(e.Unknown = 2)] = "Unknown"); + })((i = exports.OSTheme || (exports.OSTheme = {}))); + const r = process.versions.nw || "0.0.0"; + exports.OSThemeController = class { + constructor() { + (this._onDidThemeChange = new t.EasyEmitter()), + (this.onMediaQueryChange = e.debounce((e) => { + console.warn("onMediaQueryChange", e); + const t = e.matches; + (this._theme = t ? i.Dark : i.Light), + this._onDidThemeChange.fire(this._theme); + }, 400)), + (this._theme = void 0), + (this._isEnabled = void 0), + (this._mediaQuery2 = void 0), + this.registerListeners(); + } + static get shared() { + return ( + this._shared || (this._shared = new this()), this._shared + ); + } + get onDidThemeChange() { + return this._onDidThemeChange.event; + } + registerListeners() { + var e, t; + this.isEnabled() && + (null === (e = this.mediaQuery) || + void 0 === e || + e.addEventListener("change", this.onMediaQueryChange), + null === (t = this.mediaQuery2) || + void 0 === t || + t.addEventListener("change", this.onMediaQueryChange)); + } + getCurrentTheme() { + console.warn("getCurrentTheme"); + return ( + this._theme || (this._theme = this.tryGetCurrentTheme()), + this._theme + ); + } + isEnabled() { + var e; + if (void 0 === this._isEnabled) { + const i = t.compareVersion("0.44.6", r) <= 0, + n = + "not all" !== + (null === + (e = window.matchMedia( + "(prefers-color-scheme)" + )) || void 0 === e + ? void 0 + : e.media); + this._isEnabled = i && n; + } + return this._isEnabled; + } + tryGetCurrentTheme() { + if (this.isEnabled()) { + return this.mediaQuery.matches ? i.Dark : i.Light; + } + return i.Unknown; + } + get mediaQuery() { + return ( + this._mediaQuery || + (this._mediaQuery = window.matchMedia( + "(prefers-color-scheme: dark)" + )), + this._mediaQuery + ); + } + get mediaQuery2() { + return ( + void 0 === this._mediaQuery2 && + (global.contentWindow && global.contentWindow !== window + ? (this._mediaQuery2 = + global.contentWindow.matchMedia( + "(prefers-color-scheme: dark)" + )) + : (this._mediaQuery2 = null)), + this._mediaQuery2 + ); + } + getDefaultTheme() { + return i.Dark; + } + }; + })(require("licia/lazyImport")(require), require); +} From a7a2c98d2588c85bf353854b0291a7dd7a8a49ba Mon Sep 17 00:00:00 2001 From: msojocs Date: Sat, 9 Apr 2022 15:37:03 +0800 Subject: [PATCH 20/21] update: theme-check --- test/theme-check.js | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/test/theme-check.js b/test/theme-check.js index ef820ef..576b1b6 100644 --- a/test/theme-check.js +++ b/test/theme-check.js @@ -24,6 +24,9 @@ class CheckDark { break; default: + console.warn( + `NOT SUPPORTED !!! DESKTOP_SESSION: ${DESKTOP_SESSION}` + ); break; } monitor && @@ -32,8 +35,13 @@ class CheckDark { }); monitor && monitor.stdout.on("data", (chunk) => { + // TODO: 防抖动包装 const data = chunk.toString(); + const t = data.includes("dark"); console.log(data); + console.log("dark", t); + // (this._theme = t ? i.Dark : i.Light), + // this._onDidThemeChange.fire(this._theme); }); } get isDark() { @@ -80,6 +88,7 @@ function original() { exports.OSThemeController = class { constructor() { (this._onDidThemeChange = new t.EasyEmitter()), + // debounce, 防抖动, 该函数会从上一次被调用后,延迟 400 毫秒后调用 func 方法 (this.onMediaQueryChange = e.debounce((e) => { console.warn("onMediaQueryChange", e); const t = e.matches; @@ -134,6 +143,7 @@ function original() { } tryGetCurrentTheme() { if (this.isEnabled()) { + // return this.isDark ? i.Dark : i.Light; return this.mediaQuery.matches ? i.Dark : i.Light; } return i.Unknown; @@ -159,6 +169,28 @@ function original() { this._mediaQuery2 ); } + get isDark() { + const { DESKTOP_SESSION } = process.env; + console.log(DESKTOP_SESSION); + let theme = ""; + switch (DESKTOP_SESSION) { + case "deepin": + theme = execSync( + `gsettings get com.deepin.dde.appearance gtk-theme` + ); + break; + case "gnome": + case "gnome-classic": + theme = execSync( + `gsettings get org.gnome.desktop.interface gtk-theme` + ); + break; + + default: + break; + } + return theme.includes("dark"); + } getDefaultTheme() { return i.Dark; } From 52b8d95a2fb38a6178f69cd95bd94591d90fc031 Mon Sep 17 00:00:00 2001 From: msojocs Date: Sat, 9 Apr 2022 19:42:34 +0800 Subject: [PATCH 21/21] fix: theme - follow system --- test/env | 2 - test/fix-core.sh | 16 +++++ test/{fix-wcc-node => fix-wcc-node.sh} | 0 test/theme-check.js | 96 ++++++++++++++++++-------- tools/fix-core.sh | 9 +++ 5 files changed, 94 insertions(+), 29 deletions(-) delete mode 100755 test/env create mode 100755 test/fix-core.sh rename test/{fix-wcc-node => fix-wcc-node.sh} (100%) diff --git a/test/env b/test/env deleted file mode 100755 index 6f0e172..0000000 --- a/test/env +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env node -console.log(process.version) \ No newline at end of file diff --git a/test/fix-core.sh b/test/fix-core.sh new file mode 100755 index 0000000..4b29f9c --- /dev/null +++ b/test/fix-core.sh @@ -0,0 +1,16 @@ +#!/bin/bash +root_dir=$(cd `dirname $0`/.. && pwd -P) + +package_dir="$root_dir/package.nw" +tmp_dir="$root_dir/package.nw" +mkdir -p $tmp_dir +unpack_script="$root_dir/tools/wxvpkg_unpack.js" +pack_script="$root_dir/tools/wxvpkg_pack.js" + +find_result=$( grep -lr "OSThemeController=" "$tmp_dir/core.wxvpkg.ext" ) +echo "theme: $find_result" +sed -i 's/"use strict";O/"use strict";const {execSync,spawn}=require("child_process");O/' $find_result +sed -i 's/this.registerListeners()/this.monitorTheme()/' $find_result +sed -i 's/}registerListeners/}monitorTheme(){let monitor=null;const{DESKTOP_SESSION}=process.env;switch(DESKTOP_SESSION){case"deepin":monitor=spawn("gsettings",["monitor","com.deepin.dde.appearance","gtk-theme",]);break;case"gnome":case"gnome-classic":monitor=spawn("gsettings",["monitor","org.gnome.desktop.interface","gtk-theme",]);break;default:console.warn(`NOT SUPPORTED!!!DESKTOP_SESSION:${DESKTOP_SESSION}`);break}monitor\&\&monitor.on("error",(err)=>{console.error("monitorTheme",err)});monitor\&\&monitor.stdout.on("data",e.debounce((chunk)=>{const data=chunk.toString();const t=data.includes("dark");console.warn(data);console.warn("dark",t);(this._theme=t?i.Dark:i.Light),this._onDidThemeChange.fire(this._theme)},400))}registerListeners/' $find_result +sed -i 's/mediaQuery.matches/isDark/' $find_result +sed -i 's/}getDefaultTheme/}get isDark(){const{DESKTOP_SESSION}=process.env;console.log(DESKTOP_SESSION);let theme="";switch(DESKTOP_SESSION){case"deepin":theme=execSync(`gsettings get com.deepin.dde.appearance gtk-theme`);break;case"gnome":case"gnome-classic":theme=execSync(`gsettings get org.gnome.desktop.interface gtk-theme`);break;default:break}return theme.includes("dark")}getDefaultTheme/' $find_result \ No newline at end of file diff --git a/test/fix-wcc-node b/test/fix-wcc-node.sh similarity index 100% rename from test/fix-wcc-node rename to test/fix-wcc-node.sh diff --git a/test/theme-check.js b/test/theme-check.js index 576b1b6..579b91a 100644 --- a/test/theme-check.js +++ b/test/theme-check.js @@ -35,7 +35,7 @@ class CheckDark { }); monitor && monitor.stdout.on("data", (chunk) => { - // TODO: 防抖动包装 + // TODO: 防抖动包装 const data = chunk.toString(); const t = data.includes("dark"); console.log(data); @@ -68,12 +68,13 @@ class CheckDark { } } const cd = new CheckDark(); -console.log(cd.isDark); cd.monitorTheme(); +console.log(cd.isDark); function original() { !(function (require, directRequire) { "use strict"; + const { execSync, spawn } = require("child_process"); Object.defineProperty(exports, "__esModule", { value: !0 }), (exports.OSThemeController = exports.OSTheme = void 0); const e = require("lodash"), @@ -98,7 +99,7 @@ function original() { (this._theme = void 0), (this._isEnabled = void 0), (this._mediaQuery2 = void 0), - this.registerListeners(); + this.monitorTheme(); } static get shared() { return ( @@ -108,6 +109,47 @@ function original() { get onDidThemeChange() { return this._onDidThemeChange.event; } + monitorTheme() { + let monitor = null; + const { DESKTOP_SESSION } = process.env; + switch (DESKTOP_SESSION) { + case "deepin": + monitor = spawn("gsettings", [ + "monitor", + "com.deepin.dde.appearance", + "gtk-theme", + ]); + break; + case "gnome": + case "gnome-classic": + monitor = spawn("gsettings", [ + "monitor", + "org.gnome.desktop.interface", + "gtk-theme", + ]); + break; + + default: + console.warn( + `NOT SUPPORTED !!! DESKTOP_SESSION: ${DESKTOP_SESSION}` + ); + break; + } + monitor && + monitor.on("error", (err) => { + console.error("monitorTheme", err); + }); + monitor && + monitor.stdout.on("data", e.debounce((chunk) => { + // 防抖动包装 防抖动, 该函数会从上一次被调用后,延迟 400 毫秒后调用 本方法 + const data = chunk.toString(); + const t = data.includes("dark"); + console.warn(data); + console.warn("dark", t); + (this._theme = t ? i.Dark : i.Light), + this._onDidThemeChange.fire(this._theme); + }, 400)); + } registerListeners() { var e, t; this.isEnabled() && @@ -143,8 +185,8 @@ function original() { } tryGetCurrentTheme() { if (this.isEnabled()) { - // return this.isDark ? i.Dark : i.Light; - return this.mediaQuery.matches ? i.Dark : i.Light; + return this.isDark ? i.Dark : i.Light; + // return this.mediaQuery.matches ? i.Dark : i.Light; } return i.Unknown; } @@ -169,28 +211,28 @@ function original() { this._mediaQuery2 ); } - get isDark() { - const { DESKTOP_SESSION } = process.env; - console.log(DESKTOP_SESSION); - let theme = ""; - switch (DESKTOP_SESSION) { - case "deepin": - theme = execSync( - `gsettings get com.deepin.dde.appearance gtk-theme` - ); - break; - case "gnome": - case "gnome-classic": - theme = execSync( - `gsettings get org.gnome.desktop.interface gtk-theme` - ); - break; - - default: - break; - } - return theme.includes("dark"); - } + get isDark() { + const { DESKTOP_SESSION } = process.env; + console.log(DESKTOP_SESSION); + let theme = ""; + switch (DESKTOP_SESSION) { + case "deepin": + theme = execSync( + `gsettings get com.deepin.dde.appearance gtk-theme` + ); + break; + case "gnome": + case "gnome-classic": + theme = execSync( + `gsettings get org.gnome.desktop.interface gtk-theme` + ); + break; + + default: + break; + } + return theme.includes("dark"); + } getDefaultTheme() { return i.Dark; } diff --git a/tools/fix-core.sh b/tools/fix-core.sh index 9150a54..e6577bf 100755 --- a/tools/fix-core.sh +++ b/tools/fix-core.sh @@ -69,6 +69,15 @@ if [[ $NO_WINE == 'true' ]];then echo $timeStamp > "${package_dir}/.build_time" fi +# fix theme +find_result=$( grep -lr "OSThemeController=" "$tmp_dir/core.wxvpkg" ) +echo "theme: $find_result" +sed -i 's/"use strict";O/"use strict";const {execSync,spawn}=require("child_process");O/' $find_result +sed -i 's/this.registerListeners()/this.monitorTheme()/' $find_result +sed -i 's/}registerListeners/}monitorTheme(){let monitor=null;const{DESKTOP_SESSION}=process.env;switch(DESKTOP_SESSION){case"deepin":monitor=spawn("gsettings",["monitor","com.deepin.dde.appearance","gtk-theme",]);break;case"gnome":case"gnome-classic":monitor=spawn("gsettings",["monitor","org.gnome.desktop.interface","gtk-theme",]);break;default:console.warn(`NOT SUPPORTED!!!DESKTOP_SESSION:${DESKTOP_SESSION}`);break}monitor\&\&monitor.on("error",(err)=>{console.error("monitorTheme",err)});monitor\&\&monitor.stdout.on("data",e.debounce((chunk)=>{const data=chunk.toString();const t=data.includes("dark");console.warn(data);console.warn("dark",t);(this._theme=t?i.Dark:i.Light),this._onDidThemeChange.fire(this._theme)},400))}registerListeners/' $find_result +sed -i 's/mediaQuery.matches/isDark/' $find_result +sed -i 's/}getDefaultTheme/}get isDark(){const{DESKTOP_SESSION}=process.env;console.log(DESKTOP_SESSION);let theme="";switch(DESKTOP_SESSION){case"deepin":theme=execSync(`gsettings get com.deepin.dde.appearance gtk-theme`);break;case"gnome":case"gnome-classic":theme=execSync(`gsettings get org.gnome.desktop.interface gtk-theme`);break;default:break}return theme.includes("dark")}getDefaultTheme/' $find_result + # pack 路径 到 文件 echo "pack" node "$pack_script" "$tmp_dir/core.wxvpkg" "$package_dir/core.wxvpkg"