diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..aa60754 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,28 @@ +name: release + +on: + push: + tags: + - "v*" + +permissions: + contents: write + +jobs: + goreleaser: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Go + uses: actions/setup-go@v4 + + - name: Run GoReleaser + uses: goreleaser/goreleaser-action@v5 + with: + distribution: goreleaser + version: latest + args: release --clean + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 1aa201c..f1eaf38 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -1,3 +1,4 @@ +version: 2 project_name: bilinovel-downloader before: hooks: @@ -12,16 +13,15 @@ builds: goarch: - amd64 - arm64 - - arm - "386" ldflags: - -s -w -X bilinovel-downloader/cmd.Version={{ .Version }} flags: - -trimpath archives: - - format: tar.gz + - formats: ["tar.gz"] format_overrides: - - format: zip + - formats: ["zip"] goos: windows wrap_in_directory: true release: @@ -29,3 +29,17 @@ release: upx: - enabled: true compress: best + +nfpms: + - id: bilinovel-downloader + homepage: https://github.com/bestnite/bilinovel-downloader + maintainer: Nite + license: "MIT" + formats: + - apk + - deb + - rpm + - termux.deb + - archlinux + provides: + - bilinovel-downloader diff --git a/cmd/download.go b/cmd/download.go index 3d39c79..31e31a1 100644 --- a/cmd/download.go +++ b/cmd/download.go @@ -8,10 +8,12 @@ import ( "bilinovel-downloader/text" "encoding/json" "fmt" + "io" "log" "os" "path/filepath" + "github.com/playwright-community/playwright-go" "github.com/spf13/cobra" ) @@ -20,7 +22,16 @@ var downloadCmd = &cobra.Command{ Short: "Download a novel or volume", Long: "Download a novel or volume", Run: func(cmd *cobra.Command, args []string) { - err := runDownloadNovel() + log.Println("Installing playwright") + err := playwright.Install(&playwright.RunOptions{ + Browsers: []string{"chromium"}, + Stdout: io.Discard, + }) + if err != nil { + log.Panicf("failed to install playwright") + } + + err = runDownloadNovel() if err != nil { log.Printf("failed to download novel: %v", err) } diff --git a/cmd/root.go b/cmd/root.go index ebef5cc..8d5506e 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -4,4 +4,6 @@ import ( "github.com/spf13/cobra" ) -var RootCmd = &cobra.Command{} +var RootCmd = &cobra.Command{ + Use: "bilinovel-downloader", +} diff --git a/main.go b/main.go index cb02fe7..f628dfe 100644 --- a/main.go +++ b/main.go @@ -2,20 +2,8 @@ package main import ( "bilinovel-downloader/cmd" - "io" - "log" - - "github.com/playwright-community/playwright-go" ) func main() { - log.Println("Installing playwright") - err := playwright.Install(&playwright.RunOptions{ - Browsers: []string{"chromium"}, - Stdout: io.Discard, - }) - if err != nil { - log.Panicf("failed to install playwright") - } _ = cmd.RootCmd.Execute() }