the great refactoring

This commit is contained in:
Andrey Parhomenko 2024-12-23 21:54:59 +05:00
parent 0f4ee60246
commit 344ba5934b
18 changed files with 111 additions and 241 deletions

100
Makefile
View file

@ -1,100 +0,0 @@
-include environ.inc
.PHONY: help deps dev build install image release test clean clean-all
export CGO_ENABLED=0
VERSION=$(shell git describe --abbrev=0 --tags 2>/dev/null || echo "$VERSION")
COMMIT=$(shell git rev-parse --short HEAD || echo "$COMMIT")
BRANCH=$(shell git rev-parse --abbrev-ref HEAD)
BUILD=$(shell git show -s --pretty=format:%cI)
GOCMD=go
GOVER=$(shell go version | grep -o -E 'go1\.17\.[0-9]+')
DESTDIR=/usr/local/bin
ifeq ($(BRANCH), master)
IMAGE := prologic/tube
TAG := latest
else
IMAGE := prologic/tube
TAG := dev
endif
all: help
.PHONY: help
help: ## Show this help message
@echo "tube - a Youtube-like (without censorship and features you don't need!) Video Sharing App"
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n"} /^[$$()% a-zA-Z_-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)
preflight: ## Run preflight checks to ensure you have the right build tools
@./preflight.sh
deps: ## Install any dependencies required
dev : DEBUG=1
dev : server ## Build debug version of tube
@./tube
server: generate ## Build the yarnd server
ifeq ($(DEBUG), 1)
@echo "Building in debug mode..."
@$(GOCMD) build $(FLAGS) -tags "netgo static_build" -installsuffix netgo \
-ldflags "\
-X $(shell go list).Version=$(VERSION) \
-X $(shell go list).Commit=$(COMMIT) \
-X $(shell go list).Build=$(BUILD)" \
./cmd/tube/...
else
@$(GOCMD) build $(FLAGS) -tags "netgo static_build" -installsuffix netgo \
-ldflags "-w \
-X $(shell go list).Version=$(VERSION) \
-X $(shell go list).Commit=$(COMMIT) \
-X $(shell go list).Build=$(BUILD)" \
./cmd/tube/...
endif
build: server ## Build the server
generate: ## Genereate any code required by the build
@if [ x"$(DEBUG)" = x"1" ]; then \
echo 'Running in debug mode...'; \
fi
install: build ## Install tube to $DESTDIR
@install -D -m 755 tube $(DESTDIR)/tube
ifeq ($(PUBLISH), 1)
image: generate ## Build the Docker image
@docker buildx build \
--build-arg VERSION="$(VERSION)" \
--build-arg COMMIT="$(COMMIT)" \
--build-arg BUILD="$(BUILD)" \
--platform linux/amd64,linux/arm64 --push -t $(IMAGE):$(TAG) .
else
image: generate
@docker build \
--build-arg VERSION="$(VERSION)" \
--build-arg COMMIT="$(COMMIT)" \
--build-arg BUILD="$(BUILD)" \
-t $(IMAGE):$(TAG) .
endif
release: generate ## Release a new version to Gitea
@./tools/release.sh
fmt: ## Format sources fiels
@$(GOCMD) fmt ./...
test: ## Run test suite
@CGO_ENABLED=1 $(GOCMD) test -v -cover -race ./...
coverage: ## Get test coverage report
@CGO_ENABLED=1 $(GOCMD) test -v -cover -race -cover -coverprofile=coverage.out ./...
@$(GOCMD) tool cover -html=coverage.out
clean: ## Remove untracked files
@git clean -f -d -x
clean-all: ## Remove untracked and Git ignores files
@git clean -f -d -X

View file

