-
Notifications
You must be signed in to change notification settings - Fork 0
/
readme.go
137 lines (118 loc) · 2.45 KB
/
readme.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
package espanso
import (
"fmt"
"os"
"text/template"
)
// Readme represents an espanso readme.
type Readme struct {
author string
longDesc string
name string
repo string
shortDesc string
title string
version string
}
// NewReadme is generating a new readme.
func NewReadme() Readme {
return Readme{}
}
// SetAuthor sets the author.
func (r *Readme) SetAuthor(a string) *Readme {
r.author = a
return r
}
// SetLongDesc sets the long description. Markdown is supported.
func (r *Readme) SetLongDesc(ld string) *Readme {
r.longDesc = ld
return r
}
// SetName sets the name.
func (r *Readme) SetName(n string) *Readme {
r.name = n
return r
}
// SetRepo sets the repo.
func (r *Readme) SetRepo(repo string) *Readme {
r.repo = repo
return r
}
// SetShortDesc sets the short description.
func (r *Readme) SetShortDesc(sd string) *Readme {
r.shortDesc = sd
return r
}
// SetTitle sets the title.
func (r *Readme) SetTitle(t string) *Readme {
r.title = t
return r
}
// SetVersion sets the version.
func (r *Readme) SetVersion(v string) *Readme {
r.version = v
return r
}
// Author returns the author.
func (r *Readme) Author() string {
return r.author
}
// LongDesc returns the long description.
func (r *Readme) LongDesc() string {
return r.longDesc
}
// Name returns the name.
func (r *Readme) Name() string {
return r.name
}
// Repo returns the repo.
func (r *Readme) Repo() string {
return r.repo
}
// ShortDesc returns the short description.
func (r *Readme) ShortDesc() string {
return r.shortDesc
}
// Title returns the title.
func (r *Readme) Title() string {
return r.title
}
// Version returns the version.
func (r *Readme) Version() string {
return r.version
}
const readmeTemplate = `---
package_name: "{{ .Name }}"
package_title: "{{ .Title }}"
package_desc: "{{ .ShortDesc }}"
package_version: "{{ .Version }}"
package_author: "{{ .Author }}"
package_repo: "{{ .Repo }}"
---
{{ .LongDesc }}`
// Write is writing the generated espanso package.
func (r *Readme) Write(d string) error {
if _, err := os.Stat(d); os.IsNotExist(err) {
if err := os.Mkdir(d, 0644); err != nil {
return err
}
}
path := fmt.Sprintf("%s/README.md", d)
f, err := os.Create(path)
if err != nil {
return err
}
defer f.Close()
t := template.New("readmeTemplate")
t, err = t.Parse(readmeTemplate)
if err != nil {
return err
}
if err := t.Execute(f, r); err != nil {
return err
}
if err := f.Sync(); err != nil {
return err
}
return nil
}