From 3da30024bdd4ea6724734acdd523ea2f945eee87 Mon Sep 17 00:00:00 2001 From: "Jose F. Rives Lirola" Date: Sun, 2 Feb 2025 09:23:13 +0100 Subject: [PATCH 1/6] build(readme-tasks): Add a build task for compile a static binary version for linux --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index e5c7131..691cb6e 100644 --- a/README.md +++ b/README.md @@ -180,3 +180,11 @@ Directory: doc ```sh ./build.sh ``` + +## build:linux-musl + +Build the static binary for linux + +``` +CC=/usr/local/musl/bin/musl-gcc go build --ldflags '-linkmode external -extldflags "-static"' ./cmd/xc +``` From f46cc31ebed12942fdc4e1ba974d351630593fbd Mon Sep 17 00:00:00 2001 From: "Jose F. Rives Lirola" Date: Mon, 24 Feb 2025 14:29:01 +0100 Subject: [PATCH 2/6] feat(tasks): Add new attribute hidden: true to hide the task in the interactive list --- README.md | 1 + cmd/xc/interactive.go | 4 ++++ doc/content/task-syntax/hidden.md | 20 ++++++++++++++++++++ doc/content/task-syntax/index.md | 1 + models/models.go | 1 + parser/parser.go | 6 ++++++ 6 files changed, 33 insertions(+) create mode 100644 doc/content/task-syntax/hidden.md diff --git a/README.md b/README.md index 691cb6e..a4eec3f 100644 --- a/README.md +++ b/README.md @@ -185,6 +185,7 @@ Directory: doc Build the static binary for linux + ``` CC=/usr/local/musl/bin/musl-gcc go build --ldflags '-linkmode external -extldflags "-static"' ./cmd/xc ``` diff --git a/cmd/xc/interactive.go b/cmd/xc/interactive.go index 2993f6e..9d659c7 100644 --- a/cmd/xc/interactive.go +++ b/cmd/xc/interactive.go @@ -109,6 +109,10 @@ func (m model) View() string { func interactivePicker(ctx context.Context, tasks []models.Task, dir string) error { var items []list.Item for _, t := range tasks { + // Skip hidden tasks + if t.Hidden { + continue + } items = append(items, taskItem{t}) } l := list.New(items, itemDelegate{}, listItemWidth, listItemHeight+len(tasks)) diff --git a/doc/content/task-syntax/hidden.md b/doc/content/task-syntax/hidden.md new file mode 100644 index 0000000..de580a3 --- /dev/null +++ b/doc/content/task-syntax/hidden.md @@ -0,0 +1,20 @@ +--- +title: "Hidden tasks" +description: +linkTitle: "Hidden tasks" +menu: { main: { parent: 'task-syntax', weight: 10 } } +--- + +## How to hide a task in the list + +When `xc` is run without any arguments, it lists all the tasks available in the project. +However, sometimes you may want to hide a task from this list, while still allowing it to be run. + +To hide a task, you can set the `hidden` attribute to `true`. + +```markdown +### usefull-task-but-hidden + +hidden: true +``` + diff --git a/doc/content/task-syntax/index.md b/doc/content/task-syntax/index.md index ea2efae..62fe814 100644 --- a/doc/content/task-syntax/index.md +++ b/doc/content/task-syntax/index.md @@ -19,6 +19,7 @@ linkTitle: "Task Syntax" - [Environment Variables](/task-syntax/environment-variables/) - [Inputs](/task-syntax/inputs/) - [Interactive](/task-syntax/interactive/) + - [Hidden](/task-syntax/hidden/) ### Example diff --git a/models/models.go b/models/models.go index 09dbb68..66aeb90 100644 --- a/models/models.go +++ b/models/models.go @@ -19,6 +19,7 @@ type Task struct { RequiredBehaviour RequiredBehaviour DepsBehaviour DepsBehaviour Interactive bool + Hidden bool } // Display writes a Task as Markdown. diff --git a/parser/parser.go b/parser/parser.go index e18f355..e4844ee 100644 --- a/parser/parser.go +++ b/parser/parser.go @@ -139,6 +139,8 @@ const ( // if it is, then logs are not prefixed and the stdout/stderr are passed directly // from the OS AttributeTypeInteractive + // AttribuyteTypeHidden indicates that the task should not be displayed in the list + AttributeTypeHidden ) var attMap = map[string]AttributeType{ @@ -153,6 +155,7 @@ var attMap = map[string]AttributeType{ "rundeps": AttributeTypeRunDeps, "rundependencies": AttributeTypeRunDeps, "interactive": AttributeTypeInteractive, + "hidden": AttributeTypeHidden, } func (p *parser) parseAttribute() (bool, error) { @@ -203,6 +206,9 @@ func (p *parser) parseAttribute() (bool, error) { case AttributeTypeInteractive: s := strings.Trim(rest, trimValues) p.currTask.Interactive = s == "true" + case AttributeTypeHidden: + s := strings.Trim(rest, trimValues) + p.currTask.Hidden = s == "true" } p.scan() return true, nil From d9e160a3f50322b2d42fabdfac9f4fddcfd479a7 Mon Sep 17 00:00:00 2001 From: "Jose F. Rives Lirola" Date: Mon, 24 Feb 2025 14:35:04 +0100 Subject: [PATCH 3/6] build(static): Add static compilation by default --- .goreleaser.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.goreleaser.yml b/.goreleaser.yml index 51d74e3..1374493 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -4,6 +4,7 @@ builds: - main: ./cmd/xc id: xc binary: xc + buildmode: "c-archive" goos: - darwin - linux From 30f2a6103fa0908f956fc88120684d2ebef264fe Mon Sep 17 00:00:00 2001 From: "Jose F. Rives Lirola" Date: Mon, 24 Feb 2025 14:43:18 +0100 Subject: [PATCH 4/6] build(dependencies): Update dependencies --- go.mod | 2 +- go.sum | 14 +------------- 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/go.mod b/go.mod index 3236905..037c7e4 100644 --- a/go.mod +++ b/go.mod @@ -8,6 +8,7 @@ require ( github.com/charmbracelet/lipgloss v0.7.1 github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 github.com/posener/complete/v2 v2.0.1-alpha.13 + golang.org/x/term v0.8.0 mvdan.cc/sh/v3 v3.7.0 ) @@ -30,6 +31,5 @@ require ( github.com/sahilm/fuzzy v0.1.0 // indirect golang.org/x/sync v0.2.0 // indirect golang.org/x/sys v0.8.0 // indirect - golang.org/x/term v0.8.0 // indirect golang.org/x/text v0.3.8 // indirect ) diff --git a/go.sum b/go.sum index 7309751..2c2c281 100644 --- a/go.sum +++ b/go.sum @@ -13,7 +13,6 @@ github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81/go.mod h1:Yyn github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= github.com/frankban/quicktest v1.14.5 h1:dfYrrRyLtiqT9GyKXgdh+k4inNeTvmGbuSgZ3lx3GhA= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= @@ -26,6 +25,7 @@ github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+l github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98= @@ -54,28 +54,18 @@ github.com/posener/script v1.1.5/go.mod h1:Rg3ijooqulo05aGLyGsHoLmIOUzHUVK19WVgr github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.10.1-0.20230524175051-ec119421bb97 h1:3RPlVWzZ/PDqmVuf/FKHARG5EMid/tl7cv54Sw/QRVY= github.com/sahilm/fuzzy v0.1.0 h1:FzWGaw2Opqyu+794ZQ9SYifWv2EIXpwP4q8dY1kDAwI= github.com/sahilm/fuzzy v0.1.0/go.mod h1:VFvziUEIMCrT6A6tw2RFIXPXXmzXbOsSHF0DOI8ZK9Y= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= -golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI= golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.3.0 h1:w8ZOecv6NaNa/zC8944JTU3vz4u6Lagfk4RPQxv92NQ= -golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.3.0 h1:qoo4akIqOcDME5bhc/NgxUdovd6BSS2uMsVjB56q1xI= -golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= -golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw= -golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/text v0.3.8 h1:nAL+RVCQ9uMn3vJZbV+MRnydTJFPf8qqY42YiA6MrqY= @@ -83,7 +73,5 @@ golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -mvdan.cc/sh/v3 v3.6.0 h1:gtva4EXJ0dFNvl5bHjcUEvws+KRcDslT8VKheTYkbGU= -mvdan.cc/sh/v3 v3.6.0/go.mod h1:U4mhtBLZ32iWhif5/lD+ygy1zrgaQhUu+XFy7C8+TTA= mvdan.cc/sh/v3 v3.7.0 h1:lSTjdP/1xsddtaKfGg7Myu7DnlHItd3/M2tomOcNNBg= mvdan.cc/sh/v3 v3.7.0/go.mod h1:K2gwkaesF/D7av7Kxl0HbF5kGOd2ArupNTX3X44+8l8= From 23d55a11a91fa69978ec1724f735217fad6a7500 Mon Sep 17 00:00:00 2001 From: "Jose F. Rives Lirola" Date: Mon, 24 Feb 2025 16:01:38 +0100 Subject: [PATCH 5/6] build(build): Add parameters for static compilation --- .goreleaser.yml | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/.goreleaser.yml b/.goreleaser.yml index 1374493..ceaf6a9 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -4,22 +4,31 @@ builds: - main: ./cmd/xc id: xc binary: xc - buildmode: "c-archive" goos: - darwin - linux - windows goarch: - 386 + - arm - amd64 - arm64 - - arm goarm: - - 6 - 7 + - 6 + ldflags: + - -s -w + gcflags: + - " -l -l -l" ignore: - goos: darwin goarch: 386 + - goos: windows + goarch: 386 + - goos: windows + goarch: arm + - goos: windows + goarch: arm64 - goos: linux goarch: arm goarm: 6 @@ -38,9 +47,9 @@ signs: - artifacts: checksum args: ["--batch", "-u", "{{ .Env.GPG_FINGERPRINT }}", "--output", "${signature}", "--detach-sign", "${artifact}"] archives: - - format: binary + - formats: [ 'binary' ] id: xc - - format: tar.gz + - formats: ['tar.gz'] id: brew checksum: name_template: 'checksums.txt' From 62fe7c40dab0e2874d560bc14a1d4f5addc86126 Mon Sep 17 00:00:00 2001 From: "Jose F. Rives Lirola" Date: Mon, 24 Feb 2025 16:18:16 +0100 Subject: [PATCH 6/6] build(goreleaser): Fix static binary compilation --- .goreleaser.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.goreleaser.yml b/.goreleaser.yml index ceaf6a9..66c1517 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -20,6 +20,8 @@ builds: - -s -w gcflags: - " -l -l -l" + env: + - CGO_ENABLED=0 ignore: - goos: darwin goarch: 386