Skip to content
This repository was archived by the owner on Jan 16, 2021. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions deploy_cmd.go
Original file line number Diff line number Diff line change
Expand Up @@ -309,8 +309,7 @@ type deployInfo struct {
ParseVersion string `json:"parseVersion,omitempty"`
Checksums deployFileData `json:"checksums,omitempty"`
Versions deployFileData `json:"userFiles,omitempty"`
Timestamp string `json:"timestamp,omitempty"` // only populated by get from releases
Warning string `json:"warning,omitempty"` // only populated by post to deploy
Warning string `json:"warning,omitempty"` // only populated by post to deploy
}

func (d *deployCmd) makeNewRelease(info *deployInfo, e *env) (deployInfo, error) {
Expand Down
48 changes: 33 additions & 15 deletions releases_cmd.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package main

import (
"encoding/json"
"fmt"
"net/url"
"sort"
Expand All @@ -11,12 +12,24 @@ import (
"github.com/spf13/cobra"
)

type userFiles struct {
Cloud map[string]interface{} `json:"cloud"`
Public map[string]interface{} `json:"public"`
}

type releasesResponse struct {
Version string `json:"version"`
Description string `json:"description"`
Timestamp string `json:"timestamp"`
UserFiles string `json:"userFiles"`
}

type releasesCmd struct {
version string
}

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

func (r *releasesCmd) printFiles(
version string,
releases []deployInfo,
func (r *releasesCmd) printFiles(version string,
releases []releasesResponse,
e *env) error {
var files deployFileData
var files string
for _, release := range releases {
if release.ParseVersion == version {
files = release.Versions
if release.Version == version {
files = release.UserFiles
break
}
}
if len(files.Cloud) == 0 && len(files.Public) == 0 {
if files == "" {
return stackerr.Newf(`Unable to fetch files for release version: %s
Note that you can list files for all releases shown in "parse releases"`,
version)
}
if len(files.Cloud) != 0 {
var versionFileNames userFiles
if err := json.NewDecoder(
strings.NewReader(files),
).Decode(&versionFileNames); err != nil {
return stackerr.Wrap(err)
}
if len(versionFileNames.Cloud) != 0 {
fmt.Fprintf(e.Out, "Deployed cloud code files:\n")
r.printFileNames(files.Cloud, e)
r.printFileNames(versionFileNames.Cloud, e)
}
if len(files.Cloud) != 0 && len(files.Public) != 0 {
if len(versionFileNames.Cloud) != 0 && len(versionFileNames.Public) != 0 {
fmt.Fprintln(e.Out)
}
if len(files.Public) != 0 {
if len(versionFileNames.Public) != 0 {
fmt.Fprintf(e.Out, "Deployed public hosting files:\n")
r.printFileNames(files.Public, e)
r.printFileNames(versionFileNames.Public, e)
}
return nil
}
Expand All @@ -60,7 +78,7 @@ func (r *releasesCmd) run(e *env, c *context) error {
u := &url.URL{
Path: "releases",
}
var releasesList []deployInfo
var releasesList []releasesResponse
if _, err := e.ParseAPIClient.Get(u, &releasesList); err != nil {
return stackerr.Wrap(err)
}
Expand All @@ -77,7 +95,7 @@ func (r *releasesCmd) run(e *env, c *context) error {
if release.Description != "" {
description = release.Description
}
fmt.Fprintf(w, "%s\t%s\t%s\n", release.ParseVersion, description, release.Timestamp)
fmt.Fprintf(w, "%s\t%s\t%s\n", release.Version, description, release.Timestamp)
}
w.Flush()
return nil
Expand Down
57 changes: 18 additions & 39 deletions releases_cmd_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ func newReleasesCmdHarness(t testing.TB) (*Harness, *releasesCmd) {
func TestReleasesCmd(t *testing.T) {
h, r := newReleasesCmdHarness(t)
defer h.Stop()
rows := []deployInfo{
{ParseVersion: "v1", Description: "version 1", Timestamp: "time 1"},
{ParseVersion: "v2", Description: "version 2", Timestamp: "time 2"},
rows := []releasesResponse{
{Version: "v1", Description: "version 1", Timestamp: "time 1"},
{Version: "v2", Description: "version 2", Timestamp: "time 2"},
}
ht := transportFunc(func(r *http.Request) (*http.Response, error) {
ensure.DeepEqual(t, r.URL.Path, "/1/releases")
Expand Down Expand Up @@ -57,44 +57,23 @@ func TestReleasesCmdError(t *testing.T) {

func TestReleasesCmdPrintVersion(t *testing.T) {
h, r := newReleasesCmdHarness(t)
releases := []deployInfo{
{
ParseVersion: "v1",
Versions: deployFileData{
Cloud: map[string]string{
"main.js": "1",
"app.js": "1",
"views/index.js": "1",
},
},
releases := []releasesResponse{
{Version: "v1",
UserFiles: `{
"cloud": {"main.js": "1", "app.js": "1", "views/index.js": "1"}
}`,
},
{
ParseVersion: "v2",
Versions: deployFileData{
Cloud: map[string]string{
"main.js": "2",
"app.js": "2",
"views/docs.js": "1",
},
Public: map[string]string{
"index.html": "2",
"docs.html": "2",
},
},
{Version: "v2",
UserFiles: `{
"cloud": {"main.js": "2", "app.js": "2", "views/docs.js": "1"},
"public": {"index.html": "2", "docs.html": "2"}
}`,
},
{
ParseVersion: "v2",
Versions: deployFileData{
Cloud: map[string]string{
"v2_main.js": "2",
"v2_app.js": "2",
"views/v2_docs.js": "2",
},
Public: map[string]string{
"v2_index.html": "2",
"v2_docs.html": "2",
},
},
{Version: "v2",
UserFiles: `{
"cloud": {"v2_main.js": "2", "v2_app.js": "2", "views/v2_docs.js": "2"},
"public": {"v2_index.html": "2", "v2_docs.html": "2"}
}`,
},
}
err := r.printFiles("", releases, h.env)
Expand Down