-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1 from chainguard-dev/add_logic
add initial implementation
- Loading branch information
Showing
18 changed files
with
4,106 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
# Copyright 2024 Chainguard, Inc. | ||
# SPDX-License-Identifier: Apache-2.0 | ||
|
||
name: ci | ||
|
||
on: | ||
push: | ||
branches: | ||
- main | ||
pull_request: | ||
|
||
|
||
jobs: | ||
ci: | ||
runs-on: ubuntu-latest | ||
|
||
strategy: | ||
matrix: | ||
go_version: | ||
- '1.23' | ||
|
||
steps: | ||
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | ||
|
||
- uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0 | ||
with: | ||
go-version: ${{ matrix.go_version }} | ||
check-latest: true | ||
|
||
- run: | | ||
make test |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
ifeq (,$(shell echo $$DEBUG)) | ||
else | ||
SHELL = bash -x | ||
endif | ||
|
||
GIT_TAG ?= dirty-tag | ||
GIT_VERSION ?= $(shell git describe --tags --always --dirty) | ||
GIT_HASH ?= $(shell git rev-parse HEAD) | ||
GIT_TREESTATE = "clean" | ||
DATE_FMT = +%Y-%m-%dT%H:%M:%SZ | ||
SOURCE_DATE_EPOCH ?= $(shell git log -1 --no-show-signature --pretty=%ct) | ||
ifdef SOURCE_DATE_EPOCH | ||
BUILD_DATE ?= $(shell date -u -d "@$(SOURCE_DATE_EPOCH)" "$(DATE_FMT)" 2>/dev/null || date -u -r "$(SOURCE_DATE_EPOCH)" "$(DATE_FMT)" 2>/dev/null || date -u "$(DATE_FMT)") | ||
else | ||
BUILD_DATE ?= $(shell date "$(DATE_FMT)") | ||
endif | ||
|
||
SRCS = $(shell find cmd -iname "*.go") $(shell find pkg -iname "*.go") | ||
|
||
# Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set) | ||
ifeq (,$(shell go env GOBIN)) | ||
GOBIN=$(shell go env GOPATH)/bin | ||
else | ||
GOBIN=$(shell go env GOBIN) | ||
endif | ||
|
||
LDFLAGS=-buildid= -X sigs.k8s.io/release-utils/version.gitVersion=$(GIT_VERSION) \ | ||
-X sigs.k8s.io/release-utils/version.gitCommit=$(GIT_HASH) \ | ||
-X sigs.k8s.io/release-utils/version.gitTreeState=$(GIT_TREESTATE) \ | ||
-X sigs.k8s.io/release-utils/version.buildDate=$(BUILD_DATE) | ||
|
||
PLATFORMS=darwin linux | ||
ARCHITECTURES=amd64 | ||
GOLANGCI_LINT_DIR = $(shell pwd)/bin | ||
GOLANGCI_LINT_BIN = $(GOLANGCI_LINT_DIR)/golangci-lint | ||
|
||
GO ?= go | ||
TEST_FLAGS ?= -v -cover | ||
|
||
.PHONY: all lint test clean cargobump cross | ||
all: clean lint test cargobump | ||
|
||
clean: | ||
rm -rf cargobump | ||
|
||
cargobump: | ||
CGO_ENABLED=0 $(GO) build -trimpath -ldflags "$(LDFLAGS)" -o $@ . | ||
|
||
.PHONY: cross | ||
cross: | ||
$(foreach GOOS, $(PLATFORMS),\ | ||
$(foreach GOARCH, $(ARCHITECTURES), $(shell export GOOS=$(GOOS); export GOARCH=$(GOARCH); \ | ||
$(GO) build -trimpath -ldflags "$(LDFLAGS)" -o cargobump-$(GOOS)-$(GOARCH) .; \ | ||
shasum -a 256 cargobump-$(GOOS)-$(GOARCH) > cargobump-$(GOOS)-$(GOARCH).sha256 ))) \ | ||
|
||
.PHONY: test | ||
test: | ||
$(GO) vet ./... | ||
$(GO) test ${TEST_FLAGS} ./... | ||
|
||
golangci-lint: | ||
rm -f $(GOLANGCI_LINT_BIN) || : | ||
set -e ;\ | ||
GOBIN=$(GOLANGCI_LINT_DIR) $(GO) install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.55.2 ;\ | ||
|
||
lint: golangci-lint | ||
$(GOLANGCI_LINT_BIN) run -n |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
# cargobump | ||
|
||
Rust tool to declaratively bump dependencies using cargo. | ||
|
||
# Usage | ||
|
||
The idea is that there are some `packages` that should be applied to the upstream | ||
Cargo.lock file. You can specify these via `--packages` flag, or via | ||
`--bump-file`. | ||
|
||
## Specifying Dependencies to be patched | ||
|
||
You can specify the patches that should be applied two ways. They are mutually | ||
exclusive, so you can only specify one of them at the time. | ||
|
||
### --packages flag | ||
|
||
You can specify patches via `--packages` flag by encoding them | ||
(similarly to gobump) in the following format: | ||
|
||
```shell | ||
--packages="<name@version[@scope[@type]]> <name...>" | ||
``` | ||
|
||
|
||
|
||
### --bump-file flag | ||
|
||
You can specify a yaml file that contains the patches, which is the preferred | ||
way, because it's less error prone, and allows for inline comments to keep track | ||
of which patches are for which CVEs. | ||
|
||
An example yaml file looks like this: | ||
```yaml | ||
patches: | ||
# CVE-2023-34062 | ||
- name: tokio | ||
version: 1.0.39 | ||
# CVE-2023-5072 | ||
- name: chrono | ||
version: "20231013" | ||
``` | ||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,113 @@ | ||
package cargobump | ||
|
||
import ( | ||
"fmt" | ||
"log/slog" | ||
"os" | ||
"path/filepath" | ||
"strings" | ||
|
||
"chainguard.dev/apko/pkg/log" | ||
"github.com/chainguard-dev/cargobump/pkg" | ||
"github.com/chainguard-dev/cargobump/pkg/parser" | ||
"github.com/chainguard-dev/cargobump/pkg/types" | ||
charmlog "github.com/charmbracelet/log" | ||
"github.com/spf13/cobra" | ||
"sigs.k8s.io/release-utils/version" | ||
) | ||
|
||
type rootCLIFlags struct { | ||
packages string | ||
bumpFile string | ||
cargoRoot string | ||
} | ||
|
||
var rootFlags rootCLIFlags | ||
|
||
func New() *cobra.Command { | ||
var logPolicy []string | ||
var level log.CharmLogLevel | ||
|
||
cmd := &cobra.Command{ | ||
Use: "cargobump <file-to-bump>", | ||
Short: "cargobump cli", | ||
Args: cobra.NoArgs, | ||
PersistentPreRunE: func(cmd *cobra.Command, args []string) error { | ||
out, err := log.Writer(logPolicy) | ||
if err != nil { | ||
return fmt.Errorf("failed to create log writer: %w", err) | ||
} | ||
slog.SetDefault(slog.New(charmlog.NewWithOptions(out, charmlog.Options{ReportTimestamp: true, Level: charmlog.Level(level)}))) | ||
|
||
return nil | ||
}, | ||
|
||
// Uncomment the following line if your bare application | ||
// has an action associated with it: | ||
RunE: func(cmd *cobra.Command, args []string) error { | ||
if rootFlags.packages == "" && rootFlags.bumpFile == "" { | ||
return fmt.Errorf("no packages or bump file provides, use --packages/--bump-file") | ||
} | ||
|
||
if rootFlags.bumpFile != "" && rootFlags.packages != "" { | ||
return fmt.Errorf("use either --packages or --bump-file") | ||
} | ||
var file *os.File | ||
parse := parser.NewParser() | ||
var patches map[string]*types.Package | ||
if rootFlags.bumpFile != "" { | ||
var err error | ||
file, err = os.Open(rootFlags.bumpFile) | ||
if err != nil { | ||
return fmt.Errorf("failed reading file: %w", err) | ||
} | ||
defer file.Close() | ||
patches, err = parse.ParseBumpFile(file) | ||
if err != nil { | ||
return fmt.Errorf("failed to parse the bump file: %w", err) | ||
} | ||
} else { | ||
ps := strings.Split(rootFlags.packages, " ") | ||
for _, pkg := range ps { | ||
parts := strings.Split(pkg, "@") | ||
if len(parts) != 2 { | ||
return fmt.Errorf("Error: Invalid package format. Each package should be in the format <package@version>. Usage: cargobump --packages=\"<package1@version> <package2@version> ...\"") | ||
} | ||
patches[parts[0]] = &types.Package{ | ||
Name: parts[0], | ||
Version: parts[1], | ||
} | ||
} | ||
} | ||
|
||
cargoLockFile, err := os.Open(filepath.Join(rootFlags.cargoRoot, "Cargo.lock")) | ||
if err != nil { | ||
return fmt.Errorf("failed reading file: %w", err) | ||
} | ||
defer cargoLockFile.Close() | ||
|
||
pkgs, err := parse.ParseCargoLock(cargoLockFile) | ||
if err != nil { | ||
return fmt.Errorf("failed to parse Cargo.lock file: %w", err) | ||
} | ||
|
||
if err = pkg.Update(patches, pkgs, rootFlags.cargoRoot); err != nil { | ||
return fmt.Errorf("failed to parse the pom file: %w", err) | ||
} | ||
|
||
return nil | ||
}, | ||
} | ||
cmd.PersistentFlags().StringSliceVar(&logPolicy, "log-policy", []string{"builtin:stderr"}, "log policy (e.g. builtin:stderr, /tmp/log/foo)") | ||
cmd.PersistentFlags().Var(&level, "log-level", "log level (e.g. debug, info, warn, error)") | ||
|
||
cmd.AddCommand(version.WithFont("starwars")) | ||
|
||
cmd.DisableAutoGenTag = true | ||
|
||
flagSet := cmd.Flags() | ||
flagSet.StringVar(&rootFlags.cargoRoot, "cargoroot", "", "path to the Cargo.lock root") | ||
flagSet.StringVar(&rootFlags.packages, "packages", "", "A space-separated list of dependencies to update in form package@version") | ||
flagSet.StringVar(&rootFlags.bumpFile, "bump-file", "", "The input file to read dependencies to bump from") | ||
return cmd | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
module github.com/chainguard-dev/cargobump | ||
|
||
go 1.23 | ||
|
||
require ( | ||
chainguard.dev/apko v0.17.0 | ||
github.com/BurntSushi/toml v1.4.0 | ||
github.com/charmbracelet/log v0.4.0 | ||
github.com/samber/lo v1.47.0 | ||
github.com/spf13/cobra v1.8.1 | ||
github.com/stretchr/testify v1.9.0 | ||
golang.org/x/mod v0.17.0 | ||
golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da | ||
gopkg.in/yaml.v3 v3.0.1 | ||
sigs.k8s.io/release-utils v0.8.4 | ||
) | ||
|
||
require ( | ||
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect | ||
github.com/charmbracelet/lipgloss v0.10.0 // indirect | ||
github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be // indirect | ||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect | ||
github.com/go-logfmt/logfmt v0.6.0 // indirect | ||
github.com/inconshreveable/mousetrap v1.1.0 // indirect | ||
github.com/kr/text v0.2.0 // indirect | ||
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect | ||
github.com/mattn/go-isatty v0.0.20 // indirect | ||
github.com/mattn/go-runewidth v0.0.15 // indirect | ||
github.com/muesli/reflow v0.3.0 // indirect | ||
github.com/muesli/termenv v0.15.2 // indirect | ||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect | ||
github.com/rivo/uniseg v0.4.7 // indirect | ||
github.com/rogpeppe/go-internal v1.12.0 // indirect | ||
github.com/spf13/pflag v1.0.5 // indirect | ||
golang.org/x/exp v0.0.0-20240112132812-db7319d0e0e3 // indirect | ||
golang.org/x/sys v0.22.0 // indirect | ||
golang.org/x/text v0.16.0 // indirect | ||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect | ||
) | ||
|
||
replace chainguard.dev/apko => chainguard.dev/apko v0.14.5 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
chainguard.dev/apko v0.14.5 h1:rRPvtCFBqId0mUah/dILeSANbtPS1T0NOV6O8mpW11Y= | ||
chainguard.dev/apko v0.14.5/go.mod h1:AdnTsyUzFkoL3UtL2wHiq/c7/2JGrz8PPVOQnnoHoVw= | ||
github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0= | ||
github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= | ||
github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= | ||
github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= | ||
github.com/charmbracelet/lipgloss v0.10.0 h1:KWeXFSexGcfahHX+54URiZGkBFazf70JNMtwg/AFW3s= | ||
github.com/charmbracelet/lipgloss v0.10.0/go.mod h1:Wig9DSfvANsxqkRsqj6x87irdy123SR4dOXlKa91ciE= | ||
github.com/charmbracelet/log v0.4.0 h1:G9bQAcx8rWA2T3pWvx7YtPTPwgqpk7D68BX21IRW8ZM= | ||
github.com/charmbracelet/log v0.4.0/go.mod h1:63bXt/djrizTec0l11H20t8FDSvA4CRZJ1KH22MdptM= | ||
github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be h1:J5BL2kskAlV9ckgEsNQXscjIaLiOYiZ75d4e94E6dcQ= | ||
github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be/go.mod h1:mk5IQ+Y0ZeO87b858TlA645sVcEcbiX6YqP98kt+7+w= | ||
github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= | ||
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= | ||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= | ||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||
github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= | ||
github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= | ||
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= | ||
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= | ||
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= | ||
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= | ||
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= | ||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= | ||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= | ||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= | ||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= | ||
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.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= | ||
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= | ||
github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= | ||
github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= | ||
github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= | ||
github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s= | ||
github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8= | ||
github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo= | ||
github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8= | ||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= | ||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||
github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= | ||
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= | ||
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= | ||
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= | ||
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= | ||
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= | ||
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= | ||
github.com/samber/lo v1.47.0 h1:z7RynLwP5nbyRscyvcD043DWYoOcYRv3mV8lBeqOCLc= | ||
github.com/samber/lo v1.47.0/go.mod h1:RmDH9Ct32Qy3gduHQuKJ3gW1fMHAnE/fAzQuf6He5cU= | ||
github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= | ||
github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= | ||
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/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= | ||
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= | ||
golang.org/x/exp v0.0.0-20240112132812-db7319d0e0e3 h1:hNQpMuAJe5CtcUqCXaWga3FHu+kQvCqcsoVaQgSV60o= | ||
golang.org/x/exp v0.0.0-20240112132812-db7319d0e0e3/go.mod h1:idGWGoKP1toJGkd5/ig9ZLuPcZBC3ewk7SzmH0uou08= | ||
golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= | ||
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= | ||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||
golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= | ||
golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= | ||
golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= | ||
golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= | ||
golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY= | ||
golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= | ||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | ||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | ||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= | ||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||
sigs.k8s.io/release-utils v0.8.4 h1:4QVr3UgbyY/d9p74LBhg0njSVQofUsAZqYOzVZBhdBw= | ||
sigs.k8s.io/release-utils v0.8.4/go.mod h1:m1bHfscTemQp+z+pLCZnkXih9n0+WukIUU70n6nFnU0= |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
package main | ||
|
||
import ( | ||
"context" | ||
"github.com/chainguard-dev/cargobump/cmd/cargobump" | ||
"log" | ||
"os" | ||
"os/signal" | ||
) | ||
|
||
func main() { | ||
ctx, done := signal.NotifyContext(context.Background(), os.Interrupt) | ||
defer done() | ||
|
||
if err := cargobump.New().ExecuteContext(ctx); err != nil { | ||
log.Fatalf("error during command execution: %v", err) | ||
} | ||
} |
Oops, something went wrong.