@ -11,15 +11,15 @@ import (
"os" "os"
"path" "path"
"path/filepath" "path/filepath"
"sort" //"sort"
"strings" "strings"
"git.mills.io/prologic/tube/app/middleware" "surdeus.su/serv/tube/app/middleware"
"git.mills.io/prologic/tube/importers" //"surdeus.su/serv/tube/importers"
"git.mills.io/prologic/tube/media" "surdeus.su/serv/tube/media"
"git.mills.io/prologic/tube/static" "surdeus.su/serv/tube/static"
"git.mills.io/prologic/tube/templates" "surdeus.su/serv/tube/templates"
"git.mills.io/prologic/tube/utils" "surdeus.su/serv/tube/utils"
securejoin "github.com/cyphar/filepath-securejoin" securejoin "github.com/cyphar/filepath-securejoin"
"github.com/dustin/go-humanize" "github.com/dustin/go-humanize"
@ -109,7 +109,7 @@ func NewApp(cfg *Config) (*App, error) {
} else { } else {
r.HandleFunc("/upload", middleware.OptionallyRequireAdminAuth(a.uploadHandler, authPassword)).Methods("GET", "OPTIONS", "POST") r.HandleFunc("/upload", middleware.OptionallyRequireAdminAuth(a.uploadHandler, authPassword)).Methods("GET", "OPTIONS", "POST")
} }
r.HandleFunc("/import", a.importHandler).Methods("GET", "OPTIONS", "POST") //r.HandleFunc("/import", a.importHandler).Methods("GET", "OPTIONS", "POST")
r.HandleFunc("/v/{id}.mp4", a.videoHandler).Methods("GET") r.HandleFunc("/v/{id}.mp4", a.videoHandler).Methods("GET")
r.HandleFunc("/v/{prefix}/{id}.mp4", a.videoHandler).Methods("GET") r.HandleFunc("/v/{prefix}/{id}.mp4", a.videoHandler).Methods("GET")
r.HandleFunc("/t/{id}", a.thumbHandler).Methods("GET") r.HandleFunc("/t/{id}", a.thumbHandler).Methods("GET")
@ -427,7 +427,7 @@ func (a *App) uploadHandler(w http.ResponseWriter, r *http.Request) {
} }
// HTTP handler for /import // HTTP handler for /import
func (a *App) importHandler(w http.ResponseWriter, r *http.Request) { /*func (a *App) importHandler(w http.ResponseWriter, r *http.Request) {
if r.Method == "GET" { if r.Method == "GET" {
ctx := &struct { ctx := &struct {
Config *Config Config *Config
@ -621,7 +621,7 @@ func (a *App) importHandler(w http.ResponseWriter, r *http.Request) {
} else { } else {
http.Error(w, "Method Not Allowed", http.StatusMethodNotAllowed) http.Error(w, "Method Not Allowed", http.StatusMethodNotAllowed)
} }
} }*/
// HTTP handler for /v/id // HTTP handler for /v/id
func (a *App) pageHandler(w http.ResponseWriter, r *http.Request) { func (a *App) pageHandler(w http.ResponseWriter, r *http.Request) {

View file

@ -9,9 +9,11 @@ import (
"go.mills.io/bitcask/v2" "go.mills.io/bitcask/v2"
) )
// BitcaskStore ... // BitcaskStore ...
type BitcaskStore struct { type BitcaskStore struct {
db bitcask.DB db *bitcask.Bitcask
} }
// NewBitcaskStore ... // NewBitcaskStore ...

View file

@ -1,6 +1,6 @@
<a name="1.2.0"></a> <a name="1.2.0"></a>
## [1.2.0](https://git.mills.io/prologic/tube/compare/v1.1.13...1.2.0) (2023-01-21) ## [1.2.0](https://surdeus.su/serv/tube/compare/v1.1.13...1.2.0) (2023-01-21)
### Bug Fixes ### Bug Fixes
@ -30,7 +30,7 @@ that Sandstorm app metadata is supposed to be less than 1 MB total, so I optimiz
<a name="v1.1.13"></a> <a name="v1.1.13"></a>
## [v1.1.13](https://git.mills.io/prologic/tube/compare/v1.1.12...v1.1.13) (2022-08-01) ## [v1.1.13](https://surdeus.su/serv/tube/compare/v1.1.12...v1.1.13) (2022-08-01)
### Bug Fixes ### Bug Fixes
@ -54,7 +54,7 @@ that Sandstorm app metadata is supposed to be less than 1 MB total, so I optimiz
<a name="v1.1.12"></a> <a name="v1.1.12"></a>
## [v1.1.12](https://git.mills.io/prologic/tube/compare/v1.1.11...v1.1.12) (2020-07-08) ## [v1.1.12](https://surdeus.su/serv/tube/compare/v1.1.11...v1.1.12) (2020-07-08)
### Bug Fixes ### Bug Fixes
@ -76,7 +76,7 @@ that Sandstorm app metadata is supposed to be less than 1 MB total, so I optimiz
<a name="v1.1.11"></a> <a name="v1.1.11"></a>
## [v1.1.11](https://git.mills.io/prologic/tube/compare/v1.1.10...v1.1.11) (2020-04-02) ## [v1.1.11](https://surdeus.su/serv/tube/compare/v1.1.10...v1.1.11) (2020-04-02)
### Bug Fixes ### Bug Fixes
@ -91,11 +91,11 @@ that Sandstorm app metadata is supposed to be less than 1 MB total, so I optimiz
<a name="v1.1.10"></a> <a name="v1.1.10"></a>
## [v1.1.10](https://git.mills.io/prologic/tube/compare/v1.1.9...v1.1.10) (2020-04-01) ## [v1.1.10](https://surdeus.su/serv/tube/compare/v1.1.9...v1.1.10) (2020-04-01)
<a name="v1.1.9"></a> <a name="v1.1.9"></a>
## [v1.1.9](https://git.mills.io/prologic/tube/compare/v1.1.8...v1.1.9) (2020-03-31) ## [v1.1.9](https://surdeus.su/serv/tube/compare/v1.1.8...v1.1.9) (2020-03-31)
### Bug Fixes ### Bug Fixes
@ -115,7 +115,7 @@ that Sandstorm app metadata is supposed to be less than 1 MB total, so I optimiz
<a name="v1.1.8"></a> <a name="v1.1.8"></a>
## [v1.1.8](https://git.mills.io/prologic/tube/compare/v1.1.7...v1.1.8) (2020-03-28) ## [v1.1.8](https://surdeus.su/serv/tube/compare/v1.1.7...v1.1.8) (2020-03-28)
### Bug Fixes ### Bug Fixes
@ -123,15 +123,15 @@ that Sandstorm app metadata is supposed to be less than 1 MB total, so I optimiz
<a name="v1.1.7"></a> <a name="v1.1.7"></a>
## [v1.1.7](https://git.mills.io/prologic/tube/compare/v1.1.6...v1.1.7) (2020-03-28) ## [v1.1.7](https://surdeus.su/serv/tube/compare/v1.1.6...v1.1.7) (2020-03-28)
<a name="v1.1.6"></a> <a name="v1.1.6"></a>
## [v1.1.6](https://git.mills.io/prologic/tube/compare/v1.1.5...v1.1.6) (2020-03-28) ## [v1.1.6](https://surdeus.su/serv/tube/compare/v1.1.5...v1.1.6) (2020-03-28)
<a name="v1.1.5"></a> <a name="v1.1.5"></a>
## [v1.1.5](https://git.mills.io/prologic/tube/compare/v1.1.4...v1.1.5) (2020-03-28) ## [v1.1.5](https://surdeus.su/serv/tube/compare/v1.1.4...v1.1.5) (2020-03-28)
### Features ### Features
@ -141,7 +141,7 @@ that Sandstorm app metadata is supposed to be less than 1 MB total, so I optimiz
<a name="v1.1.4"></a> <a name="v1.1.4"></a>
## [v1.1.4](https://git.mills.io/prologic/tube/compare/v1.1.3...v1.1.4) (2020-03-28) ## [v1.1.4](https://surdeus.su/serv/tube/compare/v1.1.3...v1.1.4) (2020-03-28)
### Features ### Features
@ -151,7 +151,7 @@ that Sandstorm app metadata is supposed to be less than 1 MB total, so I optimiz
<a name="v1.1.3"></a> <a name="v1.1.3"></a>
## [v1.1.3](https://git.mills.io/prologic/tube/compare/v1.1.2...v1.1.3) (2020-03-27) ## [v1.1.3](https://surdeus.su/serv/tube/compare/v1.1.2...v1.1.3) (2020-03-27)
### Features ### Features
@ -165,7 +165,7 @@ that Sandstorm app metadata is supposed to be less than 1 MB total, so I optimiz
<a name="v1.1.2"></a> <a name="v1.1.2"></a>
## [v1.1.2](https://git.mills.io/prologic/tube/compare/v1.1.1...v1.1.2) (2020-03-25) ## [v1.1.2](https://surdeus.su/serv/tube/compare/v1.1.1...v1.1.2) (2020-03-25)
### Bug Fixes ### Bug Fixes
@ -187,7 +187,7 @@ that Sandstorm app metadata is supposed to be less than 1 MB total, so I optimiz
<a name="v1.1.1"></a> <a name="v1.1.1"></a>
## [v1.1.1](https://git.mills.io/prologic/tube/compare/v1.1.0...v1.1.1) (2020-03-23) ## [v1.1.1](https://surdeus.su/serv/tube/compare/v1.1.0...v1.1.1) (2020-03-23)
### Bug Fixes ### Bug Fixes
@ -203,11 +203,11 @@ that Sandstorm app metadata is supposed to be less than 1 MB total, so I optimiz
<a name="v1.1.0"></a> <a name="v1.1.0"></a>
## [v1.1.0](https://git.mills.io/prologic/tube/compare/v1.0.0...v1.1.0) (2019-08-08) ## [v1.1.0](https://surdeus.su/serv/tube/compare/v1.0.0...v1.1.0) (2019-08-08)
<a name="v1.0.0"></a> <a name="v1.0.0"></a>
## [v1.0.0](https://git.mills.io/prologic/tube/compare/v0.2.0...v1.0.0) (2019-08-08) ## [v1.0.0](https://surdeus.su/serv/tube/compare/v0.2.0...v1.0.0) (2019-08-08)
### Updates ### Updates
@ -215,7 +215,7 @@ that Sandstorm app metadata is supposed to be less than 1 MB total, so I optimiz
<a name="v0.2.0"></a> <a name="v0.2.0"></a>
## [v0.2.0](https://git.mills.io/prologic/tube/compare/v0.1.0...v0.2.0) (2019-08-08) ## [v0.2.0](https://surdeus.su/serv/tube/compare/v0.1.0...v0.2.0) (2019-08-08)
### Updates ### Updates
@ -223,7 +223,7 @@ that Sandstorm app metadata is supposed to be less than 1 MB total, so I optimiz
<a name="v0.1.0"></a> <a name="v0.1.0"></a>
## [v0.1.0](https://git.mills.io/prologic/tube/compare/v0.0.0...v0.1.0) (2019-07-03) ## [v0.1.0](https://surdeus.su/serv/tube/compare/v0.0.0...v0.1.0) (2019-07-03)
<a name="v0.0.0"></a> <a name="v0.0.0"></a>

View file

@ -8,8 +8,8 @@ import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
flag "github.com/spf13/pflag" flag "github.com/spf13/pflag"
"git.mills.io/prologic/tube" "surdeus.su/serv/tube"
"git.mills.io/prologic/tube/app" "surdeus.su/serv/tube/app"
) )
var ( var (

View file

@ -8,7 +8,7 @@
], ],
"server": { "server": {
"host": "0.0.0.0", "host": "0.0.0.0",
"port": 8000, "port": 8080,
"store_path": "tube.db", "store_path": "tube.db",
"upload_path": "uploads", "upload_path": "uploads",
"preserve_upload_filename": false, "preserve_upload_filename": false,
@ -24,12 +24,12 @@
}, },
"feed": { "feed": {
"external_url": "", "external_url": "",
"title": "Feed Title", "title": "Feed",
"link": "http://your-url.example/about", "link": "http://your-url.example/about",
"description": "Feed Description", "description": "Feed Description",
"author": { "author": {
"name": "Author Name", "name": "Surdeus",
"email": "author@somewhere.example" "email": "surdeus@gmail.com"
}, },
"copyright": "Copyright Text" "copyright": "Copyright Text"
}, },

