mirror of
https://github.com/jimeh/build-emacs-for-macos.git
synced 2026-02-19 13:06:38 +00:00
feat(plan): allow build plan to be output as YAML or JSON
This commit is contained in:
@@ -2,6 +2,7 @@ package plan
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"io"
|
||||
"os"
|
||||
|
||||
@@ -11,11 +12,11 @@ import (
|
||||
)
|
||||
|
||||
type Plan struct {
|
||||
Build *Build `yaml:"build,omitempty"`
|
||||
Source *source.Source `yaml:"source,omitempty"`
|
||||
OS *osinfo.OSInfo `yaml:"os,omitempty"`
|
||||
Release *Release `yaml:"release,omitempty"`
|
||||
Output *Output `yaml:"output,omitempty"`
|
||||
Build *Build `yaml:"build,omitempty" json:"build,omitempty"`
|
||||
Source *source.Source `yaml:"source,omitempty" json:"source,omitempty"`
|
||||
OS *osinfo.OSInfo `yaml:"os,omitempty" json:"os,omitempty"`
|
||||
Release *Release `yaml:"release,omitempty" json:"release,omitempty"`
|
||||
Output *Output `yaml:"output,omitempty" json:"output,omitempty"`
|
||||
}
|
||||
|
||||
// Load attempts to loads a plan YAML from given filename.
|
||||
@@ -53,18 +54,37 @@ func (s *Plan) YAML() (string, error) {
|
||||
return buf.String(), nil
|
||||
}
|
||||
|
||||
// WriteJSON writes plan in JSON format to given io.Writer.
|
||||
func (s *Plan) WriteJSON(w io.Writer) error {
|
||||
enc := json.NewEncoder(w)
|
||||
enc.SetIndent("", " ")
|
||||
|
||||
return enc.Encode(s)
|
||||
}
|
||||
|
||||
// JSON returns plan in JSON format.
|
||||
func (s *Plan) JSON() (string, error) {
|
||||
var buf bytes.Buffer
|
||||
err := s.WriteJSON(&buf)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
return buf.String(), nil
|
||||
}
|
||||
|
||||
type Build struct {
|
||||
Name string `yaml:"name,omitempty"`
|
||||
Name string `yaml:"name,omitempty" json:"name,omitempty"`
|
||||
}
|
||||
|
||||
type Release struct {
|
||||
Name string `yaml:"name"`
|
||||
Title string `yaml:"title,omitempty"`
|
||||
Draft bool `yaml:"draft,omitempty"`
|
||||
Prerelease bool `yaml:"prerelease,omitempty"`
|
||||
Name string `yaml:"name" json:"name"`
|
||||
Title string `yaml:"title,omitempty" json:"title,omitempty"`
|
||||
Draft bool `yaml:"draft,omitempty" json:"draft,omitempty"`
|
||||
Prerelease bool `yaml:"prerelease,omitempty" json:"prerelease,omitempty"`
|
||||
}
|
||||
|
||||
type Output struct {
|
||||
Directory string `yaml:"directory,omitempty"`
|
||||
DiskImage string `yaml:"disk_image,omitempty"`
|
||||
Directory string `yaml:"directory,omitempty" json:"directory,omitempty"`
|
||||
DiskImage string `yaml:"disk_image,omitempty" json:"disk_image,omitempty"`
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user