Repository: alexellis/arkade (Go)

Issue:
[Tool] Add actuated-cli to arkade
## Description

There's a new CLI for [actuated.dev](https://actuated.dev) and we want to have people download it via arkade to minimise the amount of instructions we need to maintain in the UI / docs.

https://github.com/self-actuated/actuated-cli/releases

MacOS - amd64/arm64
Windows - amd64
Linux - amd64/arm64



Discussion:

Patch:
diff --git a/README.md b/README.md
index a4117dc9c..295bec77f 100644
--- a/README.md
+++ b/README.md
@@ -682,6 +682,7 @@ There are 56 apps that you can install on your cluster.
 
 |                                     TOOL                                     |                                                                DESCRIPTION                                                                |
 |------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------|
+| [actuated-cli](https://github.com/self-actuated/actuated-cli)                | Official CLI for Actuated.                                                                                                                |
 | [argocd](https://github.com/argoproj/argo-cd)                                | Declarative, GitOps continuous delivery tool for Kubernetes.                                                                              |
 | [argocd-autopilot](https://github.com/argoproj-labs/argocd-autopilot)        | An opinionated way of installing Argo-CD and managing GitOps repositories.                                                                |
 | [arkade](https://github.com/alexellis/arkade)                                | Portable marketplace for downloading your favourite devops CLIs and installing helm charts, with a single command.                        |
diff --git a/pkg/get/tools.go b/pkg/get/tools.go
index a3eeff3cd..e2d1c972c 100644
--- a/pkg/get/tools.go
+++ b/pkg/get/tools.go
@@ -376,6 +376,25 @@ https://storage.googleapis.com/kubernetes-release/release/{{.Version}}/bin/{{$os
 			{{- end -}}`,
 		})
 
+	tools = append(tools,
+		Tool{
+			Owner:       "self-actuated",
+			Repo:        "actuated-cli",
+			Name:        "actuated-cli",
+			Description: "CLI for Actuated",
+			BinaryTemplate: `{{ if HasPrefix .OS "ming" -}}
+			{{.Name}}.exe
+			{{- else if eq .OS "darwin" -}}
+				{{ if eq .Arch "arm64" -}}
+				{{.Name}}-darwin-arm64
+				{{- else -}}
+				{{.Name}}-darwin
+				{{- end -}}
+			{{- else -}}
+			{{.Name}}
+			{{- end -}}`,
+		})
+
 	tools = append(tools,
 		Tool{
 			Owner:       "inlets",


Test patch:
diff --git a/pkg/get/get_test.go b/pkg/get/get_test.go
index f1dd4201d..be85cfc00 100644
--- a/pkg/get/get_test.go
+++ b/pkg/get/get_test.go
@@ -359,6 +359,47 @@ func Test_Download_RunJob(t *testing.T) {
 	}
 }
 
+func Test_Download_ActuatedCLI(t *testing.T) {
+	tools := MakeTools()
+	name := "actuated-cli"
+
+	var tool *Tool
+	for _, target := range tools {
+		if name == target.Name {
+			tool = &target
+			break
+		}
+	}
+
+	tests := []test{
+		{os: "mingw64_nt-10.0-18362",
+			arch:    arch64bit,
+			version: "0.0.1",
+			url:     "https://github.com/self-actuated/actuated-cli/releases/download/0.0.1/actuated-cli.exe"},
+		{os: "darwin",
+			arch:    arch64bit,
+			version: "0.0.1",
+			url:     "https://github.com/self-actuated/actuated-cli/releases/download/0.0.1/actuated-cli-darwin"},
+		{os: "darwin",
+			arch:    archDarwinARM64,
+			version: "0.0.1",
+			url:     "https://github.com/self-actuated/actuated-cli/releases/download/0.0.1/actuated-cli-darwin-arm64"},
+		{os: "linux",
+			arch:    arch64bit,
+			version: "0.0.1",
+			url:     "https://github.com/self-actuated/actuated-cli/releases/download/0.0.1/actuated-cli"},
+	}
+	for _, tc := range tests {
+		got, err := tool.GetURL(tc.os, tc.arch, tc.version, false)
+		if err != nil {
+			t.Fatal(err)
+		}
+		if got != tc.url {
+			t.Fatalf("want: %s, got: %s", tc.url, got)
+		}
+	}
+}
+
 func Test_Download_mixctl(t *testing.T) {
 	tools := MakeTools()
 	name := "mixctl"