miniflux-archiver/cmd/archive.go

62 lines
1.8 KiB
Go

/*
Copyright © 2024 NAME HERE <EMAIL ADDRESS>
*/
package cmd
import (
"github.com/spf13/cobra"
"github.com/spf13/viper"
"git.alecodes.page/alecodes/miniflux-archiver/internal/app"
"git.alecodes.page/alecodes/miniflux-archiver/internal/miniflux"
"git.alecodes.page/alecodes/miniflux-archiver/internal/service"
)
var Services = []string{
string(service.ServiceLinkding),
}
var (
service_host string
service_user string
service_token string
)
// archiveCmd represents the archive command
var archiveCmd = &cobra.Command{
Use: "archive",
Short: "Archive the rss entries to an external service.",
Aliases: []string{"run"},
Args: cobra.MatchAll(cobra.ExactArgs(1), cobra.OnlyValidArgs),
ValidArgs: Services,
Run: func(cmd *cobra.Command, args []string) {
serviceOption := service.ServiceOption(args[0])
serviceConfig := service.ServiceConfig{
Service: serviceOption,
Host: viper.GetString("service_host"),
User: viper.GetString("service_user"),
Token: viper.GetString("service_token"),
}
minifluxConfig := miniflux.MinifluxConfig{
Host: viper.GetString("miniflux_host"),
Token: viper.GetString("miniflux_token"),
FeedId: viper.GetInt64("miniflux_feed_id"),
}
app.Archive(minifluxConfig, serviceConfig)
},
}
func init() {
rootCmd.AddCommand(archiveCmd)
archiveCmd.Flags().StringVar(&service_host, "service-host", "", "127.0.0.1")
archiveCmd.Flags().StringVar(&service_user, "service-user", "", "john.doe@mail.cl")
archiveCmd.Flags().StringVar(&service_token, "service-token", "", "XXX-XXX-XXX")
viper.BindPFlag("service_host", archiveCmd.Flags().Lookup("service-host"))
viper.BindPFlag("service_host", archiveCmd.Flags().Lookup("service-host"))
viper.BindPFlag("service_token", archiveCmd.Flags().Lookup("service-token"))
}