mirror of
https://github.com/JackDallas/Premiumizearr.git
synced 2026-02-03 05:29:36 +01:00
Compare commits
52 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d9bd141951 | ||
|
|
802eeedfef | ||
|
|
4f9d8299e6 | ||
|
|
6bdf60f272 | ||
|
|
742bd1e324 | ||
|
|
1cd862c5dc | ||
|
|
9479ebe7fd | ||
|
|
4147817d6f | ||
|
|
c48259cb12 | ||
|
|
18ce2c95e9 | ||
|
|
ff832a5d18 | ||
|
|
56d52d0b3a | ||
|
|
3e50ba2ae1 | ||
|
|
898b53276a | ||
|
|
91cf5bcfc8 | ||
|
|
c86896e881 | ||
|
|
3af570479f | ||
|
|
e6825dcb26 | ||
|
|
7c06cb050b | ||
|
|
4d610d3f59 | ||
|
|
4bed257802 | ||
|
|
07843219ef | ||
|
|
b32ae333a8 | ||
|
|
49a716764c | ||
|
|
d6b123d7a3 | ||
|
|
0a4d6923b1 | ||
|
|
da1a11dba5 | ||
|
|
1e295c3608 | ||
|
|
78fc4b8b39 | ||
|
|
bdda3ca793 | ||
|
|
d44204a8ed | ||
|
|
5fff9f9f53 | ||
|
|
085d26c816 | ||
|
|
b60ef30a93 | ||
|
|
5af4083c67 | ||
|
|
e8e93c667f | ||
|
|
1893a1a5e4 | ||
|
|
fdddc40699 | ||
|
|
828eb43a4c | ||
|
|
969a3ac2cb | ||
|
|
83f1d19dfb | ||
|
|
ff36423729 | ||
|
|
cd0b5fba99 | ||
|
|
df9c768066 | ||
|
|
3786e1411c | ||
|
|
4bf929967a | ||
|
|
43ea4903c3 | ||
|
|
a55eea881c | ||
|
|
8c4c3a1b24 | ||
|
|
2db7e04604 | ||
|
|
7ec072a767 | ||
|
|
935813b27f |
26
.github/workflows/build.yml
vendored
26
.github/workflows/build.yml
vendored
@@ -24,9 +24,12 @@ jobs:
|
||||
with:
|
||||
go-version: '1.17'
|
||||
|
||||
- name: Confirm Version
|
||||
- name: go Version
|
||||
run: go version
|
||||
|
||||
- name: Docker Version
|
||||
run: docker version
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v2
|
||||
|
||||
@@ -34,6 +37,7 @@ jobs:
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
|
||||
# Standard Build
|
||||
- name: Build
|
||||
uses: goreleaser/goreleaser-action@v2
|
||||
if: startsWith(github.ref, 'refs/tags/') == false
|
||||
@@ -43,6 +47,8 @@ jobs:
|
||||
args: release --rm-dist --snapshot
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
DOCKER_BUILDKIT: 1
|
||||
COMPOSE_DOCKER_CLI_BUILD: 1
|
||||
|
||||
- uses: docker/login-action@v1
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
@@ -51,15 +57,31 @@ jobs:
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
# Release build
|
||||
- name: Release
|
||||
uses: goreleaser/goreleaser-action@v2
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
if: startsWith(github.ref, 'refs/tags/') && !contains(github.ref, '-rc')
|
||||
with:
|
||||
distribution: goreleaser
|
||||
version: latest
|
||||
args: release --rm-dist
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
DOCKER_BUILDKIT: 1
|
||||
COMPOSE_DOCKER_CLI_BUILD: 1
|
||||
|
||||
# Pre-Release build
|
||||
- name: Pre-Release
|
||||
uses: goreleaser/goreleaser-action@v2
|
||||
if: startsWith(github.ref, 'refs/tags/') && contains(github.ref, '-rc')
|
||||
with:
|
||||
distribution: goreleaser
|
||||
version: latest
|
||||
args: release --rm-dist -f .prerelease.goreleaser.yaml
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
DOCKER_BUILDKIT: 1
|
||||
COMPOSE_DOCKER_CLI_BUILD: 1
|
||||
|
||||
- name: Upload assets
|
||||
uses: actions/upload-artifact@v2
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
env:
|
||||
- DOCKER_BUILDKIT=1
|
||||
|
||||
before:
|
||||
hooks:
|
||||
- go mod tidy
|
||||
@@ -71,7 +74,7 @@ nfpms:
|
||||
|
||||
dockers:
|
||||
-
|
||||
use: docker
|
||||
use: buildx
|
||||
goos: linux
|
||||
goarch: amd64
|
||||
image_templates:
|
||||
@@ -83,9 +86,12 @@ dockers:
|
||||
- "--label=org.opencontainers.image.title={{.ProjectName}}"
|
||||
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
|
||||
- "--label=org.opencontainers.image.version={{.Version}}"
|
||||
- "--label=org.opencontainers.image.source=\"https://github.com/JackDallas/Premiumizearr\""
|
||||
- "--platform=linux/amd64"
|
||||
dockerfile: "docker/Dockerfile.amd64"
|
||||
extra_files:
|
||||
- build/static/
|
||||
- docker/
|
||||
-
|
||||
use: buildx
|
||||
goos: linux
|
||||
@@ -99,9 +105,12 @@ dockers:
|
||||
- "--label=org.opencontainers.image.title={{.ProjectName}}"
|
||||
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
|
||||
- "--label=org.opencontainers.image.version={{.Version}}"
|
||||
- "--label=org.opencontainers.image.source=\"https://github.com/JackDallas/Premiumizearr\""
|
||||
- "--platform=linux/arm64"
|
||||
dockerfile: "docker/Dockerfile.arm64"
|
||||
extra_files:
|
||||
- build/static/
|
||||
- docker/
|
||||
-
|
||||
use: buildx
|
||||
goos: linux
|
||||
@@ -116,9 +125,12 @@ dockers:
|
||||
- "--label=org.opencontainers.image.title={{.ProjectName}}"
|
||||
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
|
||||
- "--label=org.opencontainers.image.version={{.Version}}"
|
||||
- "--label=org.opencontainers.image.source=\"https://github.com/JackDallas/Premiumizearr\""
|
||||
- "--platform=linux/arm/v7"
|
||||
dockerfile: "docker/Dockerfile.armv7"
|
||||
extra_files:
|
||||
- build/static/
|
||||
- docker/
|
||||
|
||||
docker_manifests:
|
||||
# Release variants not created on rc-$i tags
|
||||
|
||||
147
.prerelease.goreleaser.yaml
Normal file
147
.prerelease.goreleaser.yaml
Normal file
@@ -0,0 +1,147 @@
|
||||
before:
|
||||
hooks:
|
||||
- go mod tidy
|
||||
- make web
|
||||
builds:
|
||||
- env:
|
||||
- CGO_ENABLED=0
|
||||
goos:
|
||||
- linux
|
||||
- windows
|
||||
main: ./cmd/premiumizearrd
|
||||
binary: premiumizearrd
|
||||
goarch:
|
||||
- amd64
|
||||
- arm64
|
||||
- arm
|
||||
goarm:
|
||||
- 7
|
||||
ignore:
|
||||
- goos: windows
|
||||
goarch: arm64
|
||||
- goos: windows
|
||||
goarch: arm
|
||||
|
||||
archives:
|
||||
- format_overrides:
|
||||
- goos: windows
|
||||
format: zip
|
||||
wrap_in_directory: true
|
||||
files:
|
||||
- README.md
|
||||
- LICENSE
|
||||
- src: build/*.service
|
||||
dst: ./
|
||||
strip_parent: true
|
||||
- src: build/static/*
|
||||
dst: static
|
||||
strip_parent: true
|
||||
|
||||
checksum:
|
||||
name_template: 'checksums.txt'
|
||||
|
||||
changelog:
|
||||
sort: asc
|
||||
filters:
|
||||
exclude:
|
||||
- '^docs:'
|
||||
- '^test:'
|
||||
|
||||
nfpms:
|
||||
-
|
||||
package_name: premiumizearr
|
||||
bindir: /opt/premiumizearrd
|
||||
vendor: Jack Dallas.
|
||||
homepage: https://github.com/JackDallas/Premiumizearr
|
||||
maintainer: Dallas <jack-dallas@outlook.com>
|
||||
description: Service to connect premiumize.me to Arr clients.
|
||||
license: GPLv3
|
||||
formats:
|
||||
- deb
|
||||
contents:
|
||||
- src: build/static/*
|
||||
dst: /opt/premiumizearrd/static/
|
||||
- src: init/premiumizearrd.service
|
||||
dst: /etc/systemd/system/premiumizearrd.service
|
||||
scripts:
|
||||
postinstall: "scripts/postinstall.sh"
|
||||
|
||||
dockers:
|
||||
-
|
||||
use: docker
|
||||
goos: linux
|
||||
goarch: amd64
|
||||
image_templates:
|
||||
- "ghcr.io/jackdallas/premiumizearr:{{ .Tag }}-amd64"
|
||||
skip_push: "false"
|
||||
build_flag_templates:
|
||||
- "--pull"
|
||||
- "--label=org.opencontainers.image.created={{.Date}}"
|
||||
- "--label=org.opencontainers.image.title={{.ProjectName}}"
|
||||
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
|
||||
- "--label=org.opencontainers.image.version={{.Version}}"
|
||||
- "--label=org.opencontainers.image.source=\"https://github.com/JackDallas/Premiumizearr\""
|
||||
- "--platform=linux/amd64"
|
||||
dockerfile: "docker/Dockerfile.amd64"
|
||||
extra_files:
|
||||
- build/static/
|
||||
- docker/
|
||||
-
|
||||
use: buildx
|
||||
goos: linux
|
||||
goarch: arm64
|
||||
image_templates:
|
||||
- "ghcr.io/jackdallas/premiumizearr:{{ .Tag }}-arm64"
|
||||
skip_push: "false"
|
||||
build_flag_templates:
|
||||
- "--pull"
|
||||
- "--label=org.opencontainers.image.created={{.Date}}"
|
||||
- "--label=org.opencontainers.image.title={{.ProjectName}}"
|
||||
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
|
||||
- "--label=org.opencontainers.image.version={{.Version}}"
|
||||
- "--label=org.opencontainers.image.source=\"https://github.com/JackDallas/Premiumizearr\""
|
||||
- "--platform=linux/arm64"
|
||||
dockerfile: "docker/Dockerfile.arm64"
|
||||
extra_files:
|
||||
- build/static/
|
||||
- docker/
|
||||
-
|
||||
use: buildx
|
||||
goos: linux
|
||||
goarch: arm
|
||||
goarm: 7
|
||||
image_templates:
|
||||
- "ghcr.io/jackdallas/premiumizearr:{{ .Tag }}-armv7"
|
||||
skip_push: "false"
|
||||
build_flag_templates:
|
||||
- "--pull"
|
||||
- "--label=org.opencontainers.image.created={{.Date}}"
|
||||
- "--label=org.opencontainers.image.title={{.ProjectName}}"
|
||||
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
|
||||
- "--label=org.opencontainers.image.version={{.Version}}"
|
||||
- "--label=org.opencontainers.image.source=\"https://github.com/JackDallas/Premiumizearr\""
|
||||
- "--platform=linux/arm/v7"
|
||||
dockerfile: "docker/Dockerfile.armv7"
|
||||
extra_files:
|
||||
- build/static/
|
||||
- docker/
|
||||
|
||||
docker_manifests:
|
||||
- skip_push: false
|
||||
- name_template: 'ghcr.io/jackdallas/premiumizearr:dev'
|
||||
image_templates:
|
||||
- 'ghcr.io/jackdallas/premiumizearr:{{ .Tag }}-amd64'
|
||||
- 'ghcr.io/jackdallas/premiumizearr:{{ .Tag }}-armv7'
|
||||
- 'ghcr.io/jackdallas/premiumizearr:{{ .Tag }}-arm64'
|
||||
- name_template: 'ghcr.io/jackdallas/premiumizearr:{{ .Tag }}'
|
||||
image_templates:
|
||||
- 'ghcr.io/jackdallas/premiumizearr:{{ .Tag }}-amd64'
|
||||
- 'ghcr.io/jackdallas/premiumizearr:{{ .Tag }}-armv7'
|
||||
- 'ghcr.io/jackdallas/premiumizearr:{{ .Tag }}-arm64'
|
||||
|
||||
release:
|
||||
prerelease: true
|
||||
header: "Premiumizearr Pre-Release {{ .Tag }}"
|
||||
footer: "**Full Changelog**: https://github.com/JackDallas/Premiumizearr/compare/{{ .PreviousTag }}...{{ .Tag }}"
|
||||
|
||||
|
||||
20
README.md
20
README.md
@@ -18,18 +18,34 @@
|
||||
|
||||
### Binary
|
||||
|
||||
```cmd
|
||||
#### System Install
|
||||
|
||||
```cli
|
||||
wget https://github.com/JackDallas/Premiumizearr/releases/download/x.x.x/Premiumizearr_x.x.x_linux_amd64.tar.gz
|
||||
tar xf Premiumizearr_x.x.x.x_linux_amd64.tar.gz
|
||||
cd Premiumizearr_x.x.x.x_linux_amd64
|
||||
sudo mkdir /opt/premiumizearrd/
|
||||
sudo cp -r premiumizearrd static/ /opt/premiumizearrd/
|
||||
sudo cp premiumizearrd /etc/systemd/system/
|
||||
sudo cp premiumizearrd.service /etc/systemd/system/
|
||||
sudo systemctl-reload
|
||||
sudo systemctl enable premiumizearrd.service
|
||||
sudo systemctl start premiumizearrd.service
|
||||
```
|
||||
|
||||
#### User Install
|
||||
|
||||
```cli
|
||||
wget https://github.com/JackDallas/Premiumizearr/releases/download/x.x.x/Premiumizearr_x.x.x_linux_amd64.tar.gz
|
||||
tar xf Premiumizearr_x.x.x.x_linux_amd64.tar.gz
|
||||
cd Premiumizearr_x.x.x.x_linux_amd64
|
||||
mkdir -p ~/.local/bin/
|
||||
cp -r premiumizearrd static/ ~/.local/bin/
|
||||
echo -e "export PATH=~/.local/bin/:$PATH" >> ~/.bashrc
|
||||
source ~/.bashrc
|
||||
```
|
||||
|
||||
You're now able to run the daemon from anywhere just by typing `premiumizearrd`
|
||||
|
||||
### deb file
|
||||
|
||||
```cmd
|
||||
|
||||
5
docker/Dockerfile.amd64
Normal file
5
docker/Dockerfile.amd64
Normal file
@@ -0,0 +1,5 @@
|
||||
# syntax=edrevo/dockerfile-plus
|
||||
|
||||
FROM ghcr.io/linuxserver/baseimage-alpine:3.16-f525477c-ls6@sha256:c25011f564093f523b1a793658d19275d9eac5a7f21aa5d00ce6cdff29c2a8c1
|
||||
|
||||
INCLUDE+ docker/Dockerfile.common
|
||||
5
docker/Dockerfile.arm64
Normal file
5
docker/Dockerfile.arm64
Normal file
@@ -0,0 +1,5 @@
|
||||
# syntax=edrevo/dockerfile-plus
|
||||
|
||||
FROM ghcr.io/linuxserver/baseimage-alpine:3.16-f525477c-ls6@sha256:611bc4a5a75132914dba740dffa4adcea5039fbe67e3704afd5731a55bf8c82f
|
||||
|
||||
INCLUDE+ docker/Dockerfile.common
|
||||
5
docker/Dockerfile.armv7
Normal file
5
docker/Dockerfile.armv7
Normal file
@@ -0,0 +1,5 @@
|
||||
# syntax=edrevo/dockerfile-plus
|
||||
|
||||
FROM ghcr.io/linuxserver/baseimage-alpine:3.16-f525477c-ls6@sha256:a31127cd9764c95d6137764a1854402d3a33ee085edd139e08726e2fc98d2254
|
||||
|
||||
INCLUDE+ docker/Dockerfile.common
|
||||
@@ -1,23 +1,23 @@
|
||||
FROM ubuntu:latest
|
||||
LABEL build_version="Premiumizearr version:- ${VERSION} Build-date:- ${BUILD_DATE}"
|
||||
LABEL maintainer="JackDallas"
|
||||
|
||||
RUN apt update && \
|
||||
apt install openssl -y && \
|
||||
apt install ca-certificates \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
COPY docker/root/ /
|
||||
|
||||
EXPOSE 8182
|
||||
|
||||
RUN mkdir /data
|
||||
RUN mkdir /unzip
|
||||
RUN mkdir /downloads
|
||||
RUN mkdir /transfers
|
||||
RUN mkdir /blackhole
|
||||
RUN mkdir -p /opt/app/
|
||||
|
||||
WORKDIR /opt/app/
|
||||
|
||||
ENV PREMIUMIZEARR_CONFIG_DIR_PATH=/data
|
||||
ENV PREMIUMIZEARR_LOGGING_DIR_PATH=/data
|
||||
|
||||
EXPOSE 8182
|
||||
|
||||
WORKDIR /opt/app/
|
||||
|
||||
COPY premiumizearrd /opt/app/
|
||||
COPY build/static /opt/app/static
|
||||
|
||||
ENTRYPOINT [ "/opt/app/premiumizearrd" ]
|
||||
ENTRYPOINT ["/init"]
|
||||
10
docker/root/etc/cont-init.d/30-config
Normal file
10
docker/root/etc/cont-init.d/30-config
Normal file
@@ -0,0 +1,10 @@
|
||||
#!/usr/bin/with-contenv bash
|
||||
|
||||
# permissions
|
||||
chown -R abc:abc \
|
||||
/data \
|
||||
/unzip \
|
||||
/downloads \
|
||||
/transfers \
|
||||
/blackhole \
|
||||
/opt \
|
||||
6
docker/root/etc/services.d/premiumizearr/run
Normal file
6
docker/root/etc/services.d/premiumizearr/run
Normal file
@@ -0,0 +1,6 @@
|
||||
#!/usr/bin/with-contenv bash
|
||||
|
||||
cd /opt/app/ || exit
|
||||
|
||||
exec \
|
||||
s6-setuidgid abc /opt/app/premiumizearrd
|
||||
@@ -64,17 +64,12 @@ func (t *TransferManagerService) CleanUpUnzipDir() {
|
||||
return
|
||||
}
|
||||
|
||||
err = os.RemoveAll(unzipBase)
|
||||
err = utils.RemoveContents(unzipBase)
|
||||
if err != nil {
|
||||
log.Errorf("Error removing unzip base location: %s", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
err = os.MkdirAll(unzipBase, 0755)
|
||||
if err != nil {
|
||||
log.Errorf("Error creating unzip base location: %s", err.Error())
|
||||
log.Errorf("Error cleaning unzip directory: %s", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func (manager *TransferManagerService) ConfigUpdatedCallback(currentConfig config.Config, newConfig config.Config) {
|
||||
|
||||
@@ -151,3 +151,23 @@ func IsDirectoryWriteable(path string) bool {
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
//https://stackoverflow.com/questions/33450980/how-to-remove-all-contents-of-a-directory-using-golang
|
||||
func RemoveContents(dir string) error {
|
||||
d, err := os.Open(dir)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer d.Close()
|
||||
names, err := d.Readdirnames(-1)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for _, name := range names {
|
||||
err = os.RemoveAll(filepath.Join(dir, name))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user