Skip to content
This repository was archived by the owner on Jul 18, 2025. It is now read-only.

Commit d2b94f0

Browse files
committed
Make fork-name optional in fork command
Signed-off-by: Joffrey F <joffrey@docker.com>
1 parent a9e0b26 commit d2b94f0

4 files changed

Lines changed: 30 additions & 28 deletions

File tree

cmd/docker-app/fork.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,15 @@ var (
1313

1414
func forkCmd() *cobra.Command {
1515
cmd := &cobra.Command{
16-
Use: "fork <origin-name> <fork-name> [-p outputdir] [-m name:email ...]",
16+
Use: "fork <origin-name> [fork-name] [-p outputdir] [-m name:email ...]",
1717
Short: "Create a fork of an existing application to be modified",
18-
Args: cli.ExactArgs(2),
18+
Args: cli.RequiresRangeArgs(1, 2),
1919
RunE: func(cmd *cobra.Command, args []string) error {
20-
return packager.Fork(args[0], args[1], outputDir, forkMaintainers)
20+
forkName := ""
21+
if len(args) >= 2 {
22+
forkName = args[1]
23+
}
24+
return packager.Fork(args[0], forkName, outputDir, forkMaintainers)
2125
},
2226
}
2327
cmd.Flags().StringArrayVarP(&forkMaintainers, "maintainer", "m", []string{}, "Maintainer (name:email) (optional)")

e2e/commands_test.go

Lines changed: 4 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ import (
1212
"testing"
1313

1414
"github.com/docker/app/internal"
15-
"github.com/docker/app/internal/types"
16-
yaml "gopkg.in/yaml.v2"
1715

1816
"gotest.tools/assert"
1917
"gotest.tools/fs"
@@ -332,29 +330,10 @@ func TestForkBinary(t *testing.T) {
332330
assert.NilError(t, err)
333331

334332
golden.Assert(t, string(metadata), "expected-fork-metadata.golden")
335-
var decodedMeta types.AppMetadata
336-
err = yaml.Unmarshal(metadata, &decodedMeta)
333+
334+
assertCommand(t, dockerApp, "fork", registry+"/acmecorp/simple.dockerapp:1.1.0-beta1", "-p", tempDir, "-m", "Remilia Scarlet:remilia@acmecorp.cool")
335+
metadata2, err := ioutil.ReadFile(filepath.Join(tempDir, "simple.dockerapp", "metadata.yml"))
337336
assert.NilError(t, err)
338-
var expected = types.AppMetadata{
339-
Name: "scarlet.devil",
340-
Namespace: "acmecorp",
341-
Version: "1.1.0-beta1",
342-
Description: "new fancy webapp with microservices",
343-
Maintainers: types.Maintainers{
344-
{Name: "Remilia Scarlet", Email: "remilia@acmecorp.cool"},
345-
},
346-
Parents: types.Parents{
347-
{
348-
Name: "simple",
349-
Namespace: "acmecorp",
350-
Version: "1.1.0-beta1",
351-
Maintainers: types.Maintainers{
352-
{Name: "John Developer", Email: "john.dev@acmecorp.cool"},
353-
{Name: "Jane Developer", Email: "jane.dev@acmecorp.cool"},
354-
},
355-
},
356-
},
357-
}
358337

359-
assert.DeepEqual(t, decodedMeta, expected)
338+
golden.Assert(t, string(metadata2), "expected-fork-metadata-no-rename.golden")
360339
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
version: 1.1.0-beta1
2+
name: simple
3+
description: new fancy webapp with microservices
4+
namespace: ""
5+
maintainers:
6+
- name: Remilia Scarlet
7+
email: remilia@acmecorp.cool
8+
parents:
9+
- name: simple
10+
namespace: acmecorp
11+
version: 1.1.0-beta1
12+
maintainers:
13+
- name: John Developer
14+
email: john.dev@acmecorp.cool
15+
- name: Jane Developer
16+
email: jane.dev@acmecorp.cool

internal/packager/fork.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ func Fork(originName, forkName, outputDir string, maintainers []string) error {
2222
if err != nil {
2323
return errors.Wrapf(err, "origin %q is not a valid image name", originName)
2424
}
25+
if forkName == "" {
26+
forkName = internal.AppNameFromDir(imgRef.Name)
27+
}
2528
log.Debugf("Pulling latest version of package %s", originName)
2629
if err := pullImage(originName); err != nil {
2730
return err

0 commit comments

Comments
 (0)