38
go.mod
View file

@ -1,41 +1,39 @@
module git.mills.io/prologic/tube module surdeus.su/serv/tube
go 1.22 go 1.23.1
require ( require (
git.mills.io/prologic/vimeodl v0.0.0-20210827153510-f28ed0158ec3 git.mills.io/prologic/vimeodl v0.0.0-20210827153510-f28ed0158ec3
github.com/Andreychik32/ytdl v1.0.4 github.com/cyphar/filepath-securejoin v0.3.6
github.com/cyphar/filepath-securejoin v0.2.3 github.com/dhowden/tag v0.0.0-20240417053706-3d75831295e8
github.com/dhowden/tag v0.0.0-20220618230019-adf36e896086
github.com/dustin/go-humanize v1.0.1 github.com/dustin/go-humanize v1.0.1
github.com/fsnotify/fsnotify v1.7.0 github.com/fsnotify/fsnotify v1.8.0
github.com/gorilla/handlers v1.5.1 github.com/gorilla/handlers v1.5.2
github.com/gorilla/mux v1.8.0 github.com/gorilla/mux v1.8.1
github.com/kkdai/youtube v1.2.4
github.com/lithammer/shortuuid/v3 v3.0.7 github.com/lithammer/shortuuid/v3 v3.0.7
github.com/sirupsen/logrus v1.9.3 github.com/sirupsen/logrus v1.9.3
github.com/spf13/pflag v1.0.5 github.com/spf13/pflag v1.0.5
github.com/wybiral/feeds v1.1.1 github.com/wybiral/feeds v1.1.1
go.mills.io/bitcask/v2 v2.0.3 go.mills.io/bitcask/v2 v2.1.1
gopkg.in/yaml.v3 v3.0.1 gopkg.in/yaml.v3 v3.0.1
) )
require ( require (
github.com/VividCortex/ewma v1.1.1 // indirect
github.com/abcum/lcp v0.0.0-20201209214815-7a3f3840be81 // indirect github.com/abcum/lcp v0.0.0-20201209214815-7a3f3840be81 // indirect
github.com/antchfx/jsonquery v1.3.1 // indirect github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d // indirect
github.com/antchfx/xpath v1.2.2 // indirect
github.com/felixge/httpsnoop v1.0.3 // indirect github.com/felixge/httpsnoop v1.0.3 // indirect
github.com/gofrs/flock v0.8.1 // indirect github.com/gofrs/flock v0.8.1 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/google/uuid v1.2.0 // indirect
github.com/google/uuid v1.3.0 // indirect
github.com/hashicorp/go-immutable-radix/v2 v2.0.0 // indirect github.com/hashicorp/go-immutable-radix/v2 v2.0.0 // indirect
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
github.com/kr/pretty v0.3.0 // indirect github.com/kr/pretty v0.3.1 // indirect
github.com/mattetti/filebuffer v1.0.1 // indirect github.com/mattetti/filebuffer v1.0.1 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-runewidth v0.0.9 // indirect
github.com/mattn/go-isatty v0.0.17 // indirect
github.com/pkg/errors v0.9.1 // indirect github.com/pkg/errors v0.9.1 // indirect
github.com/rs/zerolog v1.28.0 // indirect github.com/vbauerster/mpb/v5 v5.2.4 // indirect
golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 // indirect
golang.org/x/sys v0.14.0 // indirect golang.org/x/net v0.0.0-20200707034311-ab3426394381 // indirect
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect golang.org/x/sys v0.20.0 // indirect
) )

