Skip to content
This repository was archived by the owner on Jan 16, 2021. It is now read-only.

Commit b7f3c2b

Browse files
committed
Merge pull request #28 from pavanka/fix_releases
fix releases cmd unmarshaling bug
2 parents a3deba6 + c7dbfc9 commit b7f3c2b

File tree

3 files changed

+52
-56
lines changed

3 files changed

+52
-56
lines changed

deploy_cmd.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -309,8 +309,7 @@ type deployInfo struct {
309309
ParseVersion string `json:"parseVersion,omitempty"`
310310
Checksums deployFileData `json:"checksums,omitempty"`
311311
Versions deployFileData `json:"userFiles,omitempty"`
312-
Timestamp string `json:"timestamp,omitempty"` // only populated by get from releases
313-
Warning string `json:"warning,omitempty"` // only populated by post to deploy
312+
Warning string `json:"warning,omitempty"` // only populated by post to deploy
314313
}
315314

316315
func (d *deployCmd) makeNewRelease(info *deployInfo, e *env) (deployInfo, error) {

releases_cmd.go

Lines changed: 33 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package main
22

33
import (
4+
"encoding/json"
45
"fmt"
56
"net/url"
67
"sort"
@@ -11,12 +12,24 @@ import (
1112
"github.com/spf13/cobra"
1213
)
1314

15+
type userFiles struct {
16+
Cloud map[string]interface{} `json:"cloud"`
17+
Public map[string]interface{} `json:"public"`
18+
}
19+
20+
type releasesResponse struct {
21+
Version string `json:"version"`
22+
Description string `json:"description"`
23+
Timestamp string `json:"timestamp"`
24+
UserFiles string `json:"userFiles"`
25+
}
26+
1427
type releasesCmd struct {
1528
version string
1629
}
1730

1831
func (r *releasesCmd) printFileNames(
19-
fileVersions map[string]string,
32+
fileVersions map[string]interface{},
2033
e *env) {
2134
var files []string
2235
for name := range fileVersions {
@@ -26,32 +39,37 @@ func (r *releasesCmd) printFileNames(
2639
fmt.Fprintln(e.Out, strings.Join(files, "\n"))
2740
}
2841

29-
func (r *releasesCmd) printFiles(
30-
version string,
31-
releases []deployInfo,
42+
func (r *releasesCmd) printFiles(version string,
43+
releases []releasesResponse,
3244
e *env) error {
33-
var files deployFileData
45+
var files string
3446
for _, release := range releases {
35-
if release.ParseVersion == version {
36-
files = release.Versions
47+
if release.Version == version {
48+
files = release.UserFiles
3749
break
3850
}
3951
}
40-
if len(files.Cloud) == 0 && len(files.Public) == 0 {
52+
if files == "" {
4153
return stackerr.Newf(`Unable to fetch files for release version: %s
4254
Note that you can list files for all releases shown in "parse releases"`,
4355
version)
4456
}
45-
if len(files.Cloud) != 0 {
57+
var versionFileNames userFiles
58+
if err := json.NewDecoder(
59+
strings.NewReader(files),
60+
).Decode(&versionFileNames); err != nil {
61+
return stackerr.Wrap(err)
62+
}
63+
if len(versionFileNames.Cloud) != 0 {
4664
fmt.Fprintf(e.Out, "Deployed cloud code files:\n")
47-
r.printFileNames(files.Cloud, e)
65+
r.printFileNames(versionFileNames.Cloud, e)
4866
}
49-
if len(files.Cloud) != 0 && len(files.Public) != 0 {
67+
if len(versionFileNames.Cloud) != 0 && len(versionFileNames.Public) != 0 {
5068
fmt.Fprintln(e.Out)
5169
}
52-
if len(files.Public) != 0 {
70+
if len(versionFileNames.Public) != 0 {
5371
fmt.Fprintf(e.Out, "Deployed public hosting files:\n")
54-
r.printFileNames(files.Public, e)
72+
r.printFileNames(versionFileNames.Public, e)
5573
}
5674
return nil
5775
}
@@ -60,7 +78,7 @@ func (r *releasesCmd) run(e *env, c *context) error {
6078
u := &url.URL{
6179
Path: "releases",
6280
}
63-
var releasesList []deployInfo
81+
var releasesList []releasesResponse
6482
if _, err := e.ParseAPIClient.Get(u, &releasesList); err != nil {
6583
return stackerr.Wrap(err)
6684
}
@@ -77,7 +95,7 @@ func (r *releasesCmd) run(e *env, c *context) error {
7795
if release.Description != "" {
7896
description = release.Description
7997
}
80-
fmt.Fprintf(w, "%s\t%s\t%s\n", release.ParseVersion, description, release.Timestamp)
98+
fmt.Fprintf(w, "%s\t%s\t%s\n", release.Version, description, release.Timestamp)
8199
}
82100
w.Flush()
83101
return nil

releases_cmd_test.go

Lines changed: 18 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ func newReleasesCmdHarness(t testing.TB) (*Harness, *releasesCmd) {
2222
func TestReleasesCmd(t *testing.T) {
2323
h, r := newReleasesCmdHarness(t)
2424
defer h.Stop()
25-
rows := []deployInfo{
26-
{ParseVersion: "v1", Description: "version 1", Timestamp: "time 1"},
27-
{ParseVersion: "v2", Description: "version 2", Timestamp: "time 2"},
25+
rows := []releasesResponse{
26+
{Version: "v1", Description: "version 1", Timestamp: "time 1"},
27+
{Version: "v2", Description: "version 2", Timestamp: "time 2"},
2828
}
2929
ht := transportFunc(func(r *http.Request) (*http.Response, error) {
3030
ensure.DeepEqual(t, r.URL.Path, "/1/releases")
@@ -57,44 +57,23 @@ func TestReleasesCmdError(t *testing.T) {
5757

5858
func TestReleasesCmdPrintVersion(t *testing.T) {
5959
h, r := newReleasesCmdHarness(t)
60-
releases := []deployInfo{
61-
{
62-
ParseVersion: "v1",
63-
Versions: deployFileData{
64-
Cloud: map[string]string{
65-
"main.js": "1",
66-
"app.js": "1",
67-
"views/index.js": "1",
68-
},
69-
},
60+
releases := []releasesResponse{
61+
{Version: "v1",
62+
UserFiles: `{
63+
"cloud": {"main.js": "1", "app.js": "1", "views/index.js": "1"}
64+
}`,
7065
},
71-
{
72-
ParseVersion: "v2",
73-
Versions: deployFileData{
74-
Cloud: map[string]string{
75-
"main.js": "2",
76-
"app.js": "2",
77-
"views/docs.js": "1",
78-
},
79-
Public: map[string]string{
80-
"index.html": "2",
81-
"docs.html": "2",
82-
},
83-
},
66+
{Version: "v2",
67+
UserFiles: `{
68+
"cloud": {"main.js": "2", "app.js": "2", "views/docs.js": "1"},
69+
"public": {"index.html": "2", "docs.html": "2"}
70+
}`,
8471
},
85-
{
86-
ParseVersion: "v2",
87-
Versions: deployFileData{
88-
Cloud: map[string]string{
89-
"v2_main.js": "2",
90-
"v2_app.js": "2",
91-
"views/v2_docs.js": "2",
92-
},
93-
Public: map[string]string{
94-
"v2_index.html": "2",
95-
"v2_docs.html": "2",
96-
},
97-
},
72+
{Version: "v2",
73+
UserFiles: `{
74+
"cloud": {"v2_main.js": "2", "v2_app.js": "2", "views/v2_docs.js": "2"},
75+
"public": {"v2_index.html": "2", "v2_docs.html": "2"}
76+
}`,
9877
},
9978
}
10079
err := r.printFiles("", releases, h.env)

0 commit comments

Comments
 (0)