From a489aed4260170c58c9675a369ecbda5e3c10e84 Mon Sep 17 00:00:00 2001
From: Florent Gluck <florent.gluck@hesge.ch>
Date: Wed, 5 Oct 2022 16:15:35 +0200
Subject: [PATCH] Removed unused commands that had been commented out for a
 while now (vmListXXX). Help is now consistent across all commands.
 templateExportDisk now takes a 2nd argument: the file into which to save the
 disk image.

---
 src/cmdTemplate/templateCreate.go     |  6 ++++--
 src/cmdTemplate/templateDel.go        |  2 +-
 src/cmdTemplate/templateExportDisk.go | 10 +++++++---
 src/cmdTemplate/templateList.go       |  2 +-
 src/cmdUser/userList.go               |  2 +-
 src/cmdVM/vmAttach.go                 |  2 +-
 src/cmdVM/vmCreate.go                 | 10 +++++-----
 src/cmdVM/vmCred2pdf.go               |  2 +-
 src/cmdVM/vmDel.go                    |  2 +-
 src/cmdVM/vmDelAccess.go              |  2 +-
 src/cmdVM/vmEdit.go                   | 14 ++++++++------
 src/cmdVM/vmExportDir.go              |  8 +++++---
 src/cmdVM/vmImportDir.go              |  9 ++++++---
 src/cmdVM/vmList.go                   |  2 +-
 src/cmdVM/vmListAttach.go             | 24 ------------------------
 src/cmdVM/vmListDel.go                | 24 ------------------------
 src/cmdVM/vmListEdit.go               | 24 ------------------------
 src/cmdVM/vmListEditAccess.go         | 24 ------------------------
 src/cmdVM/vmListExportDir.go          | 24 ------------------------
 src/cmdVM/vmListStart.go              | 24 ------------------------
 src/cmdVM/vmListStop.go               | 24 ------------------------
 src/cmdVM/vmSetAccess.go              |  2 +-
 src/cmdVM/vmShutdown.go               |  2 +-
 src/cmdVM/vmStart.go                  |  2 +-
 src/cmdVM/vmStop.go                   |  2 +-
 src/version/version.go                |  2 +-
 26 files changed, 48 insertions(+), 203 deletions(-)
 delete mode 100644 src/cmdVM/vmListAttach.go
 delete mode 100644 src/cmdVM/vmListDel.go
 delete mode 100644 src/cmdVM/vmListEdit.go
 delete mode 100644 src/cmdVM/vmListEditAccess.go
 delete mode 100644 src/cmdVM/vmListExportDir.go
 delete mode 100644 src/cmdVM/vmListStart.go
 delete mode 100644 src/cmdVM/vmListStop.go

diff --git a/src/cmdTemplate/templateCreate.go b/src/cmdTemplate/templateCreate.go
index 1bf854d..c1deef0 100644
--- a/src/cmdTemplate/templateCreate.go
+++ b/src/cmdTemplate/templateCreate.go
@@ -25,9 +25,11 @@ func (cmd *Create)PrintUsage() {
 		u.PrintlnErr(desc)
 	}
 	u.PrintlnErr("―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――")
-	u.PrintlnErr("USAGE: "+cmd.Name+" vmID name access")
+	u.PrintlnErr("USAGE: "+cmd.Name+" ID name access")
 	u.PrintlnErr("―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――")