118
go.sum
View file

@ -1,51 +1,38 @@
git.mills.io/prologic/vimeodl v0.0.0-20210827153510-f28ed0158ec3 h1:FjII4Z7ZaQgLP3cf3702tx1du0Pd+23TCS+/9nurMEo= git.mills.io/prologic/vimeodl v0.0.0-20210827153510-f28ed0158ec3 h1:FjII4Z7ZaQgLP3cf3702tx1du0Pd+23TCS+/9nurMEo=
git.mills.io/prologic/vimeodl v0.0.0-20210827153510-f28ed0158ec3/go.mod h1:Y6WELJ/Od3MqvFz/CvomULeQc3kSGsTPaC2JPMk7SHM= git.mills.io/prologic/vimeodl v0.0.0-20210827153510-f28ed0158ec3/go.mod h1:Y6WELJ/Od3MqvFz/CvomULeQc3kSGsTPaC2JPMk7SHM=
github.com/Andreychik32/ytdl v1.0.4 h1:+eWTsqmjAOYWJFweIGIegvtO7L8c4NCvgY0CntcHRn8= github.com/VividCortex/ewma v1.1.1 h1:MnEK4VOv6n0RSY4vtRe3h11qjxL3+t0B8yOL8iMXdcM=
github.com/Andreychik32/ytdl v1.0.4/go.mod h1:H7UdaZWV/n1yjtFdo3Y7/zYCDqr/x4e+I10GFqWo07c= github.com/VividCortex/ewma v1.1.1/go.mod h1:2Tkkvm3sRDVXaiyucHiACn4cqf7DpdyLvmxzcbUokwA=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/abcum/lcp v0.0.0-20201209214815-7a3f3840be81 h1:uHogIJ9bXH75ZYrXnVShHIyywFiUZ7OOabwd9Sfd8rw= github.com/abcum/lcp v0.0.0-20201209214815-7a3f3840be81 h1:uHogIJ9bXH75ZYrXnVShHIyywFiUZ7OOabwd9Sfd8rw=
github.com/abcum/lcp v0.0.0-20201209214815-7a3f3840be81/go.mod h1:6ZvnjTZX1LNo1oLpfaJK8h+MXqHxcBFBIwkgsv+xlv0= github.com/abcum/lcp v0.0.0-20201209214815-7a3f3840be81/go.mod h1:6ZvnjTZX1LNo1oLpfaJK8h+MXqHxcBFBIwkgsv+xlv0=
github.com/antchfx/jsonquery v1.1.4/go.mod h1:cHs8r6Bymd8j6HI6Ej1IJbjahKvLBcIEh54dfmo+E9A= github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d h1:licZJFw2RwpHMqeKTCYkitsPqHNxTmd4SNR5r94FGM8=
github.com/antchfx/jsonquery v1.3.1 h1:kh3599hMLpygvcxoENcj99eCvnS++JjRX10LjNYhK58= github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d/go.mod h1:asat636LX7Bqt5lYEZ27JNDcqxfjdBQuJ/MM4CN/Lzo=
github.com/antchfx/jsonquery v1.3.1/go.mod h1:R4LXEqMGhHoCkDfuKt7K5hBxdTlINB9nubLE848juxw=
github.com/antchfx/xpath v1.1.7/go.mod h1:Yee4kTMuNiPYJ7nSNorELQMr1J33uOpXDMByNYhvtNk=
github.com/antchfx/xpath v1.2.2 h1:fsKX4sHfxhsGpDMYjsvCmGC0EGdiT7XA0af/6PP6Oa0=
github.com/antchfx/xpath v1.2.2/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs=
github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/cyphar/filepath-securejoin v0.2.3 h1:YX6ebbZCZP7VkM3scTTokDgBL2TY741X51MTk3ycuNI= github.com/cyphar/filepath-securejoin v0.3.6 h1:4d9N5ykBnSp5Xn2JkhocYDkOpURL/18CYMpo6xB9uWM=
github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/cyphar/filepath-securejoin v0.3.6/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dhowden/tag v0.0.0-20220618230019-adf36e896086 h1:ORubSQoKnncsBnR4zD9CuYFJCPOCuSNEpWEZrDdBXkc= github.com/dhowden/tag v0.0.0-20240417053706-3d75831295e8 h1:OtSeLS5y0Uy01jaKK4mA/WVIYtpzVm63vLVAPzJXigg=
github.com/dhowden/tag v0.0.0-20220618230019-adf36e896086/go.mod h1:Z3Lomva4pyMWYezjMAU5QWRh0p1VvO4199OHlFnyKkM= github.com/dhowden/tag v0.0.0-20240417053706-3d75831295e8/go.mod h1:apkPC/CR3s48O2D7Y++n1XWEpgPNNCjXYga3PPbJe2E=
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk=
github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M=
github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw=
github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/google/uuid v1.2.0 h1:qJYtXnJRWmpe7m/3XlyhrsLrEURqHRM2kxzoxXqyUDs=
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 h1:l5lAOZEym3oK3SQ2HBHWsJUfbNBiTXJDeW2QDxw9AQ0= github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 h1:l5lAOZEym3oK3SQ2HBHWsJUfbNBiTXJDeW2QDxw9AQ0=
github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE=
github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w=
github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
github.com/hashicorp/go-immutable-radix/v2 v2.0.0 h1:nq9lQ5I71Heg2lRb2/+szuIWKY3Y73d8YKyXyN91WzU= github.com/hashicorp/go-immutable-radix/v2 v2.0.0 h1:nq9lQ5I71Heg2lRb2/+szuIWKY3Y73d8YKyXyN91WzU=
github.com/hashicorp/go-immutable-radix/v2 v2.0.0/go.mod h1:hgdqLXA4f6NIjRVisM1TJ9aOJVNRqKZj+xDGF6m7PBw= github.com/hashicorp/go-immutable-radix/v2 v2.0.0/go.mod h1:hgdqLXA4f6NIjRVisM1TJ9aOJVNRqKZj+xDGF6m7PBw=
github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8=
@ -54,42 +41,26 @@ github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs
github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kkdai/youtube v1.2.4 h1:LyuoTd268oRvd2uqNB6XmQx3HiIdLuLDGZ7oo22hRcI=
github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= github.com/kkdai/youtube v1.2.4/go.mod h1:FEo9+PUI1UcsTZGl1TmPKlErKhRoJmD3mvqSs7AdC2g=
github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/lithammer/shortuuid/v3 v3.0.7 h1:trX0KTHy4Pbwo/6ia8fscyHoGA+mf1jWbPJVuvyJQQ8= github.com/lithammer/shortuuid/v3 v3.0.7 h1:trX0KTHy4Pbwo/6ia8fscyHoGA+mf1jWbPJVuvyJQQ8=
github.com/lithammer/shortuuid/v3 v3.0.7/go.mod h1:vMk8ke37EmiewwolSO1NLW8vP4ZaKlRuDIi8tWWmAts= github.com/lithammer/shortuuid/v3 v3.0.7/go.mod h1:vMk8ke37EmiewwolSO1NLW8vP4ZaKlRuDIi8tWWmAts=
github.com/mattetti/filebuffer v1.0.1 h1:gG7pyfnSIZCxdoKq+cPa8T0hhYtD9NxCdI4D7PTjRLM= github.com/mattetti/filebuffer v1.0.1 h1:gG7pyfnSIZCxdoKq+cPa8T0hhYtD9NxCdI4D7PTjRLM=
github.com/mattetti/filebuffer v1.0.1/go.mod h1:YdMURNDOttIiruleeVr6f56OrMc+MydEnTcXwtkxNVs= github.com/mattetti/filebuffer v1.0.1/go.mod h1:YdMURNDOttIiruleeVr6f56OrMc+MydEnTcXwtkxNVs=
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng=
github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k= github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ=
github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
github.com/rs/zerolog v1.19.0/go.mod h1:IzD0RJ65iWH0w97OQQebJEvTZYvsCUm9WVLWBQrJRjo=
github.com/rs/zerolog v1.28.0 h1:MirSo27VyNi7RJYP3078AA1+Cyzd2GB66qy3aUHvsWY=
github.com/rs/zerolog v1.28.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0=
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
@ -102,36 +73,33 @@ github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/urfave/cli/v2 v2.2.0/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ= github.com/vbauerster/mpb/v5 v5.2.4 h1:PLP8vv75RcEgxGoJVtKaRD2FHSxEmIV/u4ZuOrfO8Qg=
github.com/vbauerster/mpb/v5 v5.2.4/go.mod h1:K4iCHQp5sWnmAgEn+uW1sAxSilctb4JPAGXx49jV+Aw=
github.com/wybiral/feeds v1.1.1 h1:KWE/JxA2XfP0My+C0wymqXrWK5oIyjRVbH5kpclsea0= github.com/wybiral/feeds v1.1.1 h1:KWE/JxA2XfP0My+C0wymqXrWK5oIyjRVbH5kpclsea0=
github.com/wybiral/feeds v1.1.1/go.mod h1:MRSqtY+Oy5HMM51cF212xqU39MYbsYq/AH+PY8IfeM0= github.com/wybiral/feeds v1.1.1/go.mod h1:MRSqtY+Oy5HMM51cF212xqU39MYbsYq/AH+PY8IfeM0=
go.mills.io/bitcask/v2 v2.0.3 h1:/ZUfDsjiGXfHANRVD1bLjbmzT91ay8MbwWQOY2Nhf/s= go.mills.io/bitcask/v2 v2.1.1 h1:UEFOePaDYLGL7sZfBfZP9nhgpRk7ISQyMx4aQr8jFyk=
go.mills.io/bitcask/v2 v2.0.3/go.mod h1:0W1Vt5iL7IZajuTbrQyg9TlpWXSY5DaPQ35lxjc7tJw= go.mills.io/bitcask/v2 v2.1.1/go.mod h1:ZQFykoTTCvMwy24lBstZhSRQuleYIB4EzWKSOgEv6+k=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 h1:vr/HnozRka3pE4EsMEg1lgkXJkTFJCVUX+S/ZT6wYzM=
golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/net v0.0.0-20200707034311-ab3426394381 h1:VXak5I6aEWmAXeQjA+QSZzlgNrpq9mjcfDemuexIKsU=
golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=
golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190828213141-aed303cbaa74/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

