release.go (2058B)
1 //go:build release 2 // +build release 3 4 // Copyright 2017-present The Hugo Authors. All rights reserved. 5 // 6 // Licensed under the Apache License, Version 2.0 (the "License"); 7 // you may not use this file except in compliance with the License. 8 // You may obtain a copy of the License at 9 // http://www.apache.org/licenses/LICENSE-2.0 10 // 11 // Unless required by applicable law or agreed to in writing, software 12 // distributed under the License is distributed on an "AS IS" BASIS, 13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 // See the License for the specific language governing permissions and 15 // limitations under the License. 16 17 package commands 18 19 import ( 20 "errors" 21 22 "github.com/gohugoio/hugo/config" 23 "github.com/gohugoio/hugo/releaser" 24 "github.com/spf13/cobra" 25 ) 26 27 var _ cmder = (*releaseCommandeer)(nil) 28 29 type releaseCommandeer struct { 30 cmd *cobra.Command 31 32 version string 33 34 skipPublish bool 35 try bool 36 } 37 38 func createReleaser() cmder { 39 // Note: This is a command only meant for internal use and must be run 40 // via "go run -tags release main.go release" on the actual code base that is in the release. 41 r := &releaseCommandeer{ 42 cmd: &cobra.Command{ 43 Use: "release", 44 Short: "Release a new version of Hugo.", 45 Hidden: true, 46 }, 47 } 48 49 r.cmd.RunE = func(cmd *cobra.Command, args []string) error { 50 return r.release() 51 } 52 53 r.cmd.PersistentFlags().StringVarP(&r.version, "rel", "r", "", "new release version, i.e. 0.25.1") 54 r.cmd.PersistentFlags().BoolVarP(&r.skipPublish, "skip-publish", "", false, "skip all publishing pipes of the release") 55 r.cmd.PersistentFlags().BoolVarP(&r.try, "try", "", false, "simulate a release, i.e. no changes") 56 57 return r 58 } 59 60 func (c *releaseCommandeer) getCommand() *cobra.Command { 61 return c.cmd 62 } 63 64 func (c *releaseCommandeer) flagsToConfig(cfg config.Provider) { 65 } 66 67 func (r *releaseCommandeer) release() error { 68 if r.version == "" { 69 return errors.New("must set the --rel flag to the relevant version number") 70 } 71 return releaser.New(r.version, r.skipPublish, r.try).Run() 72 }