Compare commits
	
		
			6 Commits
		
	
	
		
			v2.5
			...
			6c3f6605de
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					6c3f6605de | ||
| 
						 | 
					e9676491ee | ||
| 
						 | 
					1a545bb2a1 | ||
| 
						 | 
					1e128a7cd8 | ||
| 
						 | 
					5dbb6a710c | ||
| 
						 | 
					dadadeb066 | 
							
								
								
									
										25
									
								
								.github/actions/prepare/action.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						@@ -1,25 +0,0 @@
 | 
				
			|||||||
name: Build & Upload
 | 
					 | 
				
			||||||
inputs:
 | 
					 | 
				
			||||||
  id:
 | 
					 | 
				
			||||||
    description: artifact name
 | 
					 | 
				
			||||||
    required: true
 | 
					 | 
				
			||||||
  cmd:
 | 
					 | 
				
			||||||
    description: command to run
 | 
					 | 
				
			||||||
    required: true
 | 
					 | 
				
			||||||
  out:
 | 
					 | 
				
			||||||
    description: path to output file
 | 
					 | 
				
			||||||
    required: true
 | 
					 | 
				
			||||||
runs:
 | 
					 | 
				
			||||||
  using: composite
 | 
					 | 
				
			||||||
  steps:
 | 
					 | 
				
			||||||
    - name: compile
 | 
					 | 
				
			||||||
      run: ${{ inputs.cmd }}
 | 
					 | 
				
			||||||
      shell: bash
 | 
					 | 
				
			||||||
    - name: archive
 | 
					 | 
				
			||||||
      run: tar -cvf ${{ inputs.out }}.tar ${{ inputs.out }}
 | 
					 | 
				
			||||||
      shell: bash
 | 
					 | 
				
			||||||
    - name: upload
 | 
					 | 
				
			||||||
      uses: actions/upload-artifact@v4
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        name: ${{ inputs.id }}
 | 
					 | 
				
			||||||
        path: ${{ inputs.out }}.tar
 | 
					 | 
				
			||||||
							
								
								
									
										40
									
								
								.github/workflows/build-docker.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						@@ -1,40 +0,0 @@
 | 
				
			|||||||
name: Publish Docker Image
 | 
					 | 
				
			||||||
on:
 | 
					 | 
				
			||||||
  push:
 | 
					 | 
				
			||||||
    tags:
 | 
					 | 
				
			||||||
      - v*
 | 
					 | 
				
			||||||