View file

@ -23,9 +23,9 @@ type Importer interface {
} }
func NewImporter(url string) (Importer, error) { func NewImporter(url string) (Importer, error) {
if strings.Contains(url, "youtube.com") || strings.HasPrefix(strings.ToLower(url), "youtube:") { /*if strings.Contains(url, "youtube.com") || strings.HasPrefix(strings.ToLower(url), "youtube:") {
return &YoutubeImporter{}, nil return &YoutubeImporter{}, nil
} else if strings.Contains(url, "vimeo.com") || strings.HasPrefix(strings.ToLower(url), "vimeo:") { } else*/ if strings.Contains(url, "vimeo.com") || strings.HasPrefix(strings.ToLower(url), "vimeo:") {
return &VimeoImporter{}, nil return &VimeoImporter{}, nil
} else { } else {
return nil, ErrUnsupportedVideoURL return nil, ErrUnsupportedVideoURL

View file

@ -1,11 +1,12 @@
package importers package importers
/*
import ( import (
"context" "context"
"fmt" "fmt"
"strings" "strings"
"github.com/Andreychik32/ytdl" ytdl "github.com/kkdai/youtube"
) )
type YoutubeImporter struct{} type YoutubeImporter struct{}
@ -38,3 +39,4 @@ func (i *YoutubeImporter) GetVideoInfo(url string) (videoInfo VideoInfo, err err
return return
} }
*/

View file

@ -10,7 +10,7 @@ import (
"strings" "strings"
"time" "time"
"git.mills.io/prologic/tube/utils" "surdeus.su/serv/tube/utils"
"github.com/dhowden/tag" "github.com/dhowden/tag"
"gopkg.in/yaml.v3" "gopkg.in/yaml.v3"
) )

View file

@ -28,7 +28,7 @@ MP4 H.264 AAC, multiple collections and RSS feed.
### Prebuilt Release Binaries ### Prebuilt Release Binaries
1. Go grab the latest binary from the 1. Go grab the latest binary from the
[Releases](https://git.mills.io/prologic/tube/releases) page for your [Releases](https://surdeus.su/serv/tube/releases) page for your
platform / operating system. platform / operating system.
2. Extract the archive. 2. Extract the archive.
3. Run `./tube` 3. Run `./tube`
@ -49,7 +49,7 @@ Where `DOCKER_MACHINE_IP` is the IP Address of your Docker Node.
### Building From Source ### Building From Source
```#!sh ```#!sh
$ git clone https://git.mills.io/prologic/tube $ git clone https://surdeus.su/serv/tube
$ cd tube $ cd tube
$ make build $ make build
$ ./tube $ ./tube
@ -65,7 +65,7 @@ similiar to the one you can find in the repo: [docker-compose.yml](docker-compos
Beyond this a "Production Deployment" is out-of-scope at this time for the Beyond this a "Production Deployment" is out-of-scope at this time for the
documentation being provided here. Please don't hesitate to file an documentation being provided here. Please don't hesitate to file an
[Issue](https://git.mills.io/prologic/tube/issues/new) however for ask for help [Issue](https://surdeus.su/serv/tube/issues/new) however for ask for help
or advice or contact the author directly! or advice or contact the author directly!
## Configuration ## Configuration
@ -271,7 +271,7 @@ and even fix tiny typos in documentation! Thank you and keep contributing!
You can find an [AUTHORS](AUTHORS) file where we keep a list of contributors You can find an [AUTHORS](AUTHORS) file where we keep a list of contributors
to the project. If you contribute a PR please consider adding your name there. to the project. If you contribute a PR please consider adding your name there.
There is also Github's own [Contributors](https://git.mills.io/prologic/tube/graphs/contributors) statistics. There is also Github's own [Contributors](https://surdeus.su/serv/tube/graphs/contributors) statistics.
[![](https://sourcerer.io/fame/prologic/prologic/tube/images/0)](https://sourcerer.io/fame/prologic/prologic/tube/links/0) [![](https://sourcerer.io/fame/prologic/prologic/tube/images/0)](https://sourcerer.io/fame/prologic/prologic/tube/links/0)
[![](https://sourcerer.io/fame/prologic/prologic/tube/images/1)](https://sourcerer.io/fame/prologic/prologic/tube/links/1) [![](https://sourcerer.io/fame/prologic/prologic/tube/images/1)](https://sourcerer.io/fame/prologic/prologic/tube/links/1)

View file

@ -9,7 +9,7 @@ an issue to let us know and to discuss the details.
## In Progress ## In Progress
- refactor [uploadHandler](https://git.mills.io/prologic/tube/src/commit/c0ca374a16a75acbf380b133dde6529d7f66bb2b/app/app.go#L226) - refactor [uploadHandler](https://surdeus.su/serv/tube/src/commit/c0ca374a16a75acbf380b133dde6529d7f66bb2b/app/app.go#L226)
## Prioritized ## Prioritized

View file

@ -36,7 +36,7 @@
{{template "content" .}} {{template "content" .}}
</main> </main>
<footer> <footer>
<p><a href="https://git.mills.io/prologic/tube">Tube</a> is CopyRight © 2020 <a href="https://git.mills.io/prologic">James Mills / prologic</a>. All Rights Reserved.</p> <p><a href="https://surdeus.su/serv/tube">Tube</a> is CopyRight © 2020 <a href="https://git.mills.io/prologic">James Mills / prologic</a>. All Rights Reserved.</p>
{{if .Config.Copyright.Content}}<p>{{ $config.Copyright.Content }}</p>{{end}} {{if .Config.Copyright.Content}}<p>{{ $config.Copyright.Content }}</p>{{end}}
</footer> </footer>
</body> </body>