mirror of
				https://github.com/go-task/task.git
				synced 2025-10-30 23:58:01 +02:00 
			
		
		
		
	feat: go 1.21
This commit is contained in:
		
				
					committed by
					
						 Andrey Nering
						Andrey Nering
					
				
			
			
				
	
			
			
			
						parent
						
							81148c312e
						
					
				
				
					commit
					8d0754af4d
				
			
							
								
								
									
										3
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								go.mod
									
									
									
									
									
								
							| @@ -1,6 +1,6 @@ | ||||
| module github.com/go-task/task/v3 | ||||
|  | ||||
| go 1.20 | ||||
| go 1.21 | ||||
|  | ||||
| require ( | ||||
| 	github.com/Masterminds/semver/v3 v3.2.1 | ||||
| @@ -15,7 +15,6 @@ require ( | ||||
| 	github.com/spf13/pflag v1.0.5 | ||||
| 	github.com/stretchr/testify v1.8.4 | ||||
| 	github.com/zeebo/xxh3 v1.0.2 | ||||
| 	golang.org/x/exp v0.0.0-20240110193028-0dcbfd608b1e | ||||
| 	golang.org/x/sync v0.6.0 | ||||
| 	golang.org/x/term v0.17.0 | ||||
| 	gopkg.in/yaml.v3 v3.0.1 | ||||
|   | ||||
							
								
								
									
										9
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								go.sum
									
									
									
									
									
								
							| @@ -1,21 +1,26 @@ | ||||
| github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0rYXWg0= | ||||
| github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= | ||||
| github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= | ||||
| github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= | ||||
| github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||
| github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= | ||||
| github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||
| github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= | ||||
| github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= | ||||
| github.com/frankban/quicktest v1.14.5 h1:dfYrrRyLtiqT9GyKXgdh+k4inNeTvmGbuSgZ3lx3GhA= | ||||
| github.com/frankban/quicktest v1.14.5/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= | ||||
| github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= | ||||
| github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= | ||||
| github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= | ||||
| github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= | ||||
| github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= | ||||
| github.com/klauspost/cpuid/v2 v2.0.9 h1:lgaqFMSdTdQYdZ04uHyN2d/eKdOMyi2YLSvlQIBFYa4= | ||||
| github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= | ||||
| github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= | ||||
| github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= | ||||
| github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= | ||||
| github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= | ||||
| github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= | ||||
| github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= | ||||
| github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= | ||||
| @@ -30,6 +35,7 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN | ||||
| github.com/radovskyb/watcher v1.0.7 h1:AYePLih6dpmS32vlHfhCeli8127LzkIgwJGcwwe8tUE= | ||||
| github.com/radovskyb/watcher v1.0.7/go.mod h1:78okwvY5wPdzcb1UYnip1pvrZNIVEIh/Cm+ZuvsUYIg= | ||||
| github.com/rogpeppe/go-internal v1.10.1-0.20230524175051-ec119421bb97 h1:3RPlVWzZ/PDqmVuf/FKHARG5EMid/tl7cv54Sw/QRVY= | ||||
| github.com/rogpeppe/go-internal v1.10.1-0.20230524175051-ec119421bb97/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= | ||||
| github.com/sajari/fuzzy v1.0.0 h1:+FmwVvJErsd0d0hAPlj4CxqxUtQY/fOoY0DwX4ykpRY= | ||||
| github.com/sajari/fuzzy v1.0.0/go.mod h1:OjYR6KxoWOe9+dOlXeiCJd4dIbED4Oo8wpS89o0pwOo= | ||||
| github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= | ||||
| @@ -43,10 +49,9 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO | ||||
| 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/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= | ||||
| github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= | ||||
| github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0= | ||||
| github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= | ||||
| golang.org/x/exp v0.0.0-20240110193028-0dcbfd608b1e h1:723BNChdd0c2Wk6WOE320qGBiPtYx0F0Bbm1kriShfE= | ||||
| golang.org/x/exp v0.0.0-20240110193028-0dcbfd608b1e/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI= | ||||
| golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= | ||||
| golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= | ||||
| golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
|   | ||||
							
								
								
									
										26
									
								
								internal/exp/maps.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								internal/exp/maps.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | ||||
| // This package is intended as a place to copy functions from the | ||||
| // golang.org/x/exp package. Copying these functions allows us to rely on our | ||||
| // own code instead of an external package that may change unpredictably in the | ||||
| // future. | ||||
| // | ||||
| // It also prevents problems with transitive dependencies whereby a | ||||
| // package that imports Task (and therefore our version of golang.org/x/exp) | ||||
| // cannot import a different version of golang.org/x/exp. | ||||
| // | ||||
| // Finally, it serves as a place to track functions that may be able to be | ||||
| // removed in the future if they are added to the standard library. This is also | ||||
| // why this package is under the internal directory since these functions are | ||||
| // not intended to be used outside of Task. | ||||
| package exp | ||||
|  | ||||
| import "cmp" | ||||
|  | ||||
| // Keys is a copy of https://pkg.go.dev/golang.org/x/exp@v0.0.0-20240103183307-be819d1f06fc/maps#Keys. | ||||
| // This is not yet included in the standard library. See https://github.com/golang/go/issues/61538. | ||||
| func Keys[K cmp.Ordered, V any](m map[K]V) []K { | ||||
| 	var keys []K | ||||
| 	for key := range m { | ||||
| 		keys = append(keys, key) | ||||
| 	} | ||||
| 	return keys | ||||
| } | ||||
| @@ -5,12 +5,12 @@ import ( | ||||
| 	"io" | ||||
| 	"os" | ||||
| 	"path" | ||||
| 	"slices" | ||||
| 	"strings" | ||||
| 	"text/tabwriter" | ||||
|  | ||||
| 	"github.com/joho/godotenv" | ||||
| 	"github.com/spf13/pflag" | ||||
| 	"golang.org/x/exp/slices" | ||||
|  | ||||
| 	"github.com/go-task/task/v3/internal/logger" | ||||
| ) | ||||
|   | ||||
| @@ -4,11 +4,11 @@ import ( | ||||
| 	"bufio" | ||||
| 	"io" | ||||
| 	"os" | ||||
| 	"slices" | ||||
| 	"strconv" | ||||
| 	"strings" | ||||
|  | ||||
| 	"github.com/fatih/color" | ||||
| 	"golang.org/x/exp/slices" | ||||
|  | ||||
| 	"github.com/go-task/task/v3/errors" | ||||
| 	"github.com/go-task/task/v3/internal/term" | ||||
|   | ||||
| @@ -1,26 +1,26 @@ | ||||
| package omap | ||||
|  | ||||
| import ( | ||||
| 	"cmp" | ||||
| 	"fmt" | ||||
| 	"slices" | ||||
|  | ||||
| 	"golang.org/x/exp/constraints" | ||||
| 	"golang.org/x/exp/maps" | ||||
| 	"golang.org/x/exp/slices" | ||||
| 	"gopkg.in/yaml.v3" | ||||
|  | ||||
| 	"github.com/go-task/task/v3/internal/deepcopy" | ||||
| 	"github.com/go-task/task/v3/internal/exp" | ||||
| ) | ||||
|  | ||||
| // An OrderedMap is a wrapper around a regular map that maintains an ordered | ||||
| // list of the map's keys. This allows you to run deterministic and ordered | ||||
| // operations on the map such as printing/serializing/iterating. | ||||
| type OrderedMap[K constraints.Ordered, V any] struct { | ||||
| type OrderedMap[K cmp.Ordered, V any] struct { | ||||
| 	s []K | ||||
| 	m map[K]V | ||||
| } | ||||
|  | ||||
| // New will create a new OrderedMap of the given type and return it. | ||||
| func New[K constraints.Ordered, V any]() OrderedMap[K, V] { | ||||
| func New[K cmp.Ordered, V any]() OrderedMap[K, V] { | ||||
| 	return OrderedMap[K, V]{ | ||||
| 		s: make([]K, 0), | ||||
| 		m: make(map[K]V), | ||||
| @@ -29,14 +29,14 @@ func New[K constraints.Ordered, V any]() OrderedMap[K, V] { | ||||
|  | ||||
| // FromMap will create a new OrderedMap from the given map. Since Golang maps | ||||
| // are unordered, the order of the created OrderedMap will be random. | ||||
| func FromMap[K constraints.Ordered, V any](m map[K]V) OrderedMap[K, V] { | ||||
| func FromMap[K cmp.Ordered, V any](m map[K]V) OrderedMap[K, V] { | ||||
| 	om := New[K, V]() | ||||
| 	om.m = m | ||||
| 	om.s = maps.Keys(m) | ||||
| 	om.s = exp.Keys(m) | ||||
| 	return om | ||||
| } | ||||
|  | ||||
| func FromMapWithOrder[K constraints.Ordered, V any](m map[K]V, order []K) OrderedMap[K, V] { | ||||
| func FromMapWithOrder[K cmp.Ordered, V any](m map[K]V, order []K) OrderedMap[K, V] { | ||||
| 	om := New[K, V]() | ||||
| 	if len(m) != len(order) { | ||||
| 		panic("length of map and order must be equal") | ||||
|   | ||||
| @@ -43,13 +43,7 @@ func TestSortFunc(t *testing.T) { | ||||
| 	om.Set(1, "one") | ||||
| 	om.Set(2, "two") | ||||
| 	om.SortFunc(func(a, b int) int { | ||||
| 		if a < b { | ||||
| 			return 1 | ||||
| 		} | ||||
| 		if a > b { | ||||
| 			return -1 | ||||
| 		} | ||||
| 		return 0 | ||||
| 		return b - a | ||||
| 	}) | ||||
| 	assert.Equal(t, []int{3, 2, 1}, om.s) | ||||
| } | ||||
|   | ||||
| @@ -1,11 +1,11 @@ | ||||
| package slicesext | ||||
|  | ||||
| import ( | ||||
| 	"golang.org/x/exp/constraints" | ||||
| 	"golang.org/x/exp/slices" | ||||
| 	"cmp" | ||||
| 	"slices" | ||||
| ) | ||||
|  | ||||
| func UniqueJoin[T constraints.Ordered](ss ...[]T) []T { | ||||
| func UniqueJoin[T cmp.Ordered](ss ...[]T) []T { | ||||
| 	var length int | ||||
| 	for _, s := range ss { | ||||
| 		length += len(s) | ||||
|   | ||||
| @@ -2,11 +2,10 @@ package templater | ||||
|  | ||||
| import ( | ||||
| 	"bytes" | ||||
| 	"maps" | ||||
| 	"strings" | ||||
| 	"text/template" | ||||
|  | ||||
| 	"golang.org/x/exp/maps" | ||||
|  | ||||
| 	"github.com/go-task/task/v3/taskfile/ast" | ||||
| ) | ||||
|  | ||||
|   | ||||
							
								
								
									
										2
									
								
								task.go
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								task.go
									
									
									
									
									
								
							| @@ -6,6 +6,7 @@ import ( | ||||
| 	"io" | ||||
| 	"os" | ||||
| 	"runtime" | ||||
| 	"slices" | ||||
| 	"sync" | ||||
| 	"sync/atomic" | ||||
| 	"time" | ||||
| @@ -24,7 +25,6 @@ import ( | ||||
| 	"github.com/go-task/task/v3/taskfile/ast" | ||||
|  | ||||
| 	"github.com/sajari/fuzzy" | ||||
| 	"golang.org/x/exp/slices" | ||||
| 	"golang.org/x/sync/errgroup" | ||||
| ) | ||||
|  | ||||
|   | ||||
| @@ -5,11 +5,11 @@ import ( | ||||
| 	"path/filepath" | ||||
| 	"strings" | ||||
|  | ||||
| 	"gopkg.in/yaml.v3" | ||||
|  | ||||
| 	"github.com/go-task/task/v3/internal/execext" | ||||
| 	"github.com/go-task/task/v3/internal/filepathext" | ||||
| 	omap "github.com/go-task/task/v3/internal/omap" | ||||
|  | ||||
| 	"gopkg.in/yaml.v3" | ||||
| ) | ||||
|  | ||||
| // Include represents information about included taskfiles | ||||
|   | ||||
		Reference in New Issue
	
	Block a user