diff --git a/.gitignore b/.gitignore index d19c362..e2b5290 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,6 @@ # https://github.com/github/gitignore/blob/main/community/Golang/Go.AllowList.gitignore # # Binaries for programs and plugins -*.exe *.exe~ *.dll *.so diff --git a/cli/build.ps1 b/cli/build.ps1 new file mode 100644 index 0000000..b842282 --- /dev/null +++ b/cli/build.ps1 @@ -0,0 +1,23 @@ +# build.ps1 +$version = "0.0.1" +$commit = git rev-parse --short HEAD + +# Create output folder if not exists +if (-Not (Test-Path -Path "dist")) { + New-Item -ItemType Directory -Path "dist" +} + +Write-Host "Building for Windows..." +go build -ldflags "-X github.com/homecloudhq/homecloud/cli/cmd.Version=$version -X github.com/homecloudhq/homecloud/cli/cmd.Commit=$commit" -o dist/homecloud-windows.exe main.go + +Write-Host "Building for Linux..." +$env:GOOS = "linux" +$env:GOARCH = "amd64" +go build -ldflags "-X github.com/homecloudhq/homecloud/cli/cmd.Version=$version -X github.com/homecloudhq/homecloud/cli/cmd.Commit=$commit" -o dist/homecloud-linux main.go + +Write-Host "Building for macOS (arm64)..." +$env:GOOS = "darwin" +$env:GOARCH = "arm64" +go build -ldflags "-X github.com/homecloudhq/homecloud/cli/cmd.Version=$version -X github.com/homecloudhq/homecloud/cli/cmd.Commit=$commit" -o dist/homecloud-macos main.go + +Write-Host "Done!" diff --git a/cli/buildzip.ps1 b/cli/buildzip.ps1 new file mode 100644 index 0000000..358f0f9 --- /dev/null +++ b/cli/buildzip.ps1 @@ -0,0 +1,38 @@ +# Check if the dist folder exists +$distFolder = "dist" +if (-Not (Test-Path -Path $distFolder)) { + Write-Host "'dist' folder not found. Please ensure you've run the build process first." + exit +} + +# Check if the necessary files are present +$windowsFile = "$distFolder\homecloud-windows.exe" +$linuxFile = "$distFolder\homecloud-linux" +$macosFile = "$distFolder\homecloud-macos" + +# Check and zip each platform binary +if (Test-Path $windowsFile) { + Write-Host "Zipping Windows binary..." + Compress-Archive -Path $windowsFile -DestinationPath "$distFolder\homecloud-windows.zip" + Write-Host "homecloud-windows.zip created!" +} else { + Write-Host "Windows binary (homecloud-windows.exe) not found. Skipping..." +} + +if (Test-Path $linuxFile) { + Write-Host "Zipping Linux binary..." + Compress-Archive -Path $linuxFile -DestinationPath "$distFolder\homecloud-linux.zip" + Write-Host "homecloud-linux.zip created!" +} else { + Write-Host "Linux binary (homecloud-linux) not found. Skipping..." +} + +if (Test-Path $macosFile) { + Write-Host "Zipping macOS binary..." + Compress-Archive -Path $macosFile -DestinationPath "$distFolder\homecloud-macos.zip" + Write-Host "homecloud-macos.zip created!" +} else { + Write-Host "macOS binary (homecloud-macos) not found. Skipping..." +} + +Write-Host "Zipping process complete!" diff --git a/cli/cmd/version.go b/cli/cmd/version.go new file mode 100644 index 0000000..0135da7 --- /dev/null +++ b/cli/cmd/version.go @@ -0,0 +1,25 @@ +package cmd + +import ( + "fmt" + + "github.com/spf13/cobra" +) + +var ( + Version = "0.0.1" + Commit = "dev" +) + +var versionCmd = &cobra.Command{ + Use: "version", + Short: "Print the version number of the HomeCloud CLI", + Long: `Displays the current version and Git commit of the HomeCloud CLI tool.`, + Run: func(cmd *cobra.Command, args []string) { + fmt.Printf("HomeCloud CLI version %s (commit: %s)\n", Version, Commit) + }, +} + +func init() { + RootCmd.AddCommand(versionCmd) +} diff --git a/cli/dist/homecloud-linux b/cli/dist/homecloud-linux new file mode 100644 index 0000000..a035383 Binary files /dev/null and b/cli/dist/homecloud-linux differ diff --git a/cli/dist/homecloud-linux.zip b/cli/dist/homecloud-linux.zip new file mode 100644 index 0000000..a64ff7b Binary files /dev/null and b/cli/dist/homecloud-linux.zip differ diff --git a/cli/dist/homecloud-macos b/cli/dist/homecloud-macos new file mode 100644 index 0000000..ce28309 Binary files /dev/null and b/cli/dist/homecloud-macos differ diff --git a/cli/dist/homecloud-macos.zip b/cli/dist/homecloud-macos.zip new file mode 100644 index 0000000..1536647 Binary files /dev/null and b/cli/dist/homecloud-macos.zip differ diff --git a/cli/dist/homecloud-windows.exe b/cli/dist/homecloud-windows.exe new file mode 100644 index 0000000..ce28309 Binary files /dev/null and b/cli/dist/homecloud-windows.exe differ diff --git a/cli/dist/homecloud-windows.zip b/cli/dist/homecloud-windows.zip new file mode 100644 index 0000000..f0a4f92 Binary files /dev/null and b/cli/dist/homecloud-windows.zip differ diff --git a/cli/go.mod b/cli/go.mod index af9e569..71ce8c3 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -4,6 +4,7 @@ go 1.23.4 require ( github.com/fsouza/go-dockerclient v1.12.0 + github.com/minio/minio-go/v7 v7.0.88 github.com/spf13/cobra v1.8.1 ) @@ -24,7 +25,6 @@ require ( github.com/klauspost/cpuid/v2 v2.2.9 // indirect github.com/minio/crc64nvme v1.0.1 // indirect github.com/minio/md5-simd v1.1.2 // indirect - github.com/minio/minio-go/v7 v7.0.88 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect github.com/moby/patternmatcher v0.6.0 // indirect github.com/moby/sys/sequential v0.5.0 // indirect diff --git a/cli/go.sum b/cli/go.sum index 7116fda..c81ab50 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -36,8 +36,6 @@ github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2 github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.15.9 h1:wKRjX6JRtDdrE9qwa4b/Cip7ACOshUI4smpCQanqjSY= -github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= @@ -82,9 +80,8 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -108,12 +105,10 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= -golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU= -golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= +golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU= +golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=