Separated the repository initialization into a separate sub-command
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
This commit is contained in:
parent
076947ebf9
commit
4d77a0e2bc
22
adept.go
22
adept.go
@ -1,26 +1,10 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/spf13/viper"
|
"git.metaunix.net/BitGoblin/adept/cmd"
|
||||||
|
|
||||||
"git.metaunix.net/BitGoblin/adept/config"
|
|
||||||
"git.metaunix.net/BitGoblin/adept/transcoder"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// start the app - that's where all the good stuff happens
|
||||||
func main() {
|
func main() {
|
||||||
// load configuration via Viper
|
cmd.Execute()
|
||||||
config.LoadConfig()
|
|
||||||
|
|
||||||
// configure our app logging
|
|
||||||
logHandle := config.InitLogging()
|
|
||||||
if logHandle != nil {
|
|
||||||
defer logHandle.Close()
|
|
||||||
}
|
|
||||||
|
|
||||||
// initialize the video repository
|
|
||||||
r := transcoder.NewRepository(viper.GetString("transcoder.repository"))
|
|
||||||
|
|
||||||
// create transcoder object and start the main loop
|
|
||||||
t := transcoder.NewTranscoder(*r)
|
|
||||||
t.Start()
|
|
||||||
}
|
}
|
||||||
|
45
cmd/root.go
Normal file
45
cmd/root.go
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
package cmd
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"github.com/spf13/cobra"
|
||||||
|
"github.com/spf13/viper"
|
||||||
|
|
||||||
|
"git.metaunix.net/BitGoblin/adept/config"
|
||||||
|
"git.metaunix.net/BitGoblin/adept/transcoder"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ./adept - this is the primary command and is how the service is intended to be launched
|
||||||
|
var rootCmd = &cobra.Command{
|
||||||
|
Use: "adept",
|
||||||
|
Short: "Adept is a video transcoder service",
|
||||||
|
Long: `An automated video transcoder service that archives ingested footage.
|
||||||
|
https://git.metaunix.net/BitGoblin/adept`,
|
||||||
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
|
// load configuration via Viper
|
||||||
|
config.LoadConfig()
|
||||||
|
|
||||||
|
// configure our app logging
|
||||||
|
logHandle := config.InitLogging()
|
||||||
|
if logHandle != nil {
|
||||||
|
defer logHandle.Close()
|
||||||
|
}
|
||||||
|
|
||||||
|
// initialize the video repository
|
||||||
|
r := transcoder.NewRepository(viper.GetString("transcoder.repository"))
|
||||||
|
|
||||||
|
// create transcoder object and start the main loop
|
||||||
|
t := transcoder.NewTranscoder(*r)
|
||||||
|
t.Start()
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
// this is the main function to launch Cobra
|
||||||
|
func Execute() {
|
||||||
|
if err := rootCmd.Execute(); err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
}
|
34
cmd/setup.go
Normal file
34
cmd/setup.go
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
package cmd
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/spf13/cobra"
|
||||||
|
"github.com/spf13/viper"
|
||||||
|
|
||||||
|
"git.metaunix.net/BitGoblin/adept/config"
|
||||||
|
"git.metaunix.net/BitGoblin/adept/transcoder"
|
||||||
|
)
|
||||||
|
|
||||||
|
// initializes the sub-command
|
||||||
|
func init() {
|
||||||
|
rootCmd.AddCommand(setupCmd)
|
||||||
|
}
|
||||||
|
|
||||||
|
var setupCmd = &cobra.Command{
|
||||||
|
Use: "setup",
|
||||||
|
Short: "Initialize the video directories.",
|
||||||
|
Long: `Adept can't run if it doesn't have a place to ingest/transcode files from.`,
|
||||||
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
|
// load configuration via Viper
|
||||||
|
config.LoadConfig()
|
||||||
|
|
||||||
|
// configure our app logging
|
||||||
|
logHandle := config.InitLogging()
|
||||||
|
if logHandle != nil {
|
||||||
|
defer logHandle.Close()
|
||||||
|
}
|
||||||
|
|
||||||
|
// initialize the video repository
|
||||||
|
r := transcoder.NewRepository(viper.GetString("transcoder.repository"))
|
||||||
|
r.Setup()
|
||||||
|
},
|
||||||
|
}
|
1
go.mod
1
go.mod
@ -11,6 +11,7 @@ require (
|
|||||||
github.com/pelletier/go-toml/v2 v2.0.1 // indirect
|
github.com/pelletier/go-toml/v2 v2.0.1 // indirect
|
||||||
github.com/spf13/afero v1.8.2 // indirect
|
github.com/spf13/afero v1.8.2 // indirect
|
||||||
github.com/spf13/cast v1.5.0 // indirect
|
github.com/spf13/cast v1.5.0 // indirect
|
||||||
|
github.com/spf13/cobra v1.5.0 // indirect
|
||||||
github.com/spf13/jwalterweatherman v1.1.0 // indirect
|
github.com/spf13/jwalterweatherman v1.1.0 // indirect
|
||||||
github.com/spf13/pflag v1.0.5 // indirect
|
github.com/spf13/pflag v1.0.5 // indirect
|
||||||
github.com/spf13/viper v1.12.0
|
github.com/spf13/viper v1.12.0
|
||||||
|
6
go.sum
6
go.sum
@ -93,6 +93,7 @@ github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWH
|
|||||||
github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
|
github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
|
||||||
github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
|
github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
|
||||||
github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
|
github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
|
||||||
|
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
|
||||||
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/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 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
@ -239,6 +240,8 @@ github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpT
|
|||||||
github.com/hashicorp/serf v0.9.7/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4=
|
github.com/hashicorp/serf v0.9.7/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4=
|
||||||
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
||||||
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
||||||
|
github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM=
|
||||||
|
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
|
||||||
github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
|
github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
|
||||||
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
|
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
|
||||||
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||||
@ -327,6 +330,7 @@ github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1
|
|||||||
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
|
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
|
||||||
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||||
github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
|
github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
|
||||||
|
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||||
github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
|
github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
|
||||||
github.com/sagikazarmark/crypt v0.6.0/go.mod h1:U8+INwJo3nBv1m6A/8OBXAq7Jnpspk5AxSgDyEQcea8=
|
github.com/sagikazarmark/crypt v0.6.0/go.mod h1:U8+INwJo3nBv1m6A/8OBXAq7Jnpspk5AxSgDyEQcea8=
|
||||||
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
|
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
|
||||||
@ -338,6 +342,8 @@ github.com/spf13/afero v1.8.2 h1:xehSyVa0YnHWsJ49JFljMpg1HX19V6NDZ1fkm1Xznbo=
|
|||||||
github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo=
|
github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo=
|
||||||
github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w=
|
github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w=
|
||||||
github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU=
|
github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU=
|
||||||
|
github.com/spf13/cobra v1.5.0 h1:X+jTBEBqF0bHN+9cSMgmfuvv2VHJ9ezmFNf9Y/XstYU=
|
||||||
|
github.com/spf13/cobra v1.5.0/go.mod h1:dWXEIy2H428czQCjInthrTRUg7yKbok+2Qi/yBIJoUM=
|
||||||
github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=
|
github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=
|
||||||
github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
|
github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
|
||||||
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
|
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
|
||||||
|
@ -14,6 +14,7 @@ type Repository struct {
|
|||||||
outputPath string
|
outputPath string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Repository struct constructor
|
||||||
func NewRepository(path string) *Repository {
|
func NewRepository(path string) *Repository {
|
||||||
r := new(Repository)
|
r := new(Repository)
|
||||||
r.basePath = path
|
r.basePath = path
|
||||||
@ -21,13 +22,6 @@ func NewRepository(path string) *Repository {
|
|||||||
r.archivePath = filepath.Join(path, "archive")
|
r.archivePath = filepath.Join(path, "archive")
|
||||||
r.outputPath = filepath.Join(path, "output")
|
r.outputPath = filepath.Join(path, "output")
|
||||||
|
|
||||||
// make sure repository base directory exists
|
|
||||||
create_repo_dir(r.basePath)
|
|
||||||
// make sure the folder structure is setup
|
|
||||||
create_repo_dir(r.ingestPath)
|
|
||||||
create_repo_dir(r.archivePath)
|
|
||||||
create_repo_dir(r.archivePath)
|
|
||||||
|
|
||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -39,6 +33,16 @@ func (r *Repository) GetOutputPath() string {
|
|||||||
return r.outputPath
|
return r.outputPath
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Initializes the video repository by ensuring the directories are available
|
||||||
|
func (r *Repository) Setup() {
|
||||||
|
// make sure repository base directory exists
|
||||||
|
create_repo_dir(r.basePath)
|
||||||
|
// make sure the folder structure is setup
|
||||||
|
create_repo_dir(r.ingestPath)
|
||||||
|
create_repo_dir(r.archivePath)
|
||||||
|
create_repo_dir(r.archivePath)
|
||||||
|
}
|
||||||
|
|
||||||
func (r *Repository) SearchIngest() []os.FileInfo {
|
func (r *Repository) SearchIngest() []os.FileInfo {
|
||||||
log.Printf("Searching ingest directory for files to transcode...")
|
log.Printf("Searching ingest directory for files to transcode...")
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user