diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 58580e60..8da2f0e2 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -1,14 +1,15 @@ name: Linux on: [push, pull_request] - +permissions: + contents: write jobs: build: runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v3 - name: 下载submodule源码 run: mv -f .gitmodules_github .gitmodules && git submodule sync && git submodule update --init @@ -33,4 +34,19 @@ jobs: - name: 运行MediaServer run: pwd && cd release/linux/Debug && sudo ./MediaServer -d & + - name: generate openapi + if: github.ref == 'refs/heads/master' + run: cd tools/openapi && python3 generates.py install-dependencies + + - name: Commit and push if ./www/swagger/openapi.json changed + if: github.ref == 'refs/heads/master' + run: | + git diff --exit-code ./www/swagger/openapi.json || ( + git config user.name alexliyu7352 + git config user.email liyu7352@gmail.com + git add ./www/swagger/openapi.json + git commit -m "update openapi.json" + git push origin HEAD:master + ) + diff --git a/tools/openapi/generates.py b/tools/openapi/generates.py index 2fdc1d32..77965ebd 100644 --- a/tools/openapi/generates.py +++ b/tools/openapi/generates.py @@ -43,18 +43,26 @@ def run_cmd(cmd: str, assert_success=False, capture_output=False, env=None) -> b return True -def check_dependencies() -> None: +def check_dependencies(need_install:bool = False) -> None: """ check dependencies :return: """ if not check_installed("p2o"): - print() - print("p2o is not installed, please install it first!") - print("If you use npm, you can install it by the following command:") - print("npm install -g postman-to-openapi") - print() - sys.exit(1) + if not need_install: + print() + print("p2o is not installed, please install it first!") + print("If you use npm, you can install it by the following command:") + print("npm install -g postman-to-openapi") + print() + sys.exit(1) + else: + # 先检查是否安装了npm, 没有就自动安装 + if not check_installed("npm"): + print("npm is not installed, install it first") + run_cmd("sudo apt install npm -y") + print("p2o is not installed, install it") + run_cmd("sudo npm install -g postman-to-openapi") else: print("p2o is installed") @@ -70,6 +78,12 @@ def get_version() -> str: elif os.path.isfile("../../cmake-build-release/version.h"): print("Found version.h in cmake-build-release") version_h_path = "../../cmake-build-release/version.h" + elif os.path.isfile("../../build/version.h"): + print("Found version.h in build") + version_h_path = "../../build/version.h" + elif os.path.isfile("../../linux_build/version.h"): + print("Found version.h in linux_build") + version_h_path = "../../linux_build/version.h" else: print("version.h not found") print("Please compile first") @@ -138,7 +152,11 @@ def generate() -> None: if __name__ == "__main__": - check_dependencies() + # 如果有参数install-dependencies,则安装依赖 + if len(sys.argv) > 1 and sys.argv[1] == "install-dependencies": + check_dependencies(True) + else: + check_dependencies() version = get_version() secret = get_secret() update_options(version, secret)