Browse Source

Document ConvertImages option

master
Trevor Slocum 2 months ago
parent
commit
6c7b8ec1d3
  1. 21
      .gitlab-ci.yml
  2. 4
      CHANGELOG
  3. 2
      README.md
  4. 2
      go.mod
  5. 6
      go.sum
  6. 11
      main.go
  7. 64
      pkg/gmitohtml/config.go
  8. 4
      pkg/gmitohtml/convert.go

21
.gitlab-ci.yml

@ -1,21 +0,0 @@
image: golang:latest
stages:
- validate
- build
fmt:
stage: validate
script:
- gofmt -l -s -e .
- exit $(gofmt -l -s -e . | wc -l)
vet:
stage: validate
script:
- go vet -composites=false ./...
test:
stage: validate
script:
- go test -race -v ./...

4
CHANGELOG

@ -1,5 +1,5 @@
1.0.3:
- Migrate to code.rocketnine.space
1.0.4:
- Add option ConvertImages (thanks to @f)
1.0.3:
- Add hostname option

2
README.md

@ -1,5 +1,5 @@
# gmitohtml
[![GoDoc](https://code.rocketnine.space/tslocum/godoc-static/-/raw/master/badge.svg)](https://docs.rocketnine.space/code.rocketnine.space/tslocum/gmitohtml/pkg/gmitohtml)
[![GoDoc](https://code.rocketnine.space/tslocum/godoc-static/raw/branch/master/badge.svg)](https://docs.rocketnine.space/code.rocketnine.space/tslocum/gmitohtml/pkg/gmitohtml)
[![Donate](https://img.shields.io/liberapay/receives/rocketnine.space.svg?logo=liberapay)](https://liberapay.com/rocketnine.space)
[Gemini](https://gemini.circumlunar.space) to [HTML](https://en.wikipedia.org/wiki/HTML)

2
go.mod

@ -2,4 +2,4 @@ module code.rocketnine.space/tslocum/gmitohtml
go 1.15
require gopkg.in/yaml.v3 v3.0.0-20210105161348-2e78108cf5f8
require code.rocketnine.space/tslocum/ez v0.0.0-20210506054357-569018bd037a

6
go.sum

@ -1,4 +1,6 @@
code.rocketnine.space/tslocum/ez v0.0.0-20210506054357-569018bd037a h1:Ug5hgK5sM7bdK1gEl/pNLYTtBpFUxCvSCGYkEbUqdmw=
code.rocketnine.space/tslocum/ez v0.0.0-20210506054357-569018bd037a/go.mod h1:SQrM+bQ4eZdyAVTxuF2BNnyAnojHP6Kcmm2vMszoFWw=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20210105161348-2e78108cf5f8 h1:tH9C0MON9YI3/KuD+u5+tQrQQ8px0MrcJ/avzeALw7o=
gopkg.in/yaml.v3 v3.0.0-20210105161348-2e78108cf5f8/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=

11
main.go

@ -10,6 +10,7 @@ import (
"os/exec"
"runtime"
"code.rocketnine.space/tslocum/ez"
"code.rocketnine.space/tslocum/gmitohtml/pkg/gmitohtml"
)
@ -46,8 +47,10 @@ func main() {
// TODO option to include response header in page
flag.Parse()
defaultConfig := gmitohtml.DefaultConfigPath()
if configFile == "" {
defaultConfig, err := ez.DefaultConfigPath("gmitohtml")
if err != nil {
log.Fatal(err)
} else if configFile == "" {
configFile = defaultConfig
}
@ -58,7 +61,7 @@ func main() {
}
if configExists || configFile != defaultConfig {
err := gmitohtml.ReadConfig(configFile)
err := ez.Deserialize(gmitohtml.Config, configFile)
if err != nil {
log.Fatalf("failed to read configuration file at %s: %v\nSee CONFIGURATION.md for information on configuring gmitohtml", configFile, err)
}
@ -90,7 +93,7 @@ func main() {
gmitohtml.SetOnBookmarksChanged(func() {
gmitohtml.Config.Bookmarks = gmitohtml.GetBookmarks()
err := gmitohtml.SaveConfig(configFile)
err := ez.Serialize(gmitohtml.Config, configFile)
if err != nil {
log.Fatal(err)
}

64
pkg/gmitohtml/config.go

@ -2,80 +2,26 @@ package gmitohtml
import (
"crypto/tls"
"errors"
"fmt"
"io/ioutil"
"os"
"path"
"gopkg.in/yaml.v3"
)
type certConfig struct {
type CertConfig struct {
Cert string
Key string
cert tls.Certificate
}
type appConfig struct {
type AppConfig struct {
Bookmarks map[string]string
// Convert image links to images instead of normal links
ConvertImages bool
Certs map[string]*certConfig
Certs map[string]*CertConfig
}
var Config = &appConfig{
var Config = &AppConfig{
Bookmarks: make(map[string]string),
ConvertImages: false,
Certs: make(map[string]*certConfig),
}
func DefaultConfigPath() string {
homedir, err := os.UserHomeDir()
if err == nil && homedir != "" {
return path.Join(homedir, ".config", "gmitohtml", "config.yaml")
}
return ""
}
func ReadConfig(configPath string) error {
if configPath == "" {
return errors.New("file unspecified")
}
configData, err := ioutil.ReadFile(configPath)
if err != nil {
return err
}
var newConfig *appConfig
err = yaml.Unmarshal(configData, &newConfig)
if err != nil {
return err
}
Config = newConfig
return nil
}
func SaveConfig(configPath string) error {
Config.Bookmarks = GetBookmarks()
out, err := yaml.Marshal(Config)
if err != nil {
return fmt.Errorf("failed to marshal configuration: %s", err)
}
os.MkdirAll(path.Dir(configPath), 0755) // Ignore error
err = ioutil.WriteFile(configPath, out, 0644)
if err != nil {
return fmt.Errorf("failed to save configuration to %s: %s", configPath, err)
}
return nil
Certs: make(map[string]*CertConfig),
}

4
pkg/gmitohtml/convert.go

@ -142,9 +142,9 @@ func Convert(page []byte, u string) []byte {
// If link ends with gif/png/jpg, add a image instead of a link
if isImage && Config.ConvertImages {
result = append(result, []byte("<img src=\"" + uri + "\" alt=\"" + title + "\">")...)
result = append(result, []byte("<img src=\""+uri+"\" alt=\""+title+"\">")...)
} else {
result = append(result, []byte("<a href=\"" + uri + "\">" + title + "</a><br>")...)
result = append(result, []byte("<a href=\""+uri+"\">"+title+"</a><br>")...)
}
continue

Loading…
Cancel
Save