ref: f465c5c3079261eb7fa513e2d2793851b9c52b83
parent: 3400aff2588cbf9dd4629c05537d16b019d0fdf5
author: Eric Hagman <emhagman@gmail.com>
date: Thu Oct 22 23:03:41 EDT 2020
build: Allow optional "nodeploy" tag to exclude deploy command from bin Fixes #7826
--- a/Dockerfile
+++ b/Dockerfile
@@ -4,7 +4,7 @@
FROM golang:1.15-alpine AS build
-# Optionally set HUGO_BUILD_TAGS to "extended" when building like so:
+# Optionally set HUGO_BUILD_TAGS to "extended" or "nodeploy" when building like so:
# docker build --build-arg HUGO_BUILD_TAGS=extended .
ARG HUGO_BUILD_TAGS
--- a/commands/deploy.go
+++ b/commands/deploy.go
@@ -11,6 +11,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
+// +build !nodeploy
+
package commands
import (
--- /dev/null
+++ b/commands/nodeploy.go
@@ -1,0 +1,49 @@
+// Copyright 2019 The Hugo Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// +build nodeploy
+
+package commands
+
+import (
+ "errors"
+ "github.com/spf13/cobra"
+)
+
+var _ cmder = (*deployCmd)(nil)
+
+// deployCmd supports deploying sites to Cloud providers.
+type deployCmd struct {
+ *baseBuilderCmd
+}
+
+func (b *commandsBuilder) newDeployCmd() *deployCmd {
+ cc := &deployCmd{}
+
+ cmd := &cobra.Command{
+ Use: "deploy",
+ Short: "Deploy your site to a Cloud provider.",
+ Long: `Deploy your site to a Cloud provider.
+
+See https://gohugo.io/hosting-and-deployment/hugo-deploy/ for detailed
+documentation.
+`,
+ RunE: func(cmd *cobra.Command, args []string) error {
+ return errors.New("build without HUGO_BUILD_TAGS=nodeploy to use this command")
+ },
+ }
+
+ cc.baseBuilderCmd = b.newBuilderBasicCmd(cmd)
+
+ return cc
+}
--- a/deploy/cloudfront.go
+++ b/deploy/cloudfront.go
@@ -11,6 +11,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
+// +build !nodeploy
+
package deploy
import (
--- a/deploy/deploy.go
+++ b/deploy/deploy.go
@@ -11,6 +11,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
+// +build !nodeploy
+
package deploy
import (
--- a/deploy/deployConfig.go
+++ b/deploy/deployConfig.go
@@ -11,6 +11,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
+// +build !nodeploy
+
package deploy
import (
--- a/deploy/deployConfig_test.go
+++ b/deploy/deployConfig_test.go
@@ -11,6 +11,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
+// +build !nodeploy
+
package deploy
import (
--- a/deploy/deploy_azure.go
+++ b/deploy/deploy_azure.go
@@ -11,7 +11,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-// +build !solaris
+// +build !solaris,!nodeploy
package deploy
--- a/deploy/deploy_test.go
+++ b/deploy/deploy_test.go
@@ -11,6 +11,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
+// +build !nodeploy
+
package deploy
import (
--- a/deploy/google.go
+++ b/deploy/google.go
@@ -11,6 +11,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
+// +build !nodeploy
+
package deploy
import (
--- a/magefile.go
+++ b/magefile.go
@@ -354,6 +354,7 @@
func buildTags() string {
// To build the extended Hugo SCSS/SASS enabled version, build with
// HUGO_BUILD_TAGS=extended mage install etc.
+ // To build without `hugo deploy` for smaller binary, use HUGO_BUILD_TAGS=nodeploy
if envtags := os.Getenv("HUGO_BUILD_TAGS"); envtags != "" {
return envtags
}