env:
 | 
					 | 
				
			||||||
  REGISTRY: ghcr.io
 | 
					 | 
				
			||||||
  IMAGE_NAME: nkanaev/yarr
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
jobs:
 | 
					 | 
				
			||||||
  build-and-push-image:
 | 
					 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					 | 
				
			||||||
    permissions:
 | 
					 | 
				
			||||||
      contents: read
 | 
					 | 
				
			||||||
      packages: write
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
      - name: Checkout repository
 | 
					 | 
				
			||||||
        uses: actions/checkout@v4
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      - name: Log in to the Container registry
 | 
					 | 
				
			||||||
        uses: docker/login-action@v3
 | 
					 | 
				
			||||||
        with:
 | 
					 | 
				
			||||||
          registry: ${{ env.REGISTRY }}
 | 
					 | 
				
			||||||
          username: ${{ github.actor }}
 | 
					 | 
				
			||||||
          password: ${{ secrets.GITHUB_TOKEN }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      - name: Extract Docker metadata
 | 
					 | 
				
			||||||
        id: meta
 | 
					 | 
				
			||||||
        uses: docker/metadata-action@v5
 | 
					 | 
				
			||||||
        with:
 | 
					 | 
				
			||||||
          images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      - name: Build and push Docker image
 | 
					 | 
				
			||||||
        uses: docker/build-push-action@v6
 | 
					 | 
				
			||||||
        with:
 | 
					 | 
				
			||||||
          context: .
 | 
					 | 
				
			||||||
          file: ./etc/dockerfile
 | 
					 | 
				
			||||||
          push: true
 | 
					 | 
				
			||||||
          tags: ${{ steps.meta.outputs.tags }}
 | 
					 | 
				
			||||||
          labels: ${{ steps.meta.outputs.labels }}
 | 
					 | 
				
			||||||
							
								
								
									
										203
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						@@ -1,143 +1,144 @@
 | 
				
			|||||||
name: Build
 | 
					name: build
 | 
				
			||||||
 | 
					
 | 
				
			||||||
on:
 | 
					on:
 | 
				
			||||||
  push:
 | 
					  push:
 | 
				
			||||||
    tags:
 | 
					    tags: ['v*', 'test*']
 | 
				
			||||||
      - v*
 | 
					 | 
				
			||||||
  workflow_dispatch:
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
jobs:
 | 
					jobs:
 | 
				
			||||||
  build_macos:
 | 
					  build_macos:
 | 
				
			||||||
    name: Build for MacOS
 | 
					    name: Build for MacOS
 | 
				
			||||||
    runs-on: macos-13
 | 
					    runs-on: macos-13
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
    - name: Checkout
 | 
					    - name: "Checkout"
 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					      uses: actions/checkout@v2
 | 
				
			||||||
    - name: Setup Go
 | 
					 | 
				
			||||||
      uses: actions/setup-go@v4
 | 
					 | 
				
			||||||
      with:
 | 
					      with:
 | 
				
			||||||
        go-version: '^1.23'
 | 
					        submodules: 'recursive'
 | 
				
			||||||
    - name: Build arm64 gui
 | 
					    - name: "Setup Go"
 | 
				
			||||||
      uses: ./.github/actions/prepare
 | 
					      uses: actions/setup-go@v2
 | 
				
			||||||
      with:
 | 
					      with:
 | 
				
			||||||
        id: darwin_arm64_gui
 | 
					        go-version: '^1.17'
 | 
				
			||||||
        cmd: make darwin_arm64_gui
 | 
					    - name: Cache Go Modules
 | 
				
			||||||
        out: out/darwin_arm64_gui/yarr.app
 | 
					      uses: actions/cache@v2
 | 
				
			||||||
    - name: Build amd64 gui
 | 
					 | 
				
			||||||
      uses: ./.github/actions/prepare
 | 
					 | 
				
			||||||
      with:
 | 
					      with:
 | 
				
			||||||
        id: darwin_amd64_gui
 | 
					        path: ~/go/pkg/mod
 | 
				
			||||||
        cmd: make darwin_amd64_gui
 | 
					        key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
 | 
				
			||||||
        out: out/darwin_amd64_gui/yarr.app
 | 
					        restore-keys: |
 | 
				
			||||||
    - name: Build arm64 cli
 | 
					          ${{ runner.os }}-go-
 | 
				
			||||||
      uses: ./.github/actions/prepare
 | 
					    - name: "Build"
 | 
				
			||||||
 | 
					      run: make build_macos
 | 
				
			||||||
 | 
					    - name: Upload
 | 
				
			||||||
 | 
					      uses: actions/upload-artifact@v2
 | 
				
			||||||
      with:
 | 
					      with:
 | 
				
			||||||
        id: darwin_arm64
 | 
					        name: macos
 | 
				
			||||||
        cmd: make darwin_arm64
 | 
					        path: _output/macos/yarr.app
 | 
				
			||||||
        out: out/darwin_arm64/yarr
 | 
					 | 
				
			||||||
    - name: Build amd64 cli
 | 
					 | 
				
			||||||
      uses: ./.github/actions/prepare
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        id: darwin_amd64
 | 
					 | 
				
			||||||
        cmd: make darwin_amd64
 | 
					 | 
				
			||||||
        out: out/darwin_amd64/yarr
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  build_windows:
 | 
					  build_windows:
 | 
				
			||||||
    name: Build for Windows
 | 
					    name: Build for Windows
 | 
				
			||||||
    runs-on: windows-2022
 | 
					    runs-on: windows-2022
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
    - name: Checkout
 | 
					    - name: "Checkout"
 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					      uses: actions/checkout@v2
 | 
				
			||||||
    - name: Setup Go
 | 
					 | 
				
			||||||
      uses: actions/setup-go@v4
 | 
					 | 
				
			||||||
      with:
 | 
					      with:
 | 
				
			||||||
        go-version: '^1.23'
 | 
					        submodules: 'recursive'
 | 
				
			||||||
    - name: Build amd64 gui
 | 
					    - name: "Setup Go"
 | 
				
			||||||
      uses: ./.github/actions/prepare
 | 
					      uses: actions/setup-go@v2
 | 
				
			||||||
      with:
 | 
					      with:
 | 
				
			||||||
        id: windows_amd64_gui
 | 
					        go-version: '^1.17'
 | 
				
			||||||
        cmd: make windows_amd64_gui
 | 
					    - name: Cache Go Modules
 | 
				
			||||||
        out: out/windows_amd64_gui/yarr.exe
 | 
					      uses: actions/cache@v2
 | 
				
			||||||
    - name: Build arm64 gui
 | 
					 | 
				
			||||||
      if: false
 | 
					 | 
				
			||||||
      uses: ./.github/actions/prepare
 | 
					 | 
				
			||||||
      with:
 | 
					      with:
 | 
				
			||||||
        id: windows_arm64_gui
 | 
					        path: ~/go/pkg/mod
 | 
				
			||||||
        cmd: make windows_arm64_gui
 | 
					        key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
 | 
				
			||||||
        out: out/windows_arm64_gui/yarr.exe
 | 
					        restore-keys: |
 | 
				
			||||||
 | 
					          ${{ runner.os }}-go-
 | 
				
			||||||
 | 
					    - name: "Build"
 | 
				
			||||||
 | 
					      run: make build_windows
 | 
				
			||||||
 | 
					    - name: Upload
 | 
				
			||||||
 | 
					      uses: actions/upload-artifact@v2
 | 
				
			||||||
 | 
					      with:
 | 
				
			||||||
 | 
					        name: windows
 | 
				
			||||||
 | 
					        path: _output/windows/yarr.exe
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  build_multi_cli:
 | 
					  build_linux:
 | 
				
			||||||
    name: Build for Windows/MacOS/Linux CLI
 | 
					    name: Build for Linux
 | 
				
			||||||
    runs-on: ubuntu-22.04
 | 
					    runs-on: ubuntu-22.04
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
    - name: Checkout
 | 
					    - name: "Checkout"
 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					      uses: actions/checkout@v2
 | 
				
			||||||
    - name: Setup Go
 | 
					 | 
				
			||||||
      uses: actions/setup-go@v4
 | 
					 | 
				
			||||||
      with:
 | 
					      with:
 | 
				
			||||||
        go-version: '^1.23'
 | 
					        submodules: 'recursive'
 | 
				
			||||||
    - name: Setup Zig
 | 
					    - name: "Setup Go"
 | 
				
			||||||
      uses: mlugg/setup-zig@v1
 | 
					      uses: actions/setup-go@v2
 | 
				
			||||||
      with:
 | 
					      with:
 | 
				
			||||||
        version: 0.14.0
 | 
					        go-version: '^1.17'
 | 
				
			||||||
    - name: Build linux/amd64
 | 
					    - name: Cache Go Modules
 | 
				
			||||||
      uses: ./.github/actions/prepare
 | 
					      uses: actions/cache@v2
 | 
				
			||||||
      with:
 | 
					      with:
 | 
				
			||||||
        id: linux_amd64
 | 
					        path: ~/go/pkg/mod
 | 
				
			||||||
        cmd: make linux_amd64
 | 
					        key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
 | 
				
			||||||
        out: out/linux_amd64/yarr
 | 
					        restore-keys: |
 | 
				
			||||||
    - name: Build linux/arm64
 | 
					          ${{ runner.os }}-go-
 | 
				
			||||||
      uses: ./.github/actions/prepare
 | 
					    - name: "Build"
 | 
				
			||||||
 | 
					      run: make build_linux
 | 
				
			||||||
 | 
					    - name: Upload
 | 
				
			||||||
 | 
					      uses: actions/upload-artifact@v2
 | 
				
			||||||
      with:
 | 
					      with:
 | 
				
			||||||
        id: linux_arm64
 | 
					        name: linux
 | 
				
			||||||
        cmd: make linux_arm64
 | 
					        path: _output/linux/yarr
 | 
				
			||||||
        out: out/linux_arm64/yarr
 | 
					 | 
				
			||||||
    - name: Build linux/armv7
 | 
					 | 
				
			||||||
      uses: ./.github/actions/prepare
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        id: linux_armv7
 | 
					 | 
				
			||||||
        cmd: make linux_armv7
 | 
					 | 
				
			||||||
        out: out/linux_armv7/yarr
 | 
					 | 
				
			||||||
    - name: Build windows/amd64
 | 
					 | 
				
			||||||
      uses: ./.github/actions/prepare
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        id: windows_amd64
 | 
					 | 
				
			||||||
        cmd: make windows_amd64
 | 
					 | 
				
			||||||
        out: out/windows_amd64/yarr
 | 
					 | 
				
			||||||
    - name: Build windows/arm64
 | 
					 | 
				
			||||||
      uses: ./.github/actions/prepare
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        id: windows_arm64
 | 
					 | 
				
			||||||
        cmd: make windows_arm64
 | 
					 | 
				
			||||||
        out: out/windows_arm64/yarr
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  create_release:
 | 
					  create_release:
 | 
				
			||||||
    name: Create Release
 | 
					    name: Create Release
 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
    needs: [build_macos, build_windows, build_multi_cli]
 | 
					    if: ${{ !contains(github.ref, 'test') }}
 | 
				
			||||||
 | 
					    needs: [build_macos, build_windows, build_linux]
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
 | 
					    - name: Create Release
 | 
				
			||||||
 | 
					      uses: actions/create-release@v1
 | 
				
			||||||
 | 
					      id: create_release
 | 
				
			||||||
 | 
					      env:
 | 
				
			||||||
 | 
					        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
				
			||||||
 | 
					      with:
 | 
				
			||||||
 | 
					          tag_name: ${{ github.ref }}
 | 
				
			||||||
 | 
					          release_name: ${{ github.ref }}
 | 
				
			||||||
 | 
					          draft: true
 | 
				
			||||||
 | 
					          prerelease: true
 | 
				
			||||||
    - name: Download Artifacts
 | 
					    - name: Download Artifacts
 | 
				
			||||||
      uses: actions/download-artifact@v4.1.7
 | 
					      uses: actions/download-artifact@v2
 | 
				
			||||||
      with:
 | 
					      with:
 | 
				
			||||||
        path: .
 | 
					        path: .
 | 
				
			||||||
    - name: Preparation
 | 
					    - name: Preparation
 | 
				
			||||||
      run: |
 | 
					      run: |
 | 
				
			||||||
        set -ex
 | 
					 | 
				
			||||||
        ls -R
 | 
					        ls -R
 | 
				
			||||||
        for tarfile in `ls **/*.tar`; do
 | 
					        chmod u+x macos/Contents/MacOS/yarr
 | 
				
			||||||
          tar -xvf $tarfile
 | 
					        chmod u+x linux/yarr
 | 
				
			||||||
        done
 | 
					
 | 
				
			||||||
        for dir in out/*; do
 | 
					        mv macos yarr.app     && zip -r yarr-macos.zip yarr.app
 | 
				
			||||||
          echo "Compressing: $dir"
 | 
					        mv windows/yarr.exe . && zip yarr-windows.zip yarr.exe
 | 
				
			||||||
          (test -d "$dir" && cd $dir && zip -r ../yarr_`basename $dir`.zip *)
 | 
					        mv linux/yarr .       && zip yarr-linux.zip yarr
 | 
				
			||||||
        done
 | 
					    - name: Upload MacOS
 | 
				
			||||||
        ls out
 | 
					      uses: actions/upload-release-asset@v1
 | 
				
			||||||
    - name: Upload Release
 | 
					 | 
				
			||||||
      uses: softprops/action-gh-release@v2
 | 
					 | 
				
			||||||
      env:
 | 
					      env:
 | 
				
			||||||
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
					        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
				
			||||||
      with:
 | 
					      with:
 | 
				
			||||||
          draft: true
 | 
					          upload_url: ${{ steps.create_release.outputs.upload_url }}
 | 
				
			||||||
          prerelease: true
 | 
					          asset_path: ./yarr-macos.zip
 | 
				
			||||||
          files: |
 | 
					          asset_name: yarr-${{ github.ref }}-macos64.zip
 | 
				
			||||||
            out/*.zip
 | 
					          asset_content_type: application/zip
 | 
				
			||||||
 | 
					    - name: Upload Windows
 | 
				
			||||||
 | 
					      uses: actions/upload-release-asset@v1
 | 
				
			||||||
 | 
					      env:
 | 
				
			||||||
 | 
					        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
				
			||||||
 | 
					      with:
 | 
				
			||||||
 | 
					          upload_url: ${{ steps.create_release.outputs.upload_url }}
 | 
				
			||||||
 | 
					          asset_path: ./yarr-windows.zip
 | 
				
			||||||
 | 
					          asset_name: yarr-${{ github.ref }}-windows64.zip
 | 
				
			||||||
 | 
					          asset_content_type: application/zip
 | 
				
			||||||
 | 
					    - name: Upload Linux
 | 
				
			||||||
 | 
					      uses: actions/upload-release-asset@v1
 | 
				
			||||||
 | 
					      env:
 | 
				
			||||||
 | 
					        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
				
			||||||
 | 
					      with:
 | 
				
			||||||
 | 
					          upload_url: ${{ steps.create_release.outputs.upload_url }}
 | 
				
			||||||
 | 
					          asset_path: ./yarr-linux.zip
 | 
				
			||||||
 | 
					          asset_name: yarr-${{ github.ref }}-linux64.zip
 | 
				
			||||||
 | 
					          asset_content_type: application/zip
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										19
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						@@ -1,19 +0,0 @@
 | 
				
			|||||||
name: Test
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
on: push
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
jobs:
 | 
					 | 
				
			||||||
  test:
 | 
					 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - name: Checkout code
 | 
					 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    - name: Set up Go
 | 
					 | 
				
			||||||
      uses: actions/setup-go@v4
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        go-version: '^1.18'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    - name: Run tests
 | 
					 | 
				
			||||||
      run: make test
 | 
					 | 
				
			||||||
							
								
								
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						@@ -1,8 +1,5 @@
 | 
				
			|||||||
/_output
 | 
					/_output
 | 
				
			||||||
/out
 | 
					 | 
				
			||||||
/yarr
 | 
					/yarr
 | 
				
			||||||
*.db
 | 
					*.db
 | 
				
			||||||
*.db-shm
 | 
					 | 
				
			||||||
*.db-wal
 | 
					 | 
				
			||||||
*.syso
 | 
					*.syso
 | 
				
			||||||
versioninfo.rc
 | 
					versioninfo.rc
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										48
									
								
								bin/generate_versioninfo.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,48 @@
 | 
				
			|||||||
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"flag"
 | 
				
			||||||
 | 
						"io/ioutil"
 | 
				
			||||||
 | 
						"strings"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var rsrc = `1 VERSIONINFO
 | 
				
			||||||
 | 
					FILEVERSION     {VERSION_COMMA},0,0
 | 
				
			||||||
 | 
					PRODUCTVERSION  {VERSION_COMMA},0,0
 | 
				
			||||||
 | 
					BEGIN
 | 
				
			||||||
 | 
					  BLOCK "StringFileInfo"
 | 
				
			||||||
 | 
					  BEGIN
 | 
				
			||||||
 | 
					    BLOCK "080904E4"
 | 
				
			||||||
 | 
					    BEGIN
 | 
				
			||||||
 | 
					      VALUE "CompanyName", "Old MacDonald's Farm"
 | 
				
			||||||
 | 
					      VALUE "FileDescription", "Yet another RSS reader"
 | 
				
			||||||
 | 
					      VALUE "FileVersion", "{VERSION}"
 | 
				
			||||||
 | 
					      VALUE "InternalName", "yarr"
 | 
				
			||||||
 | 
					      VALUE "LegalCopyright", "nkanaev"
 | 
				
			||||||
 | 
					      VALUE "OriginalFilename", "yarr.exe"
 | 
				
			||||||
 | 
					      VALUE "ProductName", "yarr"
 | 
				
			||||||
 | 
					      VALUE "ProductVersion", "{VERSION}"
 | 
				
			||||||
 | 
					    END
 | 
				
			||||||
 | 
					  END
 | 
				
			||||||
 | 
					  BLOCK "VarFileInfo"
 | 
				
			||||||
 | 
					  BEGIN
 | 
				
			||||||
 | 
					    VALUE "Translation", 0x809, 1252
 | 
				
			||||||
 | 
					  END
 | 
				
			||||||
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1 ICON "icon.ico"
 | 
				
			||||||
 | 
					`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func main() {
 | 
				
			||||||
 | 
						var version, outfile string
 | 
				
			||||||
 | 
						flag.StringVar(&version, "version", "0.0", "")
 | 
				
			||||||
 | 
						flag.StringVar(&outfile, "outfile", "versioninfo.rc", "")
 | 
				
			||||||
 | 
						flag.Parse()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						version_comma := strings.ReplaceAll(version, ".", ",")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						out := strings.ReplaceAll(rsrc, "{VERSION}", version)
 | 
				
			||||||
 | 
						out = strings.ReplaceAll(out, "{VERSION_COMMA}", version_comma)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ioutil.WriteFile(outfile, []byte(out), 0644)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										99
									
								
								bin/package_macos.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,99 @@
 | 
				
			|||||||
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"flag"
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"io/ioutil"
 | 
				
			||||||
 | 
						"log"
 | 
				
			||||||
 | 
						"os"
 | 
				
			||||||
 | 
						"os/exec"
 | 
				
			||||||
 | 
						"path"
 | 
				
			||||||
 | 
						"strconv"
 | 
				
			||||||
 | 
						"strings"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var plist = `<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 | 
				
			||||||
 | 
					<plist version="1.0">
 | 
				
			||||||
 | 
					<dict>
 | 
				
			||||||
 | 
						<key>CFBundleName</key>
 | 
				
			||||||
 | 
						<string>yarr</string>
 | 
				
			||||||
 | 
						<key>CFBundleDisplayName</key>
 | 
				
			||||||
 | 
						<string>yarr</string>
 | 
				
			||||||
 | 
						<key>CFBundleIdentifier</key>
 | 
				
			||||||
 | 
						<string>nkanaev.yarr</string>
 | 
				
			||||||
 | 
						<key>CFBundleVersion</key>
 | 
				
			||||||
 | 
						<string>VERSION</string>
 | 
				
			||||||
 | 
						<key>CFBundlePackageType</key>
 | 
				
			||||||
 | 
						<string>APPL</string>
 | 
				
			||||||
 | 
						<key>CFBundleExecutable</key>
 | 
				
			||||||
 | 
						<string>yarr</string>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						<key>CFBundleIconFile</key>
 | 
				
			||||||
 | 
						<string>icon</string>
 | 
				
			||||||
 | 
						<key>LSApplicationCategoryType</key>
 | 
				
			||||||
 | 
						<string>public.app-category.news</string>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						<key>NSHighResolutionCapable</key>
 | 
				
			||||||
 | 
						<string>True</string>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						<key>LSMinimumSystemVersion</key>
 | 
				
			||||||
 | 
						<string>10.13</string>
 | 
				
			||||||
 | 
						<key>LSUIElement</key>
 | 
				
			||||||
 | 
						<true/>
 | 
				
			||||||
 | 
						<key>NSHumanReadableCopyright</key>
 | 
				
			||||||
 | 
						<string>Copyright © 2020 nkanaev. All rights reserved.</string>
 | 
				
			||||||
 | 
					</dict>
 | 
				
			||||||
 | 
					</plist>
 | 
				
			||||||
 | 
					`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func run(cmd ...string) {
 | 
				
			||||||
 | 
						fmt.Println(cmd)
 | 
				
			||||||
 | 
						err := exec.Command(cmd[0], cmd[1:]...).Run()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							log.Fatal(err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func main() {
 | 
				
			||||||
 | 
						var version, outdir string
 | 
				
			||||||
 | 
						flag.StringVar(&version, "version", "0.0", "")
 | 
				
			||||||
 | 
						flag.StringVar(&outdir, "outdir", "", "")
 | 
				
			||||||
 | 
						flag.Parse()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						outfile := "yarr"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						binDir := path.Join(outdir, "yarr.app", "Contents/MacOS")
 | 
				
			||||||
 | 
						resDir := path.Join(outdir, "yarr.app", "Contents/Resources")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						plistFile := path.Join(outdir, "yarr.app", "Contents/Info.plist")
 | 
				
			||||||
 | 
						pkginfoFile := path.Join(outdir, "yarr.app", "Contents/PkgInfo")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						os.MkdirAll(binDir, 0700)
 | 
				
			||||||
 | 
						os.MkdirAll(resDir, 0700)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						f, _ := ioutil.ReadFile(path.Join(outdir, outfile))
 | 
				
			||||||
 | 
						ioutil.WriteFile(path.Join(binDir, outfile), f, 0755)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ioutil.WriteFile(plistFile, []byte(strings.Replace(plist, "VERSION", version, 1)), 0644)
 | 
				
			||||||
 | 
						ioutil.WriteFile(pkginfoFile, []byte("APPL????"), 0644)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						iconFile := path.Join(outdir, "icon.png")
 | 
				
			||||||
 | 
						iconsetDir := path.Join(outdir, "icon.iconset")
 | 
				
			||||||
 | 
						os.Mkdir(iconsetDir, 0700)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for _, res := range []int{1024, 512, 256, 128, 64, 32, 16} {
 | 
				
			||||||
 | 
							outfile := fmt.Sprintf("icon_%dx%d.png", res, res)
 | 
				
			||||||
 | 
							if res == 1024 || res == 64 {
 | 
				
			||||||
 | 
								outfile = fmt.Sprintf("icon_%dx%d@2x.png", res/2, res/2)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							cmd := []string{
 | 
				
			||||||
 | 
								"sips", "-s", "format", "png", "--resampleWidth", strconv.Itoa(res),
 | 
				
			||||||
 | 
								iconFile, "--out", path.Join(iconsetDir, outfile),
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							run(cmd...)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						icnsFile := path.Join(resDir, "icon.icns")
 | 
				
			||||||
 | 
						run("iconutil", "-c", "icns", iconsetDir, "-o", icnsFile)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										44
									
								
								build.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,44 @@
 | 
				
			|||||||
 | 
					## Compilation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Install `Go >= 1.17` and `GCC`. Get the source code:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    git clone https://github.com/nkanaev/yarr.git
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Then run one of the corresponding commands:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # create an executable for the host os
 | 
				
			||||||
 | 
					    make build_macos    # -> _output/macos/yarr.app
 | 
				
			||||||
 | 
					    make build_linux    # -> _output/linux/yarr
 | 
				
			||||||
 | 
					    make build_windows  # -> _output/windows/yarr.exe
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # host-specific cli version (no gui)
 | 
				
			||||||
 | 
					    make build_default  # -> _output/yarr
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # ... or start a dev server locally
 | 
				
			||||||
 | 
					    make serve          # starts a server at http://localhost:7070
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # ... or build a docker image
 | 
				
			||||||
 | 
					    docker build -t yarr .
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## ARM compilation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The instructions below are to cross-compile *yarr* to `Linux/ARM*`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Build:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    docker build -t yarr.arm -f dockerfile.arm .
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Test:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # inside host
 | 
				
			||||||
 | 
					    docker run -it --rm yarr.arm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # then, inside container
 | 
				
			||||||
 | 
					    cd /root/out
 | 
				
			||||||
 | 
					    qemu-aarch64 -L /usr/aarch64-linux-gnu/ yarr.arm64
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Extract files from images:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    CID=$(docker create yarr.arm)
 | 
				
			||||||
 | 
					    docker cp -a "$CID:/root/out" .
 | 
				
			||||||
 | 
					    docker rm "$CID"
 | 
				
			||||||
							
								
								
									
										56
									
								
								doc/build.md
									
									
									
									
									
								
							
							
						
						@@ -1,56 +0,0 @@
 | 
				
			|||||||
## Compilation
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Prerequisies:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
* Go >= 1.23
 | 
					 | 
				
			||||||
* C Compiler (GCC / Clang / ...)
 | 
					 | 
				
			||||||
* Zig >= 0.14.0 (optional, for cross-compiling CLI versions)
 | 
					 | 
				
			||||||
* binutils (optional, for building Windows GUI version)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Get the source code:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    git clone https://github.com/nkanaev/yarr.git
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Compile:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # create cli for the host OS/architecture
 | 
					 | 
				
			||||||
    make host               # out/yarr
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # create GUI, works only in the target OS
 | 
					 | 
				
			||||||
    make windows_amd64_gui  # out/windows_amd64_gui/yarr.exe
 | 
					 | 
				
			||||||
    make windows_arm64_gui  # out/windows_arm64_gui/yarr.exe
 | 
					 | 
				
			||||||
    make darwin_arm64_gui   # out/darwin_arm64_gui/yarr.app
 | 
					 | 
				
			||||||
    make darwin_amd64_gui   # out/darwin_amd64_gui/yarr.app
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # create cli, cross-compiles within any OS/architecture
 | 
					 | 
				
			||||||
    make linux_amd64
 | 
					 | 
				
			||||||
    make linux_arm64
 | 
					 | 
				
			||||||
    make linux_armv7
 | 
					 | 
				
			||||||
    make windows_amd64
 | 
					 | 
				
			||||||
    make windows_arm64
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # ... or build a docker image
 | 
					 | 
				
			||||||
    docker build -t yarr -f etc/dockerfile .
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## ARM compilation
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The instructions below are to cross-compile *yarr* to `Linux/ARM*`.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Build:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    docker build -t yarr.arm -f etc/dockerfile.arm .
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Test:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # inside host
 | 
					 | 
				
			||||||
    docker run -it --rm yarr.arm
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # then, inside container
 | 
					 | 
				
			||||||
    cd /root/out
 | 
					 | 
				
			||||||
    qemu-aarch64 -L /usr/aarch64-linux-gnu/ yarr.arm64
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Extract files from images:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    CID=$(docker create yarr.arm)
 | 
					 | 
				
			||||||
    docker cp -a "$CID:/root/out" .
 | 
					 | 
				
			||||||
    docker rm "$CID"
 | 
					 | 
				
			||||||
@@ -1,22 +1,9 @@
 | 
				
			|||||||
# upcoming 
 | 
					# upcoming 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- (new) Fever API support (thanks to @icefed)
 | 
					- (new) Fever API support (thanks to @icefed)
 | 
				
			||||||
- (new) editable feed link (thanks to @adaszko)
 | 
					 | 
				
			||||||
- (new) switch to feed by clicking the title in the article page (thanks to @tarasglek for suggestion)
 | 
					 | 
				
			||||||
- (new) support multiple media links
 | 
					 | 
				
			||||||
- (fix) duplicate articles caused by the same feed addition (thanks to @adaszko)
 | 
					- (fix) duplicate articles caused by the same feed addition (thanks to @adaszko)
 | 
				
			||||||
- (fix) relative article links (thanks to @adazsko for the report)
 | 
					- (fix) relative article links (thanks to @adazsko for the report)
 | 
				
			||||||
- (fix) atom article links stored in id element (thanks to @adazsko for the report)
 | 
					- (fix) atom article links stored in id element (thanks to @adazsko for the report)
 | 
				
			||||||
- (fix) parsing atom feed titles (thanks to @wnh)
 | 
					 | 
				
			||||||
- (fix) sorting same-day batch articles (thanks to @lamescholar for the report)
 | 
					 | 
				
			||||||
- (fix) showing login page in the selected theme (thanks to @feddiriko for the report)
 | 
					 | 
				
			||||||
- (fix) parsing atom feeds with html elements (thanks to @tillcash & @toBeOfUse for the report, @krkk for the fix)
 | 
					 | 
				
			||||||
- (fix) parsing feeds with missing guids (thanks to @hoyii for the report)
 | 
					 | 
				
			||||||
- (fix) sending actual client version to servers (thanks to @aidanholm)
 | 
					 | 
				
			||||||
- (fix) error caused by missing config dir (thanks to @timster)
 | 
					 | 
				
			||||||
- (etc) load external images with no-referrer policy (thanks to @tillcash for the report)
 | 
					 | 
				
			||||||
- (etc) open external links with no-referrer policy (thanks to @donovanglover)
 | 
					 | 
				
			||||||
- (etc) show article content in the list if title is missing (thanks to @asimpson for suggestion)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# v2.4 (2023-08-15)
 | 
					# v2.4 (2023-08-15)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,68 +0,0 @@
 | 
				
			|||||||
- site: https://vimeo.com/channels/staffpicks/videos
 | 
					 | 
				
			||||||
  feed: https://vimeo.com/channels/staffpicks/videos/rss
 | 
					 | 
				
			||||||
  tags: [vimeo, image]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- site: https://www.youtube.com/@everyframeapainting/videos
 | 
					 | 
				
			||||||
  feed: https://www.youtube.com/feeds/videos.xml?channel_id=UCjFqcJQXGZ6T6sxyFB-5i6A"
 | 
					 | 
				
			||||||
  tags: [youtube, image]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- site: https://iwdrm.tumblr.com/
 | 
					 | 
				
			||||||
  feed: https://iwdrm.tumblr.com/rss
 | 
					 | 
				
			||||||
  tags: [tumblr, image]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- site: https://falseknees.tumblr.com/
 | 
					 | 
				
			||||||
  feed: https://falseknees.tumblr.com/rss
 | 
					 | 
				
			||||||
  tags: [tumblr, image]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- site: https://accidentallyquadratic.tumblr.com/
 | 
					 | 
				
			||||||
  feed: https://accidentallyquadratic.tumblr.com/rss
 | 
					 | 
				
			||||||
  info: text blog with code sections
 | 
					 | 
				
			||||||
  tags: [tumblr, text, code]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- site: https://www.flickr.com/photos/maratsafin/
 | 
					 | 
				
			||||||
  feed: https://www.flickr.com/services/feeds/photos_public.gne?id=59021497@N07&lang=en-us&format=atom
 | 
					 | 
				
			||||||
  tags: [flickr, image]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- site: https://www.reddit.com/r/comics
 | 
					 | 
				
			||||||
  feed: https://www.reddit.com/r/comics.rss
 | 
					 | 
				
			||||||
  tags: [reddit, image]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- site: https://www.reddit.com/r/AITAH
 | 
					 | 
				
			||||||
  feed: https://www.reddit.com/r/AITAH.rss
 | 
					 | 
				
			||||||
  tags: [reddit, text]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- site: https://idothei.wordpress.com/
 | 
					 | 
				
			||||||
  feed: https://idothei.wordpress.com/feed/
 | 
					 | 
				
			||||||
  tags: [wordpress, text]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- site: https://www.vidarholen.net/contents/blog/
 | 
					 | 
				
			||||||
  feed: https://www.vidarholen.net/contents/blog/?feed=rss2
 | 
					 | 
				
			||||||
  tags: [wordpress, text]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- site: https://blog.posthaven.com/
 | 
					 | 
				
			||||||
  feed: https://blog.posthaven.com/posts.atom
 | 
					 | 
				
			||||||
  tags: [posthaven, text]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- site: https://medium.com/@dailynewsletter
 | 
					 | 
				
			||||||
  feed: https://medium.com/feed/@dailynewsletter
 | 
					 | 
				
			||||||
  tags: [medium, text]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- site: https://thereveal.substack.com/
 | 
					 | 
				
			||||||
  feed: https://thereveal.substack.com/feed
 | 
					 | 
				
			||||||
  tags: [substack, text]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- site: https://tema.livejournal.com/
 | 
					 | 
				
			||||||
  feed: https://tema.livejournal.com/data/rss
 | 
					 | 
				
			||||||
  tags: [livejournal, text]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- site: https://mametter.hatenablog.com/
 | 
					 | 
				
			||||||
  feed: https://mametter.hatenablog.com/feed
 | 
					 | 
				
			||||||
  tags: [hatena, text]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- site: https://juliepowell.blogspot.com/
 | 
					 | 
				
			||||||
  feed: https://juliepowell.blogspot.com/feeds/posts/default
 | 
					 | 
				
			||||||
  tags: [blogger, text]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- site: https://micro.blog/val
 | 
					 | 
				
			||||||
  feed: https://micro.blog/posts/val
 | 
					 | 
				
			||||||
  tags: [json, microblog]
 | 
					 | 
				
			||||||
							
								
								
									
										12
									
								
								dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					FROM golang:alpine AS build
 | 
				
			||||||
 | 
					RUN apk add build-base git
 | 
				
			||||||
 | 
					WORKDIR /src
 | 
				
			||||||
 | 
					COPY . .
 | 
				
			||||||
 | 
					RUN make build_linux
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FROM alpine:latest
 | 
				
			||||||
 | 
					RUN apk add --no-cache ca-certificates && \
 | 
				
			||||||
 | 
					    update-ca-certificates
 | 
				
			||||||
 | 
					COPY --from=build /src/_output/linux/yarr /usr/local/bin/yarr
 | 
				
			||||||
 | 
					EXPOSE 7070
 | 
				
			||||||
 | 
					CMD ["/usr/local/bin/yarr", "-addr", "0.0.0.0:7070", "-db", "/data/yarr.db"]
 | 
				
			||||||
@@ -12,9 +12,9 @@ RUN env DEBIAN_FRONTEND=noninteractive \
 | 
				
			|||||||
    apt install -y qemu-user qemu-user-static
 | 
					    apt install -y qemu-user qemu-user-static
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Install Golang
 | 
					# Install Golang
 | 
				
			||||||
RUN wget --quiet https://go.dev/dl/go1.24.1.linux-amd64.tar.gz && \
 | 
					RUN wget --quiet https://go.dev/dl/go1.18.2.linux-amd64.tar.gz && \
 | 
				
			||||||
    rm -rf /usr/local/go && \
 | 
					    rm -rf /usr/local/go && \
 | 
				
			||||||
    tar -C /usr/local -xzf go1.24.1.linux-amd64.tar.gz
 | 
					    tar -C /usr/local -xzf go1.18.2.linux-amd64.tar.gz
 | 
				
			||||||
ENV PATH=$PATH:/usr/local/go/bin
 | 
					ENV PATH=$PATH:/usr/local/go/bin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Copy source code
 | 
					# Copy source code
 | 
				
			||||||
@@ -27,12 +27,18 @@ RUN env \
 | 
				
			|||||||
        CC=aarch64-linux-gnu-gcc \
 | 
					        CC=aarch64-linux-gnu-gcc \
 | 
				
			||||||
        CGO_ENABLED=1 \
 | 
					        CGO_ENABLED=1 \
 | 
				
			||||||
        GOOS=linux GOARCH=arm64 \
 | 
					        GOOS=linux GOARCH=arm64 \
 | 
				
			||||||
    make host && mv out/yarr /root/out/yarr.arm64
 | 
					    go build \
 | 
				
			||||||
 | 
					        -tags "sqlite_foreign_keys release linux" \
 | 
				
			||||||
 | 
					        -ldflags="-s -w" \
 | 
				
			||||||
 | 
					        -o /root/out/yarr.arm64 src/main.go
 | 
				
			||||||
 | 
					
 | 
				
			||||||
RUN env \
 | 
					RUN env \
 | 
				
			||||||
        CC=arm-linux-gnueabihf-gcc \
 | 
					        CC=arm-linux-gnueabihf-gcc \
 | 
				
			||||||
        CGO_ENABLED=1 \
 | 
					        CGO_ENABLED=1 \
 | 
				
			||||||
        GOOS=linux GOARCH=arm GOARM=7 \
 | 
					        GOOS=linux GOARCH=arm GOARM=7 \
 | 
				
			||||||
    make host && mv out/yarr /root/out/yarr.armv7
 | 
					    go build \
 | 
				
			||||||
 | 
					        -tags "sqlite_foreign_keys release linux" \
 | 
				
			||||||
 | 
					        -ldflags="-s -w" \
 | 
				
			||||||
 | 
					        -o /root/out/yarr.arm7 src/main.go
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CMD ["/bin/bash"]
 | 
					CMD ["/bin/bash"]
 | 
				
			||||||
@@ -1,14 +0,0 @@
 | 
				
			|||||||
FROM golang:alpine3.21 AS build
 | 
					 | 
				
			||||||
RUN apk add build-base git
 | 
					 | 
				
			||||||
WORKDIR /src
 | 
					 | 
				
			||||||
COPY . .
 | 
					 | 
				
			||||||
RUN --mount=type=cache,target=/root/.cache/go-build \
 | 
					 | 
				
			||||||
    --mount=type=cache,target=/root/go/pkg \
 | 
					 | 
				
			||||||
  make host
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
FROM alpine:latest
 | 
					 | 
				
			||||||
RUN apk add --no-cache ca-certificates && update-ca-certificates
 | 
					 | 
				
			||||||
COPY --from=build /src/out/yarr /usr/local/bin/yarr
 | 
					 | 
				
			||||||
EXPOSE 7070
 | 
					 | 
				
			||||||
ENTRYPOINT ["/usr/local/bin/yarr"]
 | 
					 | 
				
			||||||
CMD ["-addr", "0.0.0.0:7070", "-db", "/data/yarr.db"]
 | 
					 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								etc/icon.icns
									
									
									
									
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 54 KiB  | 
@@ -1,9 +1,5 @@
 | 
				
			|||||||
#!/bin/bash
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [[ ! -d "$HOME/.local/share/applications" ]]; then
 | 
					 | 
				
			||||||
  mkdir -p "$HOME/.local/share/applications"
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
cat >"$HOME/.local/share/applications/yarr.desktop" <<END
 | 
					cat >"$HOME/.local/share/applications/yarr.desktop" <<END
 | 
				
			||||||
[Desktop Entry]
 | 
					[Desktop Entry]
 | 
				
			||||||
Name=yarr
 | 
					Name=yarr
 | 
				
			||||||
@@ -13,10 +9,6 @@ Type=Application
 | 
				
			|||||||
Categories=Internet;
 | 
					Categories=Internet;
 | 
				
			||||||
END
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [[ ! -d "$HOME/.local/share/icons" ]]; then
 | 
					 | 
				
			||||||
  mkdir -p "$HOME/.local/share/icons"
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
cat >"$HOME/.local/share/icons/yarr.svg" <<END
 | 
					cat >"$HOME/.local/share/icons/yarr.svg" <<END
 | 
				
			||||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-anchor-favicon">
 | 
					<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-anchor-favicon">
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,62 +0,0 @@
 | 
				
			|||||||
#/bin/sh
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
set -e
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
usage() {
 | 
					 | 
				
			||||||
  echo "usage: $0 VERSION path/to/icon.icns path/to/binary output/dir"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [ $# -eq 0 ]; then
 | 
					 | 
				
			||||||
    usage
 | 
					 | 
				
			||||||
    exit
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
VERSION=$1
 | 
					 | 
				
			||||||
ICNFILE=$2
 | 
					 | 
				
			||||||
BINFILE=$3
 | 
					 | 
				
			||||||
OUTPATH=$4
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
mkdir -p $OUTPATH/yarr.app/Contents/MacOS
 | 
					 | 
				
			||||||
mkdir -p $OUTPATH/yarr.app/Contents/Resources
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
mv $BINFILE $OUTPATH/yarr.app/Contents/MacOS/yarr
 | 
					 | 
				
			||||||
cp $ICNFILE $OUTPATH/yarr.app/Contents/Resources/icon.icns
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
chmod u+x  $OUTPATH/yarr.app/Contents/MacOS/yarr
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
echo -n 'APPL????' >$OUTPATH/yarr.app/Contents/PkgInfo
 | 
					 | 
				
			||||||
cat <<EOF >$OUTPATH/yarr.app/Contents/Info.plist
 | 
					 | 
				
			||||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
					 | 
				
			||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 | 
					 | 
				
			||||||
<plist version="1.0">
 | 
					 | 
				
			||||||
<dict>
 | 
					 | 
				
			||||||
	<key>CFBundleName</key>
 | 
					 | 
				
			||||||
	<string>yarr</string>
 | 
					 | 
				
			||||||
	<key>CFBundleDisplayName</key>
 | 
					 | 
				
			||||||
	<string>yarr</string>
 | 
					 | 
				
			||||||
	<key>CFBundleIdentifier</key>
 | 
					 | 
				
			||||||
	<string>nkanaev.yarr</string>
 | 
					 | 
				
			||||||
	<key>CFBundleVersion</key>
 | 
					 | 
				
			||||||
	<string>$VERSION</string>
 | 
					 | 
				
			||||||
	<key>CFBundlePackageType</key>
 | 
					 | 
				
			||||||
	<string>APPL</string>
 | 
					 | 
				
			||||||
	<key>CFBundleExecutable</key>
 | 
					 | 
				
			||||||
	<string>yarr</string>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	<key>CFBundleIconFile</key>
 | 
					 | 
				
			||||||
	<string>icon</string>
 | 
					 | 
				
			||||||
	<key>LSApplicationCategoryType</key>
 | 
					 | 
				
			||||||
	<string>public.app-category.news</string>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	<key>NSHighResolutionCapable</key>
 | 
					 | 
				
			||||||
	<string>True</string>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	<key>LSMinimumSystemVersion</key>
 | 
					 | 
				
			||||||
	<string>10.13</string>
 | 
					 | 
				
			||||||
	<key>LSUIElement</key>
 | 
					 | 
				
			||||||
	<true/>
 | 
					 | 
				
			||||||
	<key>NSHumanReadableCopyright</key>
 | 
					 | 
				
			||||||
	<string>Copyright © 2020 nkanaev. All rights reserved.</string>
 | 
					 | 
				
			||||||
</dict>
 | 
					 | 
				
			||||||
</plist>
 | 
					 | 
				
			||||||
EOF
 | 
					 | 
				
			||||||
@@ -1,89 +0,0 @@
 | 
				
			|||||||
#!/bin/bash
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
set -e
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Function to display usage information
 | 
					 | 
				
			||||||
usage() {
 | 
					 | 
				
			||||||
  echo "Usage: $0 [-version VERSION] [-outfile FILENAME]"
 | 
					 | 
				
			||||||
  echo "  -version VERSION   Set the version number (default: 0.0)"
 | 
					 | 
				
			||||||
  echo "  -outfile FILENAME  Set the output file name (default: versioninfo.rc)"
 | 
					 | 
				
			||||||
  echo ""
 | 
					 | 
				
			||||||
  echo "This script generates a Windows resource file with version information."
 | 
					 | 
				
			||||||
  exit 1
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Default values
 | 
					 | 
				
			||||||
version="0.0"
 | 
					 | 
				
			||||||
outfile="versioninfo.rc"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Check if help is requested
 | 
					 | 
				
			||||||
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
 | 
					 | 
				
			||||||
  usage
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [ $# -eq 0 ]; then
 | 
					 | 
				
			||||||
  usage
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Parse command-line options
 | 
					 | 
				
			||||||
while [[ $# -gt 0 ]]; do
 | 
					 | 
				
			||||||
  case $1 in
 | 
					 | 
				
			||||||
    -version)
 | 
					 | 
				
			||||||
      if [[ -z "$2" || "$2" == -* ]]; then
 | 
					 | 
				
			||||||
        echo "Error: Missing value for -version parameter"
 | 
					 | 
				
			||||||
        usage
 | 
					 | 
				
			||||||
      fi
 | 
					 | 
				
			||||||
      version="$2"
 | 
					 | 
				
			||||||
      shift 2
 | 
					 | 
				
			||||||
      ;;
 | 
					 | 
				
			||||||
    -outfile)
 | 
					 | 
				
			||||||
      if [[ -z "$2" || "$2" == -* ]]; then
 | 
					 | 
				
			||||||
        echo "Error: Missing value for -outfile parameter"
 | 
					 | 
				
			||||||
        usage
 | 
					 | 
				
			||||||
      fi
 | 
					 | 
				
			||||||
      outfile="$2"
 | 
					 | 
				
			||||||
      shift 2
 | 
					 | 
				
			||||||
      ;;
 | 
					 | 
				
			||||||
    *)
 | 
					 | 
				
			||||||
      echo "Error: Unknown parameter: $1"
 | 
					 | 
				
			||||||
      usage
 | 
					 | 
				
			||||||
      ;;
 | 
					 | 
				
			||||||
  esac
 | 
					 | 
				
			||||||
done
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Replace dots with commas for version_comma
 | 
					 | 
				
			||||||
version_comma="${version//./,}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Use a here document for the template with ENDFILE delimiter
 | 
					 | 
				
			||||||
cat <<ENDFILE > "$outfile"
 | 
					 | 
				
			||||||
1 VERSIONINFO
 | 
					 | 
				
			||||||
FILEVERSION     $version_comma,0,0
 | 
					 | 
				
			||||||
PRODUCTVERSION  $version_comma,0,0
 | 
					 | 
				
			||||||
BEGIN
 | 
					 | 
				
			||||||
  BLOCK "StringFileInfo"
 | 
					 | 
				
			||||||
  BEGIN
 | 
					 | 
				
			||||||
    BLOCK "080904E4"
 | 
					 | 
				
			||||||
    BEGIN
 | 
					 | 
				
			||||||
      VALUE "CompanyName", "Old MacDonald's Farm"
 | 
					 | 
				
			||||||
      VALUE "FileDescription", "Yet another RSS reader"
 | 
					 | 
				
			||||||
      VALUE "FileVersion", "$version"
 | 
					 | 
				
			||||||
      VALUE "InternalName", "yarr"
 | 
					 | 
				
			||||||
      VALUE "LegalCopyright", "nkanaev"
 | 
					 | 
				
			||||||
      VALUE "OriginalFilename", "yarr.exe"
 | 
					 | 
				
			||||||
      VALUE "ProductName", "yarr"
 | 
					 | 
				
			||||||
      VALUE "ProductVersion", "$version"
 | 
					 | 
				
			||||||
    END
 | 
					 | 
				
			||||||
  END
 | 
					 | 
				
			||||||
  BLOCK "VarFileInfo"
 | 
					 | 
				
			||||||
  BEGIN
 | 
					 | 
				
			||||||
    VALUE "Translation", 0x809, 1252
 | 
					 | 
				
			||||||
  END
 | 
					 | 
				
			||||||
END
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
1 ICON "icon.ico"
 | 
					 | 
				
			||||||
ENDFILE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Set the correct permissions
 | 
					 | 
				
			||||||
chmod 644 "$outfile"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
echo "Generated $outfile with version $version"
 | 
					 | 
				
			||||||
							
								
								
									
										12
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						@@ -1,13 +1,11 @@
 | 
				
			|||||||
module github.com/nkanaev/yarr
 | 
					module github.com/nkanaev/yarr
 | 
				
			||||||
 | 
					
 | 
				
			||||||
go 1.23.0
 | 
					go 1.17
 | 
				
			||||||
 | 
					 | 
				
			||||||
toolchain go1.23.5
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
require (
 | 
					require (
 | 
				
			||||||
	github.com/mattn/go-sqlite3 v1.14.24
 | 
						github.com/mattn/go-sqlite3 v1.14.7
 | 
				
			||||||
	golang.org/x/net v0.37.0
 | 
						golang.org/x/net v0.8.0
 | 
				
			||||||
	golang.org/x/sys v0.31.0
 | 
						golang.org/x/sys v0.6.0
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require golang.org/x/text v0.23.0 // indirect
 | 
					require golang.org/x/text v0.8.0 // indirect
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										53
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						@@ -1,14 +1,39 @@
 | 
				
			|||||||
github.com/mattn/go-sqlite3 v1.14.24 h1:tpSp2G2KyMnnQu99ngJ47EIkWVmliIizyZBfPrBWDRM=
 | 
					github.com/mattn/go-sqlite3 v1.14.7 h1:fxWBnXkxfM6sRiuH3bqJ4CfzZojMOLVc0UTsTglEghA=
 | 
				
			||||||
github.com/mattn/go-sqlite3 v1.14.24/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
 | 
					github.com/mattn/go-sqlite3 v1.14.7/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
 | 
				
			||||||
golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA=
 | 
					github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
 | 
				
			||||||
golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I=
 | 
					golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
				
			||||||
golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c=
 | 
					golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
 | 
				
			||||||
golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
 | 
					golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
 | 
				
			||||||
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
 | 
					golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
 | 
				
			||||||
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
 | 
					golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 | 
				
			||||||
golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
 | 
					golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
 | 
				
			||||||
golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
 | 
					golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
 | 
				
			||||||
golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
 | 
					golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
 | 
				
			||||||
golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
 | 
					golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ=
 | 
				
			||||||
golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
 | 
					golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
 | 
				
			||||||
golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
 | 
					golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
 | 
					golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
 | 
					golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
				
			||||||
 | 
					golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 | 
				
			||||||
 | 
					golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
 | 
				
			||||||
 | 
					golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
 | 
				
			||||||
 | 
					golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
 | 
				
			||||||
 | 
					golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 | 
				
			||||||
 | 
					golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 | 
				
			||||||
 | 
					golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
 | 
				
			||||||
 | 
					golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
 | 
				
			||||||
 | 
					golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68=
 | 
				
			||||||
 | 
					golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
 | 
				
			||||||
 | 
					golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 | 
				
			||||||
 | 
					golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 | 
				
			||||||
 | 
					golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
 | 
				
			||||||
 | 
					golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
 | 
				
			||||||
 | 
					golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										98
									
								
								makefile
									
									
									
									
									
								
							
							
						
						@@ -1,89 +1,33 @@
 | 
				
			|||||||
VERSION=2.5
 | 
					VERSION=2.4
 | 
				
			||||||
GITHASH=$(shell git rev-parse --short=8 HEAD)
 | 
					GITHASH=$(shell git rev-parse --short=8 HEAD)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GO_TAGS    = sqlite_foreign_keys sqlite_json
 | 
					CGO_ENABLED=1
 | 
				
			||||||
GO_LDFLAGS = -s -w -X 'main.Version=$(VERSION)' -X 'main.GitHash=$(GITHASH)'
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
GO_FLAGS         = -tags "$(GO_TAGS)"     -ldflags="$(GO_LDFLAGS)"
 | 
					GO_LDFLAGS  = -s -w
 | 
				
			||||||
GO_FLAGS_GUI     = -tags "$(GO_TAGS) gui" -ldflags="$(GO_LDFLAGS)"
 | 
					GO_LDFLAGS := $(GO_LDFLAGS) -X 'main.Version=$(VERSION)' -X 'main.GitHash=$(GITHASH)'
 | 
				
			||||||
GO_FLAGS_GUI_WIN = -tags "$(GO_TAGS) gui" -ldflags="$(GO_LDFLAGS) -H windowsgui"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
export CGO_ENABLED=1
 | 
					build_default:
 | 
				
			||||||
 | 
						mkdir -p _output
 | 
				
			||||||
 | 
						go build -tags "sqlite_foreign_keys release" -ldflags="$(GO_LDFLAGS)" -o _output/yarr src/main.go
 | 
				
			||||||
 | 
					
 | 
				
			||||||
default: test host
 | 
					build_macos:
 | 
				
			||||||
 | 
						mkdir -p _output/macos
 | 
				
			||||||
 | 
						GOOS=darwin GOARCH=amd64 go build -tags "sqlite_foreign_keys release macos" -ldflags="$(GO_LDFLAGS)" -o _output/macos/yarr src/main.go
 | 
				
			||||||
 | 
						cp src/platform/icon.png _output/macos/icon.png
 | 
				
			||||||
 | 
						go run bin/package_macos.go -outdir _output/macos -version "$(VERSION)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# platform-specific files
 | 
					build_linux:
 | 
				
			||||||
 | 
						mkdir -p _output/linux
 | 
				
			||||||
 | 
						GOOS=linux GOARCH=amd64 go build -tags "sqlite_foreign_keys release linux" -ldflags="$(GO_LDFLAGS)" -o _output/linux/yarr src/main.go
 | 
				
			||||||
 | 
					
 | 
				
			||||||
etc/icon.icns: etc/icon_macos.png
 | 
					build_windows:
 | 
				
			||||||
	mkdir -p etc/icon.iconset
 | 
						mkdir -p _output/windows
 | 
				
			||||||
	sips -s format png --resampleWidth 1024 etc/icon_macos.png --out etc/icon.iconset/icon_512x512@2x.png
 | 
						go run bin/generate_versioninfo.go -version "$(VERSION)" -outfile src/platform/versioninfo.rc
 | 
				
			||||||
	sips -s format png --resampleWidth  512 etc/icon_macos.png --out etc/icon.iconset/icon_512x512.png
 | 
					 | 
				
			||||||
	sips -s format png --resampleWidth  256 etc/icon_macos.png --out etc/icon.iconset/icon_256x256.png
 | 
					 | 
				
			||||||
	sips -s format png --resampleWidth  128 etc/icon_macos.png --out etc/icon.iconset/icon_128x128.png
 | 
					 | 
				
			||||||
	sips -s format png --resampleWidth   64 etc/icon_macos.png --out etc/icon.iconset/icon_32x32@2x.png
 | 
					 | 
				
			||||||
	sips -s format png --resampleWidth   32 etc/icon_macos.png --out etc/icon.iconset/icon_32x32.png
 | 
					 | 
				
			||||||
	sips -s format png --resampleWidth   16 etc/icon_macos.png --out etc/icon.iconset/icon_16x16.png
 | 
					 | 
				
			||||||
	iconutil -c icns etc/icon.iconset -o etc/icon.icns
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
src/platform/versioninfo.rc:
 | 
					 | 
				
			||||||
	./etc/windows_versioninfo.sh -version "$(VERSION)" -outfile src/platform/versioninfo.rc
 | 
					 | 
				
			||||||
	windres -i src/platform/versioninfo.rc -O coff -o src/platform/versioninfo.syso
 | 
						windres -i src/platform/versioninfo.rc -O coff -o src/platform/versioninfo.syso
 | 
				
			||||||
 | 
						GOOS=windows GOARCH=amd64 go build -tags "sqlite_foreign_keys release windows" -ldflags="$(GO_LDFLAGS) -H windowsgui" -o _output/windows/yarr.exe src/main.go
 | 
				
			||||||
# build targets
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
host:
 | 
					 | 
				
			||||||
	go build $(GO_FLAGS) -o out/yarr ./cmd/yarr
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
darwin_amd64:
 | 
					 | 
				
			||||||
	# cross-compilation not supported: CC="zig cc -target x86_64-macos-none"
 | 
					 | 
				
			||||||
	GOOS=darwin GOARCH=arm64 go build $(GO_FLAGS) -o out/$@/yarr ./cmd/yarr
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
darwin_arm64:
 | 
					 | 
				
			||||||
	# cross-compilation not supported: CC="zig cc -target aarch64-macos-none"
 | 
					 | 
				
			||||||
	GOOS=darwin GOARCH=arm64 go build $(GO_FLAGS) -o out/$@/yarr ./cmd/yarr
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
linux_amd64:
 | 
					 | 
				
			||||||
	CC="zig cc -target x86_64-linux-musl -O2 -g0" CGO_CFLAGS="-D_LARGEFILE64_SOURCE" GOOS=linux GOARCH=amd64 \
 | 
					 | 
				
			||||||
	go build $(GO_FLAGS) -o out/$@/yarr ./cmd/yarr
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
linux_arm64:
 | 
					 | 
				
			||||||
	CC="zig cc -target aarch64-linux-musl -O2 -g0" CGO_CFLAGS="-D_LARGEFILE64_SOURCE" GOOS=linux GOARCH=arm64 \
 | 
					 | 
				
			||||||
	go build $(GO_FLAGS) -o out/$@/yarr ./cmd/yarr
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
linux_armv7:
 | 
					 | 
				
			||||||
	CC="zig cc -target arm-linux-musleabihf -O2 -g0" CGO_CFLAGS="-D_LARGEFILE64_SOURCE" GOOS=linux GOARCH=arm GOARM=7 \
 | 
					 | 
				
			||||||
	go build $(GO_FLAGS) -o out/$@/yarr ./cmd/yarr
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
windows_amd64:
 | 
					 | 
				
			||||||
	CC="zig cc -target x86_64-windows-gnu" GOOS=windows GOARCH=amd64 go build $(GO_FLAGS) -o out/$@/yarr ./cmd/yarr
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
windows_arm64:
 | 
					 | 
				
			||||||
	CC="zig cc -target aarch64-windows-gnu" GOOS=windows GOARCH=arm64 go build $(GO_FLAGS) -o out/$@/yarr ./cmd/yarr
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
darwin_arm64_gui: etc/icon.icns
 | 
					 | 
				
			||||||
	GOOS=darwin GOARCH=arm64 go build $(GO_FLAGS_GUI) -o out/$@/yarr ./cmd/yarr
 | 
					 | 
				
			||||||
	./etc/macos_package.sh $(VERSION) etc/icon.icns out/$@/yarr out/$@
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
darwin_amd64_gui: etc/icon.icns
 | 
					 | 
				
			||||||
	GOOS=darwin GOARCH=amd64 go build $(GO_FLAGS_GUI) -o out/$@/yarr ./cmd/yarr
 | 
					 | 
				
			||||||
	./etc/macos_package.sh $(VERSION) etc/icon.icns out/$@/yarr out/$@
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
windows_amd64_gui: src/platform/versioninfo.rc
 | 
					 | 
				
			||||||
	GOOS=windows GOARCH=amd64 go build $(GO_FLAGS_GUI_WIN) -o out/$@/yarr.exe ./cmd/yarr
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
windows_arm64_gui: src/platform/versioninfo.rc
 | 
					 | 
				
			||||||
	GOOS=windows GOARCH=arm64 go build $(GO_FLAGS_GUI_WIN) -o out/$@/yarr.exe ./cmd/yarr
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
serve:
 | 
					serve:
 | 
				
			||||||
	go run $(GO_FLAGS) ./cmd/yarr -db local.db
 | 
						go run -tags "sqlite_foreign_keys" src/main.go -db local.db
 | 
				
			||||||
 | 
					
 | 
				
			||||||
test:
 | 
					test:
 | 
				
			||||||
	go test $(GO_FLAGS) ./...
 | 
						cd src && go test -tags "sqlite_foreign_keys release" ./...
 | 
				
			||||||
 | 
					 | 
				
			||||||
.PHONY: \
 | 
					 | 
				
			||||||
	host \
 | 
					 | 
				
			||||||
	darwin_amd64 darwin_amd64_gui \
 | 
					 | 
				
			||||||
	darwin_arm64 darwin_arm64_gui \
 | 
					 | 
				
			||||||
	windows_amd64 windows_amd64_gui \
 | 
					 | 
				
			||||||
	windows_arm64 windows_arm64_gui \
 | 
					 | 
				
			||||||
	serve test
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										18
									
								
								readme.md
									
									
									
									
									
								
							
							
						
						@@ -10,29 +10,27 @@ The app is a single binary with an embedded database (SQLite).
 | 
				
			|||||||
## usage
 | 
					## usage
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The latest prebuilt binaries for Linux/MacOS/Windows AMD64 are available
 | 
					The latest prebuilt binaries for Linux/MacOS/Windows AMD64 are available
 | 
				
			||||||
[here](https://github.com/nkanaev/yarr/releases/latest). Installation instructions:
 | 
					[here](https://github.com/nkanaev/yarr/releases/latest).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* MacOS
 | 
					### macos
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Download `yarr-*-macos64.zip`, unzip it, place `yarr.app` in `/Applications` folder, [open the app][macos-open], click the anchor menu bar icon, select "Open".
 | 
					Download `yarr-*-macos64.zip`, unzip it, place `yarr.app` in `/Applications` folder, [open the app][macos-open], click the anchor menu bar icon, select "Open".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Windows
 | 
					[macos-open]: https://support.apple.com/en-gb/guide/mac-help/mh40616/mac
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### windows
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Download `yarr-*-windows64.zip`, unzip it, open `yarr.exe`, click the anchor system tray icon, select "Open".
 | 
					Download `yarr-*-windows64.zip`, unzip it, open `yarr.exe`, click the anchor system tray icon, select "Open".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Linux
 | 
					### linux
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Download `yarr-*-linux64.zip`, unzip it, place `yarr` in `$HOME/.local/bin`
 | 
					Download `yarr-*-linux64.zip`, unzip it, place `yarr` in `$HOME/.local/bin`
 | 
				
			||||||
and run [the script](etc/install-linux.sh).
 | 
					and run [the script](etc/install-linux.sh).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[macos-open]: https://support.apple.com/en-gb/guide/mac-help/mh40616/mac
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
For self-hosting, see `yarr -h` for auth, tls & server configuration flags.
 | 
					For self-hosting, see `yarr -h` for auth, tls & server configuration flags.
 | 
				
			||||||
 | 
					For building from source code, see [build.md](build.md)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
See more:
 | 
					For Fever API support, see [fever.md](fever.md).
 | 
				
			||||||
 | 
					 | 
				
			||||||
* [Building from source code](doc/build.md)
 | 
					 | 
				
			||||||
* [Fever API support](doc/fever.md)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
## credits
 | 
					## credits
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,3 +1,6 @@
 | 
				
			|||||||
 | 
					//go:build release
 | 
				
			||||||
 | 
					// +build release
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package assets
 | 
					package assets
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import "embed"
 | 
					import "embed"
 | 
				
			||||||
@@ -6,6 +9,7 @@ import "embed"
 | 
				
			|||||||
//go:embed graphicarts
 | 
					//go:embed graphicarts
 | 
				
			||||||
//go:embed javascripts
 | 
					//go:embed javascripts
 | 
				
			||||||
//go:embed stylesheets
 | 
					//go:embed stylesheets
 | 
				
			||||||
 | 
					//go:embed manifest.json
 | 
				
			||||||
var embedded embed.FS
 | 
					var embedded embed.FS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func init() {
 | 
					func init() {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/android/android-launchericon-144-144.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 5.3 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/android/android-launchericon-192-192.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 8.3 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/android/android-launchericon-48-48.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.4 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/android/android-launchericon-512-512.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 26 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/android/android-launchericon-72-72.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 2.3 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/android/android-launchericon-96-96.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 3.1 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/ios/100.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 3.2 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/ios/1024.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 56 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/ios/114.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 3.7 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/ios/120.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 4.4 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/ios/128.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 4.8 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/ios/144.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 5.3 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/ios/152.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 5.6 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/ios/16.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 515 B  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/ios/167.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 7.0 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/ios/180.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 7.6 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/ios/192.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 8.3 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/ios/20.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 699 B  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/ios/256.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 11 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/ios/29.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 939 B  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/ios/32.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1010 B  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/ios/40.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.2 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/ios/50.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.6 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/ios/512.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 26 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/ios/57.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.8 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/ios/58.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.8 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/ios/60.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.8 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/ios/64.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 2.0 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/ios/72.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 2.3 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/ios/76.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 2.4 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/ios/80.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 2.5 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/ios/87.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 2.8 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/windows11/LargeTile.scale-100.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 14 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/windows11/LargeTile.scale-125.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 19 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/windows11/LargeTile.scale-150.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 24 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/windows11/LargeTile.scale-200.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 32 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/windows11/LargeTile.scale-400.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 69 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/windows11/SmallTile.scale-100.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 2.3 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/windows11/SmallTile.scale-125.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 2.8 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/windows11/SmallTile.scale-150.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 3.3 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/windows11/SmallTile.scale-200.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 5.3 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/windows11/SmallTile.scale-400.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 13 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/windows11/SplashScreen.scale-100.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 15 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/windows11/SplashScreen.scale-125.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 20 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/windows11/SplashScreen.scale-150.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 25 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/windows11/SplashScreen.scale-200.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 34 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/windows11/SplashScreen.scale-400.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 75 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/windows11/Square150x150Logo.scale-100.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 5.6 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/windows11/Square150x150Logo.scale-125.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 8.0 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/windows11/Square150x150Logo.scale-150.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 8.2 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/windows11/Square150x150Logo.scale-200.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 14 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/graphicarts/windows11/Square150x150Logo.scale-400.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 31 KiB  | 
| 
		 After Width: | Height: | Size: 602 B  | 
| 
		 After Width: | Height: | Size: 715 B  | 
| 
		 After Width: | Height: | Size: 722 B  | 
| 
		 After Width: | Height: | Size: 13 KiB  | 
| 
		 After Width: | Height: | Size: 1.0 KiB  | 
| 
		 After Width: | Height: | Size: 1.1 KiB  | 
| 
		 After Width: | Height: | Size: 1.2 KiB  | 
| 
		 After Width: | Height: | Size: 1.4 KiB  | 
| 
		 After Width: | Height: | Size: 1.5 KiB  | 
| 
		 After Width: | Height: | Size: 1.5 KiB  | 
| 
		 After Width: | Height: | Size: 2.1 KiB  | 
| 
		 After Width: | Height: | Size: 2.3 KiB  | 
| 
		 After Width: | Height: | Size: 2.4 KiB  | 
| 
		 After Width: | Height: | Size: 2.8 KiB  | 
| 
		 After Width: | Height: | Size: 3.3 KiB  | 
| 
		 After Width: | Height: | Size: 602 B  | 
| 
		 After Width: | Height: | Size: 715 B  | 
| 
		 After Width: | Height: | Size: 722 B  | 
| 
		 After Width: | Height: | Size: 13 KiB  | 
| 
		 After Width: | Height: | Size: 1.0 KiB  | 
| 
		 After Width: | Height: | Size: 1.1 KiB  |