Skip to content

Commit

Permalink
Improves odo delete for devfiles
Browse files Browse the repository at this point in the history
  • Loading branch information
mik-dass committed Apr 8, 2020
1 parent cef105b commit 9337a7a
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 31 deletions.
69 changes: 39 additions & 30 deletions pkg/odo/cli/component/delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,36 +99,7 @@ func (do *DeleteOptions) Run() (err error) {
glog.V(4).Infof("args: %#v", do)

if experimental.IsExperimentalModeEnabled() && util.CheckPathExists(do.devfilePath) {
// devfile delete
if do.componentForceDeleteFlag || ui.Proceed(fmt.Sprintf("Are you sure you want to delete the devfile component?")) {
err = do.DevfileComponentDelete()
if err != nil {
log.Errorf("error occurred while deleting component, cause: %v", err)
}
} else {
log.Error("Aborting deletion of component")
}

if do.componentDeleteAllFlag {
if do.componentForceDeleteFlag || ui.Proceed(fmt.Sprintf("Are you sure you want to delete env folder?")) {
if !do.EnvSpecificInfo.EnvInfoFileExists() {
return fmt.Errorf("env folder doesn't exist for the component")
}
err = do.EnvSpecificInfo.DeleteEnvInfoFile()
if err != nil {
return err
}
err = do.EnvSpecificInfo.DeleteEnvDirIfEmpty()
if err != nil {
return err
}
log.Successf("Successfully deleted env file")
} else {
log.Error("Aborting deletion of env folder")
}
}

return nil
return do.DevFileRun()
}

if do.isCmpExists {
Expand Down Expand Up @@ -210,6 +181,44 @@ func (do *DeleteOptions) Run() (err error) {
return
}

// Run has the logic to perform the required actions as part of command for devfiles
func (do *DeleteOptions) DevFileRun() (err error) {
// devfile delete
if do.componentForceDeleteFlag || ui.Proceed(fmt.Sprintf("Are you sure you want to delete the devfile component: %s?", do.EnvSpecificInfo.GetName())) {
err = do.DevfileComponentDelete()
if err != nil {
log.Errorf("error occurred while deleting component, cause: %v", err)
}
} else {
log.Error("Aborting deletion of component")
}

if do.componentDeleteAllFlag {
if do.componentForceDeleteFlag || ui.Proceed(fmt.Sprintf("Are you sure you want to delete env folder?")) {
if !do.EnvSpecificInfo.EnvInfoFileExists() {
return fmt.Errorf("env folder doesn't exist for the component")
}
if err = util.DeleteIndexFile(filepath.Dir(do.devfilePath)); err != nil {
return err
}

err = do.EnvSpecificInfo.DeleteEnvInfoFile()
if err != nil {
return err
}
err = do.EnvSpecificInfo.DeleteEnvDirIfEmpty()
if err != nil {
return err
}
log.Successf("Successfully deleted env file")
} else {
log.Error("Aborting deletion of env folder")
}
}

return nil
}

// NewCmdDelete implements the delete odo command
func NewCmdDelete(name, fullName string) *cobra.Command {

Expand Down
3 changes: 2 additions & 1 deletion tests/integration/devfile/cmd_devfile_delete_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ var _ = Describe("odo devfile delete command tests", func() {

Context("when devfile delete command is executed with all flag", func() {

It("should delete the component created from the devfile and also the env folder", func() {
It("should delete the component created from the devfile along with the env folder and the odo index file", func() {
helper.CopyExample(filepath.Join("source", "devfiles", "nodejs"), context)

componentName := helper.RandString(6)
Expand All @@ -81,6 +81,7 @@ var _ = Describe("odo devfile delete command tests", func() {

files := helper.ListFilesInDir(filepath.Join(context, ".odo"))
Expect(files).To(Not(ContainElement("env")))
Expect(files).To(Not(ContainElement("odo-file-index.json")))
})
})
})

0 comments on commit 9337a7a

Please sign in to comment.