diff --git a/.github/workflows/pr-test-build-linux.yml b/.github/workflows/pr-test-build-linux.yml new file mode 100644 index 0000000..2542dcd --- /dev/null +++ b/.github/workflows/pr-test-build-linux.yml @@ -0,0 +1,71 @@ +name: pr-test-build-linux + +permissions: + contents: write + +on: + pull_request: + branches: + - main + +jobs: + pr-test-build-linux: + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@v4 + + - name: Setup Go + uses: actions/setup-go@v5 + with: + go-version: '>=1.24' + check-latest: true + cache: false + + - name: Install packages + run: | + sudo apt install -y gcc xorg-dev libgtk-3-dev libgl1-mesa-dev libglu1-mesa wget + + - name: Install dependencies + run: | + cd src + go mod download + + - name: Build + run: | + cd src + go build -v -ldflags="-s -w" -o Picocrypt Picocrypt.go + env: + CGO_ENABLED: 1 + GOAMD64: v1 + + - name: Package as .deb + run: | + wget https://github.com/user-attachments/files/16136712/Picocrypt.zip + python -m zipfile -e Picocrypt.zip Picocrypt + cp src/Picocrypt Picocrypt/Picocrypt/usr/bin/picocrypt-gui + VERSION=$(cat VERSION) + echo "VERSION=$VERSION" >> $GITHUB_ENV + echo "Version: $VERSION" >> Picocrypt/Picocrypt/DEBIAN/control + echo "Version=$VERSION" >> Picocrypt/Picocrypt/usr/share/applications/picocrypt.desktop + cd Picocrypt + dpkg-deb -Zxz --build --root-owner-group Picocrypt + + - name: Prepare to upload artifacts + run: | + mkdir out + mv src/Picocrypt out + mv Picocrypt/Picocrypt.deb out + rm -rf src + rm -rf Picocrypt + mv out/Picocrypt . + mv out/Picocrypt.deb . + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: pr-test-build-linux-ONLY-FOR-TESTING + path: | + Picocrypt + Picocrypt.deb + if-no-files-found: error + compression-level: 9 diff --git a/.github/workflows/pr-test-build-macos.yml b/.github/workflows/pr-test-build-macos.yml new file mode 100644 index 0000000..8591c76 --- /dev/null +++ b/.github/workflows/pr-test-build-macos.yml @@ -0,0 +1,57 @@ +name: pr-test-build-macos + +permissions: + contents: write + +on: + pull_request: + branches: + - main + +jobs: + pr-test-build-macos: + runs-on: macos-15 + steps: + - uses: actions/checkout@v4 + + - name: Setup Go + uses: actions/setup-go@v5 + with: + go-version: '>=1.24' + check-latest: true + cache: false + + - name: Install packages + run: | + brew install glfw glew + + - name: Install dependencies + run: | + cd src + go mod download + + - name: Build + run: | + cd src + go build -v -ldflags="-s -w" -o Picocrypt Picocrypt.go + env: + CGO_ENABLED: 1 + + - name: Package as .app in a .dmg + run: | + mv dist/macos/Picocrypt.app.zip . + unzip -d Picocrypt.app Picocrypt.app.zip + rm Picocrypt.app.zip + mv src/Picocrypt Picocrypt.app/Contents/MacOS/Picocrypt + mkdir out + cp -R Picocrypt.app out + hdiutil create Picocrypt.dmg -volname Picocrypt -fs APFS -format UDZO -srcfolder out + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: pr-test-build-macos-ONLY-FOR-TESTING + path: | + Picocrypt.dmg + if-no-files-found: error + compression-level: 9 diff --git a/.github/workflows/pr-test-build-windows.yml b/.github/workflows/pr-test-build-windows.yml new file mode 100644 index 0000000..44bb4da --- /dev/null +++ b/.github/workflows/pr-test-build-windows.yml @@ -0,0 +1,70 @@ +name: pr-test-build-windows + +permissions: + contents: write + +on: + pull_request: + branches: + - main + +jobs: + pr-test-build-windows: + runs-on: windows-2025 + steps: + - uses: actions/checkout@v4 + + - name: Setup Go + uses: actions/setup-go@v5 + with: + go-version: '>=1.24' + check-latest: true + cache: false + + - name: Install dependencies + run: | + cd src + go mod download + + - name: Build + run: | + cd src + go build -v -ldflags="-s -w -H=windowsgui -extldflags=-static" -o 1.exe Picocrypt.go + env: + CGO_ENABLED: 1 + GOAMD64: v1 + + - name: Add icon, manifest, and version info + shell: pwsh + run: | + Invoke-WebRequest -OutFile reshacker_setup.zip https://github.com/user-attachments/files/18878075/reshacker_setup.zip + Expand-Archive -DestinationPath reshacker_setup reshacker_setup.zip + reshacker_setup/reshacker_setup.exe /SILENT + Start-Sleep -Seconds 60 + Invoke-Expression "& `"$Env:P`" -open src/1.exe -save src/2.exe -action addoverwrite -res images/key.ico -mask `"ICONGROUP,MAINICON,`"" + Start-Sleep -Seconds 30 + Invoke-Expression "& `"$Env:P`" -open src/2.exe -save src/3.exe -action addoverwrite -res images/key.ico -mask `"ICONGROUP,GLFW_ICON,`"" + Start-Sleep -Seconds 30 + Invoke-Expression "& `"$Env:P`" -open src/3.exe -save src/4.exe -action addoverwrite -res dist/windows/manifest.xml -mask `"MANIFEST,1,`"" + Start-Sleep -Seconds 30 + Invoke-Expression "& `"$Env:P`" -open dist/windows/versioninfo.rc -save resources.res -action compile" + Start-Sleep -Seconds 30 + Invoke-Expression "& `"$Env:P`" -open src/4.exe -save src/5.exe -action addoverwrite -res resources.res" + Start-Sleep -Seconds 30 + env: + P: "C:\\Program Files (x86)\\Resource Hacker\\ResourceHacker.exe" + + - name: Compress with upx + shell: pwsh + run: | + Invoke-WebRequest -OutFile upx.zip https://github.com/user-attachments/files/15894908/upx-4.2.4-win64.zip + Expand-Archive -DestinationPath upx upx.zip + upx/upx-4.2.4-win64/upx.exe --lzma --brute -o src/Picocrypt.exe src/5.exe + + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: pr-test-build-windows-ONLY-FOR-TESTING + path: src/*.exe + if-no-files-found: error + compression-level: 9 diff --git a/CODEOWNERS b/CODEOWNERS index 54f9775..caad6a0 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,3 +1,4 @@ .github/workflows/* @HACKERALERT VERSION @HACKERALERT CODEOWNERS @HACKERALERT +src/* @HACKERALERT diff --git a/src/go.mod b/src/go.mod index 0b8c76d..0b86bd6 100644 --- a/src/go.mod +++ b/src/go.mod @@ -1,6 +1,6 @@ module Picocrypt -go 1.24 +go 1.24.2 require ( github.com/Picocrypt/dialog v0.0.0-20250410154130-d98dc55ea635