Skip to content

Commit c74dcb6

Browse files
committed
Implemented maratonctl package rm for #2
1 parent 3919116 commit c74dcb6

File tree

4 files changed

+59
-0
lines changed

4 files changed

+59
-0
lines changed

cmd/package_rm.go

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package cmd
2+
3+
import (
4+
"errors"
5+
"github.com/ashwanthkumar/marathonctl/packages"
6+
"github.com/spf13/cobra"
7+
)
8+
9+
var PackageRm = &cobra.Command{
10+
Use: "rm <repository>",
11+
Short: "Remove a package repository from local cache",
12+
Long: "Remove a package repository from local cache",
13+
Run: AttachHandler(rmPackageCache),
14+
}
15+
16+
func rmPackageCache(args []string) (err error) {
17+
if len(args) > 0 {
18+
repository := args[0]
19+
return packages.Remove(repository)
20+
}
21+
22+
return errors.New("We need a repository name to remove")
23+
}
24+
25+
func init() {
26+
Package.AddCommand(PackageRm)
27+
}

packages/packages.go

+11
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,17 @@ func Add(name, location string) error {
4646
return WritePackageMetadata()
4747
}
4848

49+
func Remove(name string) (err error) {
50+
AllRepos.Remove(name)
51+
packageRepoPath := config.GetPackageCachePath() + "/" + name
52+
fmt.Printf("Removing %s from %s\n", name, packageRepoPath)
53+
err = os.RemoveAll(packageRepoPath)
54+
if err != nil {
55+
return err
56+
}
57+
return WritePackageMetadata()
58+
}
59+
4960
func Update(name string) (err error) {
5061
repository := AllRepos.Get(name)
5162
if repository == nil {

packages/repositories.go

+12
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,18 @@ func (r *Repositories) Add(repo Repository) *Repositories {
4040
return r
4141
}
4242

43+
func (r *Repositories) Remove(repo string) *Repositories {
44+
var newRepositories Repositories
45+
for _, repository := range *r {
46+
if repository.Name != repo {
47+
newRepositories = append(newRepositories, repository)
48+
}
49+
}
50+
51+
*r = newRepositories
52+
return r
53+
}
54+
4355
func (r *Repositories) Serialize() ([]byte, error) {
4456
return json.Marshal(r)
4557
}

packages/repositories_test.go

+9
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,15 @@ func TestRepositoriesAdd(t *testing.T) {
2525
assert.Equal(t, repos.Exists("r4"), true)
2626
}
2727

28+
func TestRepositoriesRemove(t *testing.T) {
29+
repos := newRepositories([]Repository {
30+
repo("r1", "loc1"), repo("r2", "loc2"),
31+
})
32+
assert.Equal(t, true, repos.Exists("r2"))
33+
repos.Remove("r2")
34+
assert.Equal(t, false, repos.Exists("r2"))
35+
}
36+
2837
func TestRepositoriesGet(t *testing.T) {
2938
repos := newRepositories([]Repository {
3039
repo("r1", "loc1"), repo("r2", "loc2"),

0 commit comments

Comments
 (0)