Skip to content

Commit

Permalink
Improves odo delete for devfiles (#2842)
Browse files Browse the repository at this point in the history
* Improves odo delete for devfiles

* Removes .odo folder if empty
  • Loading branch information
mik-dass committed Apr 18, 2020
1 parent 0232c1b commit 12801e0
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 33 deletions.
78 changes: 48 additions & 30 deletions pkg/odo/cli/component/delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,36 +101,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 @@ -212,6 +183,53 @@ 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
}

cfg, err := config.NewLocalConfigInfo(do.componentContext)
if err != nil {
return err
}
if err = cfg.DeleteConfigDirIfEmpty(); 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
6 changes: 3 additions & 3 deletions tests/integration/devfile/cmd_devfile_delete_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,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 and also the env and odo folders and the odo-index-file.json file", func() {
helper.CmdShouldPass("git", "clone", "https://github.com/che-samples/web-nodejs-sample.git", projectDirPath)
helper.Chdir(projectDirPath)

Expand All @@ -86,8 +86,8 @@ var _ = Describe("odo devfile delete command tests", func() {

oc.WaitAndCheckForExistence("deployments", namespace, 1)

files := helper.ListFilesInDir(filepath.Join(projectDirPath, ".odo"))
Expect(files).To(Not(ContainElement("env")))
files := helper.ListFilesInDir(projectDirPath)
Expect(files).To(Not(ContainElement(".odo")))
})
})
})

0 comments on commit 12801e0

Please sign in to comment.