diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c402e21..b71c045 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -64,7 +64,7 @@ jobs: GOOS: ${{ env.OS }} GOARCH: ${{ matrix.arch }} run: | - go build -ldflags "-X main.version=$(git describe --tags --abbrev=0)" -o fabric-${OS}-${{ matrix.arch }} . + go build -o fabric-${OS}-${{ matrix.arch }} . - name: Build binary on Windows if: matrix.os == 'windows-latest' @@ -72,7 +72,7 @@ jobs: GOOS: windows GOARCH: ${{ matrix.arch }} run: | - go build -ldflags "-X main.version=$(git describe --tags --abbrev=0)" -o fabric-windows-${{ matrix.arch }}.exe . + go build -o fabric-windows-${{ matrix.arch }}.exe . - name: Upload build artifact if: matrix.os != 'windows-latest' diff --git a/.github/workflows/update-version.yml b/.github/workflows/update-version-and-create-tag.yml similarity index 52% rename from .github/workflows/update-version.yml rename to .github/workflows/update-version-and-create-tag.yml index 4873e5b..3acf251 100644 --- a/.github/workflows/update-version.yml +++ b/.github/workflows/update-version-and-create-tag.yml @@ -1,11 +1,9 @@ -name: Update Version File +name: Update Version and Create Tag on: push: branches: - - main # Or whichever branch you want to monitor - tags: - - '*' # Trigger on any new tag + - main # Monitor the main branch permissions: contents: write # Ensure the workflow has write permissions @@ -28,32 +26,43 @@ jobs: - name: Get the latest tag id: get_latest_tag run: | - latest_tag=$(git describe --tags --abbrev=0) + latest_tag=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.0.0") echo "Latest tag is: $latest_tag" echo "::set-output name=tag::$latest_tag" - - name: Get the latest commit hash - id: get_commit_hash + - name: Increment minor version + id: increment_version run: | - commit_hash=$(git rev-parse --short HEAD) - echo "Commit hash is: $commit_hash" - echo "::set-output name=commit_hash::$commit_hash" + latest_tag=${{ steps.get_latest_tag.outputs.tag }} + IFS='.' read -r major minor patch <<<"${latest_tag#v}" + new_minor=$((minor + 1)) + new_tag="v${major}.${new_minor}.0" + echo "New tag is: $new_tag" + echo "::set-output name=new_tag::$new_tag" - name: Update version.go file run: | - latest_tag=${{ steps.get_latest_tag.outputs.tag }} - commit_hash=${{ steps.get_commit_hash.outputs.commit_hash }} + new_tag=${{ steps.increment_version.outputs.new_tag }} + commit_hash=$(git rev-parse --short HEAD) echo "package main" > version.go echo "" >> version.go - echo "var version = \"${latest_tag}-${commit_hash}\"" >> version.go + echo "var version = \"${new_tag}-${commit_hash}\"" >> version.go - name: Commit changes run: | git add version.go - git commit -m "Update version to ${{ steps.get_latest_tag.outputs.tag }} and commit ${{ steps.get_commit_hash.outputs.commit_hash }}" + git commit -m "Update version to ${{ steps.increment_version.outputs.new_tag }} and commit $commit_hash" - name: Push changes env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Use GITHUB_TOKEN to authenticate the push run: | - git push origin main # Or the relevant branch \ No newline at end of file + git push origin main # Push changes to the main branch + + - name: Create a new tag + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + new_tag=${{ steps.increment_version.outputs.new_tag }} + git tag $new_tag + git push origin $new_tag # Push the new tag diff --git a/.gitignore b/.gitignore index 0061344..10c44e2 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,7 @@ __pycache__/ # Distribution / packaging .Python +.idea build/ develop-eggs/ dist/ diff --git a/README.md b/README.md index c95cdc5..cf99f01 100644 --- a/README.md +++ b/README.md @@ -243,8 +243,8 @@ Application Options: -e, --seed= Seed to be used for LMM generation -w, --wipecontext= Wipe context -W, --wipesession= Wipe session + --readability Convert HTML input into a clean, readable view --dry-run Show what would be sent to the model without actually sending it - --readability Turn web page into a clean view --version Print current version Help Options: diff --git a/cli/cli.go b/cli/cli.go index f70a2d7..c31b38e 100644 --- a/cli/cli.go +++ b/cli/cli.go @@ -2,6 +2,7 @@ package cli import ( "fmt" + "github.com/danielmiessler/fabric/converter" "os" "path/filepath" "strconv" @@ -110,6 +111,14 @@ func Cli(version string) (message string, err error) { return } + if currentFlags.HtmlReadability { + if msg, cleanErr := converter.HtmlReadability(currentFlags.Message); cleanErr != nil { + fmt.Println("use original input, because can't apply html readability", err) + } else { + currentFlags.Message = msg + } + } + // if the interactive flag is set, run the interactive function // if currentFlags.Interactive { // interactive.Interactive() @@ -193,14 +202,6 @@ func Cli(version string) (message string, err error) { } } - if currentFlags.HtmlReadability { - if msg, err := core.HtmlReadability(currentFlags.Message); err != nil { - fmt.Println("use readability parser msg err:", err) - } else { - currentFlags.Message = msg - } - } - var chatter *core.Chatter if chatter, err = fabric.GetChatter(currentFlags.Model, currentFlags.Stream, currentFlags.DryRun); err != nil { return diff --git a/cli/flags.go b/cli/flags.go index 7e47af4..29c0580 100644 --- a/cli/flags.go +++ b/cli/flags.go @@ -46,8 +46,8 @@ type Flags struct { Seed int `short:"e" long:"seed" description:"Seed to be used for LMM generation"` WipeContext string `short:"w" long:"wipecontext" description:"Wipe context"` WipeSession string `short:"W" long:"wipesession" description:"Wipe session"` + HtmlReadability bool `long:"readability" description:"Convert HTML input into a clean, readable view"` DryRun bool `long:"dry-run" description:"Show what would be sent to the model without actually sending it"` - HtmlReadability bool `long:"readability" description:"Turn web page into a clean view"` Version bool `long:"version" description:"Print current version"` } diff --git a/converter/html_readability.go b/converter/html_readability.go new file mode 100644 index 0000000..debbe1a --- /dev/null +++ b/converter/html_readability.go @@ -0,0 +1,25 @@ +package converter + +import ( + "bytes" + "github.com/go-shiori/go-readability" +) + +// HtmlReadability Convert HTML input into a clean, readable view +// args: +// +// html (string): full data of web page +// +// return: +// +// viewContent (string): html main content +// err (error): parser error +func HtmlReadability(html string) (ret string, err error) { + buf := bytes.NewBufferString(html) + var article readability.Article + if article, err = readability.FromReader(buf, nil); err != nil { + return + } + ret = article.TextContent + return +} diff --git a/core/html_parser_test.go b/converter/html_readability_test.go similarity index 97% rename from core/html_parser_test.go rename to converter/html_readability_test.go index 361e5be..a0d6bfe 100644 --- a/core/html_parser_test.go +++ b/converter/html_readability_test.go @@ -1,4 +1,4 @@ -package core +package converter import ( "testing" diff --git a/core/html_parser.go b/core/html_parser.go deleted file mode 100644 index e2b8746..0000000 --- a/core/html_parser.go +++ /dev/null @@ -1,27 +0,0 @@ -package core - -import ( - "bytes" - "fmt" - "github.com/go-shiori/go-readability" -) - -// HtmlReadability Turn any web page into a clean view -// args: -// -// html (string): full data of web page -// -// return: -// -// viewContent (string): html main content -// err (error): parser error -func HtmlReadability(html string) (viewContent string, err error) { - buf := bytes.NewBufferString(html) - article, err := readability.FromReader(buf, nil) - if err != nil { - return "", err - } - fmt.Println("MAIN-CONTENT:", article.TextContent) - - return article.TextContent, nil -}