-	u.PrintlnErr("Notes: access is either \"public\" or \"private\"")
+	u.PrintlnErr("ID        ID of the VM used to create the template.")
+    u.PrintlnErr("name      Name of the template to create.")
+	u.PrintlnErr("access    Access type, either \"public\" or \"private\"")
 }
 
 func (cmd *Create)Run(args []string) int {
diff --git a/src/cmdTemplate/templateDel.go b/src/cmdTemplate/templateDel.go
index 49629b7..caebd19 100644
--- a/src/cmdTemplate/templateDel.go
+++ b/src/cmdTemplate/templateDel.go
@@ -15,7 +15,7 @@ func (cmd *Del)GetName() string {
  
 func (cmd *Del)GetDesc() []string {
 	return []string{
-		"Deletes one or more templates (regex).",
+		"Deletes one or more templates.",
 		"Requires TPL_DESTROY or TPL_DESTROY_ANY user capability."}
 }
 
diff --git a/src/cmdTemplate/templateExportDisk.go b/src/cmdTemplate/templateExportDisk.go
index 6ff14e2..885aae9 100644
--- a/src/cmdTemplate/templateExportDisk.go
+++ b/src/cmdTemplate/templateExportDisk.go
@@ -9,6 +9,8 @@ type ExportDisk struct {
     Name string
 }
 
+const outputFile = "disk.qcow"
+
 func (cmd *ExportDisk)GetName() string {
 	return cmd.Name
 }
@@ -24,8 +26,10 @@ func (cmd *ExportDisk)PrintUsage() {
 		u.PrintlnErr(desc)
 	}
 	u.PrintlnErr("―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――")
-	u.PrintlnErr("USAGE: ",cmd.GetName()," ID")
+	u.PrintlnErr("USAGE: ",cmd.GetName()," ID file")
 	u.PrintlnErr("―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――")
+	u.PrintlnErr("ID      ID of the template for which the disk must be exported.")
+	u.PrintlnErr("file    Name of the file to save the disk into.")
 }
 
 func (cmd *ExportDisk)Run(args []string) int {
@@ -33,14 +37,14 @@ func (cmd *ExportDisk)Run(args []string) int {
 	host := g.GetInstance().Host
 
 	argc := len(args)
-	if argc != 1 {
+	if argc != 2 {
 		cmd.PrintUsage()
 		return 1
 	}
 	
 	tplID := args[0]
+	outputFile := args[1]
 	statusCode := 0
-	outputFile := "disk.qcow"
 
 	u.Println("Exporting disk from template \""+tplID+"\" into "+outputFile+" ...")
 
diff --git a/src/cmdTemplate/templateList.go b/src/cmdTemplate/templateList.go
index 8c92492..926168c 100644
--- a/src/cmdTemplate/templateList.go
+++ b/src/cmdTemplate/templateList.go
@@ -10,7 +10,7 @@ func (cmd *List)GetName() string {
  
 func (cmd *List)GetDesc() []string {
 	return []string{
-		"Lists available templates (regex).",
+		"Lists available templates.",
 		"Requires TPL_LIST or TPL_LIST_ANY user capability."}
 }
 
diff --git a/src/cmdUser/userList.go b/src/cmdUser/userList.go
index 1acd210..610fbfa 100644
--- a/src/cmdUser/userList.go
+++ b/src/cmdUser/userList.go
@@ -14,7 +14,7 @@ func (cmd *List)GetName() string {
  
 func (cmd *List)GetDesc() []string {
 	return []string{
-		"Lists users (regex).",
+		"Lists users.",
 		"Requires USER_LIST user capability."}
 }
 
diff --git a/src/cmdVM/vmAttach.go b/src/cmdVM/vmAttach.go
index 3a6e600..614bd3f 100644
--- a/src/cmdVM/vmAttach.go
+++ b/src/cmdVM/vmAttach.go
@@ -17,7 +17,7 @@ func (cmd *Attach)GetName() string {
  
 func (cmd *Attach)GetDesc() []string {
 	return []string{
-		"Attaches to one or more VMs in order to use their desktop environment (regex).",
+		"Attaches to one or more VMs in order to use their desktop environment.",
 		"Requires VM_LIST VM access capability or VM_LIST_ANY user capability."}
 }
 
diff --git a/src/cmdVM/vmCreate.go b/src/cmdVM/vmCreate.go
index 88b3698..345e37c 100644
--- a/src/cmdVM/vmCreate.go
+++ b/src/cmdVM/vmCreate.go
@@ -20,7 +20,7 @@ func (cmd *Create)GetName() string {
  
 func (cmd *Create)GetDesc() []string {
 	return []string{
-		"Creates one or more VMs (regex).",
+		"Creates one or more VMs.",
 		"Requires VM_CREATE user capability."}
 }
 
@@ -31,16 +31,16 @@ func (cmd *Create)PrintUsage() {
 	u.PrintlnErr("―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――")
 	u.PrintlnErr("USAGE: "+cmd.Name+" name cpus ram nic template [count|file.csv]")
 	u.PrintlnErr("―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――")
-	const usage string = `name        name of the VM
+	const usage string = `name        Name of the VM to create.
 cpus        Number of CPUs, between 1 and 16.
 ram         Amount of RAM in MB,  between 512 and 32768.
 nic         Network interface, either "none" (no network) or "user" (network access).
 template    ID of the template to VM will be based on.
 count       Number of VMs to create (if not specified, one is created).
-            If specified and > 1, the VM name is postfixed with [n],
+            If specified and > 1, each VM's name is postfixed with [n],
             where n ranges from 1..count.
 file.csv    Single-column CSV file defining the students names.
-            Each VM name is postfixed with each entry in the CSV file.`
+            Each VM's name is postfixed with each entry in the CSV file.`
 	u.PrintlnErr(usage)
 }
 
@@ -163,4 +163,4 @@ func (cmd *Create)getCSVColumn(csvFile string, column int) ([]string, error) {
 	}
 
 	return entries, nil
-}
\ No newline at end of file
+}
diff --git a/src/cmdVM/vmCred2pdf.go b/src/cmdVM/vmCred2pdf.go
index d9814a2..e8e3e0c 100644
--- a/src/cmdVM/vmCred2pdf.go
+++ b/src/cmdVM/vmCred2pdf.go
@@ -16,7 +16,7 @@ func (cmd *Cred2pdf)GetName() string {
  
 func (cmd *Cred2pdf)GetDesc() []string {
 	return []string{
-		"Creates a PDF with the credentials required to attach to running VMs (regex).",
+		"Creates a PDF with the credentials required to attach to running VMs.",
 		"Requires VM_LIST VM access capability or VM_LIST_ANY user capability."}
 }
 
diff --git a/src/cmdVM/vmDel.go b/src/cmdVM/vmDel.go
index 5592a73..650d858 100644
--- a/src/cmdVM/vmDel.go
+++ b/src/cmdVM/vmDel.go
@@ -15,7 +15,7 @@ func (cmd *Del)GetName() string {
  
 func (cmd *Del)GetDesc() []string {
 	return []string{
-		"Deletes one or more VMs (regex).",
+		"Deletes one or more VMs.",
 		"Requires VM_DESTROY VM access capability or VM_DESTROY_ANY user capability."}
 }
 
diff --git a/src/cmdVM/vmDelAccess.go b/src/cmdVM/vmDelAccess.go
index 2deadd6..af36674 100644
--- a/src/cmdVM/vmDelAccess.go
+++ b/src/cmdVM/vmDelAccess.go
@@ -17,7 +17,7 @@ func (cmd *DelAccess)GetName() string {
  
 func (cmd *DelAccess)GetDesc() []string {
 	return []string{
-		"Removes a user's VM access in one or more VMs (regex).",
+		"Removes a user's VM access in one or more VMs.",
 		"Requires VM_SET_ACCESS user capability and VM_SET_ACCESS VM access capability."}
 }
 
diff --git a/src/cmdVM/vmEdit.go b/src/cmdVM/vmEdit.go
index c9f2e63..6da0134 100644
--- a/src/cmdVM/vmEdit.go
+++ b/src/cmdVM/vmEdit.go
@@ -25,7 +25,7 @@ func (cmd *Edit)GetName() string {
  
 func (cmd *Edit)GetDesc() []string {
 	return []string{
-		"Edits one or more VMs' properties: name, cpus, ram or nic (regex).",
+		"Edits one or more VMs' properties: name, cpus, ram or nic.",
 		"Requires VM_EDIT VM access capability or VM_EDIT_ANY user capability."}
 }
 
@@ -36,12 +36,14 @@ func (cmd *Edit)PrintUsage() {
 	u.PrintlnErr("―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――")
 	u.PrintlnErr("USAGE: "+cmd.GetName()+" [ID ...] [regex ...] [name=\"new name\"] [cpus=n] [ram=n] [nic=none/user]")
 	u.PrintlnErr("―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――")
-	printRegexUsageDetails()
-	const usage string = `VM parameters that can be edited:
-cpus    must be between 1 and 16
-ram     must be between 512 and 32768
-nic     must be either "none" (no network) or "user (network access)`
+	const usage string = `Parameters that can be changed (all optional):
+name    Name of the VM.
+cpus    Number of CPUs, between 1 and 16.
+ram     Amount of RAM in MB,  between 512 and 32768.
+nic     Network interface, either "none" (no network) or "user" (network access).`
 	u.PrintlnErr(usage)
+	u.PrintlnErr("")
+	printRegexUsageDetails()
 }
 
 func (cmd *Edit)Run(args []string) int {
diff --git a/src/cmdVM/vmExportDir.go b/src/cmdVM/vmExportDir.go
index 973c2c2..2620476 100644
--- a/src/cmdVM/vmExportDir.go
+++ b/src/cmdVM/vmExportDir.go
@@ -21,7 +21,6 @@ func (cmd *ExportDir)GetName() string {
 func (cmd *ExportDir)GetDesc() []string {
 	return []string{
 		"Exports one or more VMs' directory into one or more tar archives.",
-		"Creates one archive per VM (regex).",
 		"Requires VM_READFS VM access capability or VM_READFS_ANY user capability."}
 }
 
@@ -30,9 +29,12 @@ func (cmd *ExportDir)PrintUsage() {
 		u.PrintlnErr(desc)
 	}
 	u.PrintlnErr("―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――")
-	u.PrintlnErr("USAGE: ",cmd.GetName()," [ID ...] [regex ...] dir")
+	u.PrintlnErr("USAGE: ",cmd.GetName()," [ID ...] [regex ...] vmDir")
 	u.PrintlnErr("―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――")
-	u.PrintlnErr("\"dir\" is the directory in the VM to export into a tar archive named after the VM's name.")
+	const usage string = `vmDir    Directory (in the VM) to export into a tar archive.
+Remark: one archive, named after the VM's name, is created per VM.`
+	u.PrintlnErr(usage)	
+	u.PrintlnErr("")
 	printRegexUsageDetails()
 }
 
diff --git a/src/cmdVM/vmImportDir.go b/src/cmdVM/vmImportDir.go
index 5c67fae..c699d70 100644
--- a/src/cmdVM/vmImportDir.go
+++ b/src/cmdVM/vmImportDir.go
@@ -16,7 +16,7 @@ func (cmd *ImportDir)GetName() string {
  
 func (cmd *ImportDir)GetDesc() []string {
 	return []string{
-		"Copy a local directory and all its content to one or more VMs (regex).",
+		"Copies a local directory and all its content into one or more VMs.",
 		"Requires VM_WRITEFS VM access capability or VM_WRITEFS_ANY user capability."}
 }
 
@@ -27,8 +27,11 @@ func (cmd *ImportDir)PrintUsage() {
 	u.PrintlnErr("―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――")
 	u.PrintlnErr("USAGE: ",cmd.GetName()," [ID ...] [regex ...] localDir vmDir")
 	u.PrintlnErr("―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――")
-	u.PrintlnErr("\"localDir\" is the directory on the local filesystem to be copied into the VM.")
-	u.PrintlnErr("\"vmDir\" is the directory in the VM where localDir will be copied.")
+	const usage string = `localDir    Directory on the local filesystem to be copied into the VM.
+vmdir       Directory in the VM where localDir will be copied.
+IMPORTANT: to avoid disk corruption, files can only be imported into non-running VMs.`
+	u.PrintlnErr(usage)
+	u.PrintlnErr("")
 	printRegexUsageDetails()
 }
 
diff --git a/src/cmdVM/vmList.go b/src/cmdVM/vmList.go
index dc3967b..be74519 100644
--- a/src/cmdVM/vmList.go
+++ b/src/cmdVM/vmList.go
@@ -14,7 +14,7 @@ func (cmd *List)GetName() string {
  
 func (cmd *List)GetDesc() []string {
 	return []string{
-		"Lists VMs that can be listed (regex).",
+		"Lists VMs that can be listed.",
 		"Requires VM_LIST VM access capability or VM_LIST_ANY user capability."}
 }
 
diff --git a/src/cmdVM/vmListAttach.go b/src/cmdVM/vmListAttach.go
deleted file mode 100644
index 1776703..0000000
--- a/src/cmdVM/vmListAttach.go
+++ /dev/null
@@ -1,24 +0,0 @@
-package cmdVM
-
-type ListAttach struct {
-    Name string
-}
-
-func (cmd *ListAttach)GetName() string {
-	return cmd.Name
-}
- 
-func (cmd *ListAttach)GetDesc() []string {
-	return []string{
-		"Lists VMs that can be attached to (regex).",
-		"Requires VM_LIST VM access capability or VM_LIST_ANY user capability."}
-}
-
-func (cmd *ListAttach)PrintUsage() {
-	printRegexUsage(cmd)
-	printRegexUsageDetails()
-}
-
-func (cmd *ListAttach)Run(args []string) int {
-	return printFilteredVMs(cmd, args, "/vms/attach")
-}
diff --git a/src/cmdVM/vmListDel.go b/src/cmdVM/vmListDel.go
deleted file mode 100644
index 25780dd..0000000
--- a/src/cmdVM/vmListDel.go
+++ /dev/null
@@ -1,24 +0,0 @@
-package cmdVM
-
-type ListDel struct {
-    Name string
-}
-
-func (cmd *ListDel)GetName() string {
-	return cmd.Name
-}
- 
-func (cmd *ListDel)GetDesc() []string {
-	return []string{
-		"Lists VMs that can be deleted (regex).",
-		"Requires VM_DESTROY VM access capability or VM_DESTROY_ANY user capability."}
-}
-
-func (cmd *ListDel)PrintUsage() {
-	printRegexUsage(cmd)
-	printRegexUsageDetails()
-}
-
-func (cmd *ListDel)Run(args []string) int {
-	return printFilteredVMs(cmd, args, "/vms/del")
-}
diff --git a/src/cmdVM/vmListEdit.go b/src/cmdVM/vmListEdit.go
deleted file mode 100644
index 0fccced..0000000
--- a/src/cmdVM/vmListEdit.go
+++ /dev/null
@@ -1,24 +0,0 @@
-package cmdVM
-
-type ListEdit struct {
-    Name string
-}
-
-func (cmd *ListEdit)GetName() string {
-	return cmd.Name
-}
- 
-func (cmd *ListEdit)GetDesc() []string {
-	return []string{
-		"Lists VMs that can be edited (regex).",
-		"Requires VM_EDIT VM access capability or VM_EDIT_ANY user capability."}
-}
-
-func (cmd *ListEdit)PrintUsage() {
-	printRegexUsage(cmd)
-	printRegexUsageDetails()
-}
-
-func (cmd *ListEdit)Run(args []string) int {
-	return printFilteredVMs(cmd, args, "/vms/edit")
-}
diff --git a/src/cmdVM/vmListEditAccess.go b/src/cmdVM/vmListEditAccess.go
deleted file mode 100644
index e2bdd6c..0000000
--- a/src/cmdVM/vmListEditAccess.go
+++ /dev/null
@@ -1,24 +0,0 @@
-package cmdVM
-
-type ListEditAccess struct {
-    Name string
-}
-
-func (cmd *ListEditAccess)GetName() string {
-	return cmd.Name
-}
- 
-func (cmd *ListEditAccess)GetDesc() []string {
-	return []string{
-		"Lists VMs that can have their VM access edited (regex).",
-		"Requires VM_SET_ACCESS user capability and VM_SET_ACCESS VM access capability."}
-}
-
-func (cmd *ListEditAccess)PrintUsage() {
-	printRegexUsage(cmd)
-	printRegexUsageDetails()
-}
-
-func (cmd *ListEditAccess)Run(args []string) int {
-	return printFilteredVMs(cmd, args, "/vms/editaccess")
-}
diff --git a/src/cmdVM/vmListExportDir.go b/src/cmdVM/vmListExportDir.go
deleted file mode 100644
index b67c2c6..0000000
--- a/src/cmdVM/vmListExportDir.go
+++ /dev/null
@@ -1,24 +0,0 @@
-package cmdVM
-
-type ListExportDir struct{
-    Name string
-}
-
-func (cmd *ListExportDir)GetName() string {
-	return cmd.Name
-}
- 
-func (cmd *ListExportDir)GetDesc() []string {
-	return []string{
-		"List VMs that can have a directory exported (regex).",
-		"Requires VM_READFS VM access capability or VM_READFS_ANY user capability."}
-}
-
-func (cmd *ListExportDir)PrintUsage() {
-	printRegexUsage(cmd)
-	printRegexUsageDetails()
-}
-
-func (cmd *ListExportDir)Run(args []string) int {
-	return printFilteredVMs(cmd, args, "/vms/exportdir")
-}
diff --git a/src/cmdVM/vmListStart.go b/src/cmdVM/vmListStart.go
deleted file mode 100644
index 2b4e8e5..0000000
--- a/src/cmdVM/vmListStart.go
+++ /dev/null
@@ -1,24 +0,0 @@
-package cmdVM
-
-type ListStart struct{
-    Name string
-}
-
-func (cmd *ListStart)GetName() string {
-	return cmd.Name
-}
- 
-func (cmd *ListStart)GetDesc() []string {
-	return []string{
-		"Lists VMs that can be started (regex).",
-		"Requires VM_START VM access capability or VM_START_ANY user capability."}
-}
-
-func (cmd *ListStart)PrintUsage() {
-	printRegexUsage(cmd)
-	printRegexUsageDetails()
-}
-
-func (cmd *ListStart)Run(args []string) int {
-	return printFilteredVMs(cmd, args, "/vms/start")
-}
diff --git a/src/cmdVM/vmListStop.go b/src/cmdVM/vmListStop.go
deleted file mode 100644
index 453cc2b..0000000
--- a/src/cmdVM/vmListStop.go
+++ /dev/null
@@ -1,24 +0,0 @@
-package cmdVM
-
-type ListStop struct {
-    Name string
-}
-
-func (cmd *ListStop)GetName() string {
-	return cmd.Name
-}
- 
-func (cmd *ListStop)GetDesc() []string {
-	return []string{
-		"Lists VMs that can be killed or shutdown (regex).",
-		"Requires VM_STOP VM access capability or VM_STOP_ANY user capability."}
-}
-
-func (cmd *ListStop)PrintUsage() {
-	printRegexUsage(cmd)
-	printRegexUsageDetails()
-}
-
-func (cmd *ListStop)Run(args []string) int {
-	return printFilteredVMs(cmd, args, "/vms/stop")
-}
diff --git a/src/cmdVM/vmSetAccess.go b/src/cmdVM/vmSetAccess.go
index 3784939..f59bcb1 100644
--- a/src/cmdVM/vmSetAccess.go
+++ b/src/cmdVM/vmSetAccess.go
@@ -17,7 +17,7 @@ func (cmd *SetAccess)GetName() string {
  
 func (cmd *SetAccess)GetDesc() []string {
 	return []string{
-		"Adds a user's VM access in one or more VMs (regex).",
+		"Adds a user's VM access in one or more VMs.",
 		"Requires VM_SET_ACCESS user capability and VM_SET_ACCESS VM access capability."}
 }
 
diff --git a/src/cmdVM/vmShutdown.go b/src/cmdVM/vmShutdown.go
index 8848234..21a97d2 100644
--- a/src/cmdVM/vmShutdown.go
+++ b/src/cmdVM/vmShutdown.go
@@ -15,7 +15,7 @@ func (cmd *Shutdown)GetName() string {
  
 func (cmd *Shutdown)GetDesc() []string {
 	return []string{
-		"Gracefully shutdowns one or more VMs (regex).",
+		"Gracefully shutdowns one or more VMs.",
 		"Requires VM_STOP VM access capability or VM_STOP_ANY user capability."}
 }
 
diff --git a/src/cmdVM/vmStart.go b/src/cmdVM/vmStart.go
index 714deb1..fc847ca 100644
--- a/src/cmdVM/vmStart.go
+++ b/src/cmdVM/vmStart.go
@@ -15,7 +15,7 @@ func (cmd *Start)GetName() string {
  
 func (cmd *Start)GetDesc() []string {
 	return []string{
-		"Starts one or more VMs (regex).",
+		"Starts one or more VMs.",
 		"Requires VM_START VM access capability or VM_START_ANY user capability."}
 }
 
diff --git a/src/cmdVM/vmStop.go b/src/cmdVM/vmStop.go
index c2ce958..c2a66a1 100644
--- a/src/cmdVM/vmStop.go
+++ b/src/cmdVM/vmStop.go
@@ -15,7 +15,7 @@ func (cmd *Stop)GetName() string {
  
 func (cmd *Stop)GetDesc() []string {
 	return []string{
-		"Kill one or more VMs (regex).",
+		"Kills one or more VMs.",
 		"Requires VM_STOP VM access capability or VM_STOP_ANY user capability."}
 }
 
diff --git a/src/version/version.go b/src/version/version.go
index ba3c1a3..9d69093 100644
--- a/src/version/version.go
+++ b/src/version/version.go
@@ -8,7 +8,7 @@ import (
 const (
 	major  = 1
 	minor  = 0
-	bugfix = 2
+	bugfix = 3
 )
 
 type Version struct {
-- 
GitLab