From ae57008f4c2f759ea3fc59fd9ee1e340d454905e Mon Sep 17 00:00:00 2001 From: Joey Yakimowich-Payne Date: Tue, 8 Nov 2022 09:30:50 -0700 Subject: [PATCH] Reorganize project --- .github/workflows/default.yml | 58 ++++++++++++++++++++--------------- ci/deb-script.sh | 35 +++++++++++---------- info.cfg | 3 -- project/__init__.py | 2 +- info.py => project/info.py | 0 project/main.py | 5 ++- pyinstallertemplate.py | 6 ++++ 7 files changed, 63 insertions(+), 46 deletions(-) delete mode 100644 info.cfg rename info.py => project/info.py (100%) create mode 100644 pyinstallertemplate.py diff --git a/.github/workflows/default.yml b/.github/workflows/default.yml index 16c9834..791b3fa 100644 --- a/.github/workflows/default.yml +++ b/.github/workflows/default.yml @@ -23,7 +23,7 @@ jobs: os: [ubuntu-20.04, ubuntu-22.04] steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: @@ -36,22 +36,26 @@ jobs: - name: Setup Env Vars run: | echo "BUILD_DIR=build" >> $GITHUB_ENV - export VER="$(cat info.py | grep -w version | awk -F'"' '$0=$2')" - export PROJ_NAME="$(cat info.py | grep -w name | awk -F'"' '$0=$2')" - export PROJ_MOD="$(cat info.py | grep -w module_name | awk -F'"' '$0=$2')" - export MAIN_FILE="$(cat info.py | grep -w main_file | awk -F'"' '$0=$2')" - export BUNDLE_ID="$(cat info.py | grep -w bundle_identifier | awk -F'"' '$0=$2')" - export EMAIL="$(cat info.py | grep -w email | awk -F'"' '$0=$2')" - export DESCRIPTION="$(cat info.py | grep -w description | awk -F'"' '$0=$2')" + FILE_LOC=$(find . -name info.py) + export VER="$(cat $FILE_LOC | grep -w version | awk -F'"' '$0=$2')" + export PROJ_NAME="$(cat $FILE_LOC | grep -w name | awk -F'"' '$0=$2')" + export PROJ_MOD="$(cat $FILE_LOC | grep -w module_name | awk -F'"' '$0=$2')" + export MAIN_FILE="$(cat $FILE_LOC | grep -w main_file | awk -F'"' '$0=$2')" + export MAIN_MOD="$(cat $FILE_LOC | grep -w main_module | awk -F'"' '$0=$2')" + export BUNDLE_ID="$(cat $FILE_LOC | grep -w bundle_identifier | awk -F'"' '$0=$2')" + export EMAIL="$(cat $FILE_LOC | grep -w email | awk -F'"' '$0=$2')" + export DESCRIPTION="$(cat $FILE_LOC | grep -w description | awk -F'"' '$0=$2')" echo "VER=$VER" >> $GITHUB_ENV echo "DESCRIPTION=$DESCRIPTION" >> $GITHUB_ENV echo "PROJECT_NAME=$PROJ_NAME" >> $GITHUB_ENV echo "PROJ_DIR=$PROJ_MOD" >> $GITHUB_ENV echo "PROJ_PATH=$PROJ_MOD" >> $GITHUB_ENV echo "PROJ_MOD=$PROJ_MOD" >> $GITHUB_ENV + echo "MAIN_MOD=$MAIN_MOD" >> $GITHUB_ENV echo "MAIN_FILE=$MAIN_FILE" >> $GITHUB_ENV echo "BUNDLE_ID=$BUNDLE_ID" >> $GITHUB_ENV echo "EMAIL=$EMAIL" >> $GITHUB_ENV + cat > pyinstaller.py <(envsubst < pyinstallertemplate.py) - name: Check Python install run: | @@ -91,15 +95,14 @@ jobs: --icon "${{ env.PROJ_DIR }}/resources/icon.png" \ --hidden-import configobj \ --distpath "${{ env.BUILD_DIR }}/ProjectLinux" \ - --onefile -n "${{ env.PROJ_MOD }}-bin" "${{ env.PROJ_DIR }}/${{ env.MAIN_FILE }}" + --onefile -n "${{ env.PROJ_MOD }}-bin" pyinstaller.py cp "${{ env.BUILD_DIR }}/ProjectLinux/${{ env.PROJ_MOD }}-bin" . ls -al "${{ env.BUILD_DIR }}/ProjectLinux" ci/deb-script.sh - uses: jiro4989/build-deb-action@v2 with: - package: ${{ env.PROJ_PATH }} - file_name: ${{ env.PROJ_PATH }}_${{ env.VER }}.deb + package: ${{ env.PROJ_PATH }}_${{ env.VER }} package_root: .debpkg maintainer: ${{ env.EMAIL }} version: ${{ env.VER }} # refs/tags/v*.*.* @@ -110,14 +113,14 @@ jobs: - name: Deploy bin uses: actions/upload-artifact@v2.0.1 with: - name: ${{ env.PROJ_PATH }}_${{ env.VER }} + name: ${{ env.PROJ_PATH }}_${{ env.VER }}-Ubuntu path: | ${{ env.PROJ_MOD }}-bin - name: Deploy deb uses: actions/upload-artifact@v2.0.1 with: - name: ${{ env.PROJ_PATH }}_${{ env.VER }}.deb + name: ${{ env.PROJ_PATH }}_${{ env.VER }}-Ubuntu path: | ${{ env.PROJ_PATH }}_*.deb # windows: @@ -131,7 +134,7 @@ jobs: os: [macos-11, macos-12] steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Setup Homebrew run: | @@ -145,19 +148,25 @@ jobs: - name: Setup Env Vars run: | echo "BUILD_DIR=build" >> $GITHUB_ENV - export VER="$(cat info.py | grep -w version | awk -F'"' '$0=$2')" - export PROJ_NAME="$(cat info.py | grep -w name | awk -F'"' '$0=$2')" - export PROJ_MOD="$(cat info.py | grep -w module_name | awk -F'"' '$0=$2')" - export MAIN_FILE="$(cat info.py | grep -w main_file | awk -F'"' '$0=$2')" - export BUNDLE_ID="$(cat info.py | grep -w bundle_identifier | awk -F'"' '$0=$2')" + FILE_LOC=$(find . -name info.py) + export VER="$(cat $FILE_LOC | grep -w version | awk -F'"' '$0=$2')" + export PROJ_NAME="$(cat $FILE_LOC | grep -w name | awk -F'"' '$0=$2')" + export PROJ_MOD="$(cat $FILE_LOC | grep -w module_name | awk -F'"' '$0=$2')" + export MAIN_FILE="$(cat $FILE_LOC | grep -w main_file | awk -F'"' '$0=$2')" + export MAIN_MOD="$(cat $FILE_LOC | grep -w main_module | awk -F'"' '$0=$2')" + export BUNDLE_ID="$(cat $FILE_LOC | grep -w bundle_identifier | awk -F'"' '$0=$2')" export DIST_DIR="dist_actions" echo "VER=$VER" >> $GITHUB_ENV echo "PROJECT_NAME=$PROJ_NAME" >> $GITHUB_ENV echo "PROJ_DIR=$PROJ_MOD" >> $GITHUB_ENV + echo "PROJ_MOD=$PROJ_MOD" >> $GITHUB_ENV echo "MAIN_FILE=$MAIN_FILE" >> $GITHUB_ENV + echo "MAIN_MOD=$MAIN_MOD" >> $GITHUB_ENV echo "BUNDLE_ID=$BUNDLE_ID" >> $GITHUB_ENV echo "DIST_DIR=$DIST_DIR" >> $GITHUB_ENV + cat > pyinstaller.py <(envsubst < pyinstallertemplate.py) + - name: Check Python install run: | pip3 install --upgrade pip @@ -209,16 +218,17 @@ jobs: --osx-bundle-identifier "${{ env.BUNDLE_ID }}" \ --hidden-import pkg_resources \ --distpath "${{ env.BUILD_DIR }}/ProjectMac" \ - --onefile -n "${{ env.PROJECT_NAME }}" "${{ env.PROJ_DIR }}/${{ env.MAIN_FILE }}" + -n "${{ env.PROJECT_NAME }}" pyinstaller.py ls -al "${{ env.BUILD_DIR }}/ProjectMac" - zip -r "${{ env.PROJECT_NAME }}-${{ env.VER }}.zip" "${{ env.BUILD_DIR }}/ProjectMac/${{ env.PROJECT_NAME }}.app" + cp -r "${{ env.BUILD_DIR }}/ProjectMac/${{ env.PROJECT_NAME }}.app" . + zip -r "${{ env.PROJECT_NAME }}-${{ env.VER }}.zip" "${{ env.PROJECT_NAME }}.app" - name: Prepare for deployment run: | source venv/bin/activate mkdir -p "${{ env.DIST_DIR }}/dmg" test -f "${{ env.PROJECT_NAME }}_${{ env.VER }}.dmg" && rm "${{ env.PROJECT_NAME }}_${{ env.VER }}.dmg" - cp -r "${{ env.BUILD_DIR }}/ProjectMac/${{ env.PROJECT_NAME }}.app" "${{ env.DIST_DIR}}/dmg" + cp -r "${{ env.PROJECT_NAME }}.app" "${{ env.DIST_DIR}}/dmg" create-dmg \ --volname "${{ env.PROJECT_NAME }}-${{ env.VER }} Installer" \ --volicon "${{ env.PROJ_DIR }}/resources/icon.icns" \ @@ -235,14 +245,14 @@ jobs: - name: Deploy Zip uses: actions/upload-artifact@v2.0.1 with: - name: ${{ env.PROJECT_NAME }}-${{ env.VER }}.zip + name: ${{ env.PROJECT_NAME }}-${{ env.VER }}-MacOS path: | ${{ env.PROJECT_NAME }}-${{ env.VER }}.zip - name: Deploy DMG uses: actions/upload-artifact@v2.0.1 with: - name: ${{ env.PROJECT_NAME }}_${{ env.VER }}.dmg + name: ${{ env.PROJECT_NAME }}_${{ env.VER }}-MacOS path: | ${{ env.PROJECT_NAME }}_${{ env.VER }}.dmg diff --git a/ci/deb-script.sh b/ci/deb-script.sh index f9f3e92..147fc15 100755 --- a/ci/deb-script.sh +++ b/ci/deb-script.sh @@ -9,24 +9,25 @@ mkdir -p "$BUILD_DIR" # store repo root as variable REPO_ROOT=$(readlink -f $(dirname $(dirname "$0"))) OLD_CWD=$(readlink -f .) +FILE_LOC=$(find $REPO_ROOT -name info.py) -export VER="$(cat $REPO_ROOT/info.py | grep -w version | awk -F'"' '$0=$2')" -export PROJ_NAME="$(cat $REPO_ROOT/info.py | grep -w name | awk -F'"' '$0=$2')" -export PROJ_MOD="$(cat $REPO_ROOT/info.py | grep -w module_name | awk -F'"' '$0=$2')" -export MAIN_FILE="$(cat $REPO_ROOT/info.py | grep -w main_file | awk -F'"' '$0=$2')" -export BUNDLE_ID="$(cat $REPO_ROOT/info.py | grep -w bundle_identifier | awk -F'"' '$0=$2')" -export PROJECT_LICENSE="$(cat $REPO_ROOT/info.py | grep -w project_license | awk -F'"' '$0=$2')" -export SCREENSHOT="$(cat $REPO_ROOT/info.py | grep -w screenshot | awk -F'"' '$0=$2')" -export METADATA_LICENSE="$(cat $REPO_ROOT/info.py | grep -w metadata_license | awk -F'"' '$0=$2')" -export DESCRIPTION="$(cat $REPO_ROOT/info.py | grep -w description | awk -F'"' '$0=$2')" -export HOMEPAGE="$(cat $REPO_ROOT/info.py | grep -w homepage | awk -F'"' '$0=$2')" -export SUMMARY="$(cat $REPO_ROOT/info.py | grep -w summary | awk -F'"' '$0=$2')" -export CATEGORIES="$(cat $REPO_ROOT/info.py | grep -w categories | awk -F'"' '$0=$2')" -export MIMETYPE="$(cat $REPO_ROOT/info.py | grep -w mimetype | awk -F'"' '$0=$2')" -export KEYWORDS="$(cat $REPO_ROOT/info.py | grep -w keywords | awk -F'"' '$0=$2')" -export APP_TYPE="$(cat $REPO_ROOT/info.py | grep -w application_type | awk -F'"' '$0=$2')" -export MAIN_MOD="$(cat $REPO_ROOT/info.py | grep -w main_module | awk -F'"' '$0=$2')" -export EMAIL="$(cat $REPO_ROOT/info.py | grep -w email | awk -F'"' '$0=$2')" +export VER="$(cat $FILE_LOC | grep -w version | awk -F'"' '$0=$2')" +export PROJ_NAME="$(cat $FILE_LOC | grep -w name | awk -F'"' '$0=$2')" +export PROJ_MOD="$(cat $FILE_LOC | grep -w module_name | awk -F'"' '$0=$2')" +export MAIN_FILE="$(cat $FILE_LOC | grep -w main_file | awk -F'"' '$0=$2')" +export BUNDLE_ID="$(cat $FILE_LOC | grep -w bundle_identifier | awk -F'"' '$0=$2')" +export PROJECT_LICENSE="$(cat $FILE_LOC | grep -w project_license | awk -F'"' '$0=$2')" +export SCREENSHOT="$(cat $FILE_LOC | grep -w screenshot | awk -F'"' '$0=$2')" +export METADATA_LICENSE="$(cat $FILE_LOC | grep -w metadata_license | awk -F'"' '$0=$2')" +export DESCRIPTION="$(cat $FILE_LOC | grep -w description | awk -F'"' '$0=$2')" +export HOMEPAGE="$(cat $FILE_LOC | grep -w homepage | awk -F'"' '$0=$2')" +export SUMMARY="$(cat $FILE_LOC | grep -w summary | awk -F'"' '$0=$2')" +export CATEGORIES="$(cat $FILE_LOC | grep -w categories | awk -F'"' '$0=$2')" +export MIMETYPE="$(cat $FILE_LOC | grep -w mimetype | awk -F'"' '$0=$2')" +export KEYWORDS="$(cat $FILE_LOC | grep -w keywords | awk -F'"' '$0=$2')" +export APP_TYPE="$(cat $FILE_LOC | grep -w application_type | awk -F'"' '$0=$2')" +export MAIN_MOD="$(cat $FILE_LOC | grep -w main_module | awk -F'"' '$0=$2')" +export EMAIL="$(cat $FILE_LOC | grep -w email | awk -F'"' '$0=$2')" pushd "$BUILD_DIR" diff --git a/info.cfg b/info.cfg deleted file mode 100644 index cd1ca59..0000000 --- a/info.cfg +++ /dev/null @@ -1,3 +0,0 @@ -version="0.1.0" -name="Project" -module_name="project" diff --git a/project/__init__.py b/project/__init__.py index 8e4bbd7..e9eb49f 100644 --- a/project/__init__.py +++ b/project/__init__.py @@ -1,4 +1,4 @@ -from .. import info +from . import info version = info.version name = info.name diff --git a/info.py b/project/info.py similarity index 100% rename from info.py rename to project/info.py diff --git a/project/main.py b/project/main.py index 30fc485..820e5dc 100644 --- a/project/main.py +++ b/project/main.py @@ -22,7 +22,10 @@ class MainWindow(QMainWindow): self.show() -if __name__ == '__main__': +def main(): app = QApplication(sys.argv) w = MainWindow() app.exec_() + +if __name__ == '__main__': + main() diff --git a/pyinstallertemplate.py b/pyinstallertemplate.py new file mode 100644 index 0000000..cc89823 --- /dev/null +++ b/pyinstallertemplate.py @@ -0,0 +1,6 @@ +""" +This file is needed to get pyinstaller to understand modules. +""" + +from $PROJ_MOD.$MAIN_MOD import main +main()