diff --git a/.fpm b/.fpm new file mode 100644 index 0000000..747df4e --- /dev/null +++ b/.fpm @@ -0,0 +1,6 @@ +-s dir +--name i3-wallpaper-manager +--license agpl3 +--description "Wallpaper manager for i3" +--url "https://gitnet.fr/deblan/i3-wallpaper-manager" +--maintainer "Simon Vieille " diff --git a/.gitignore b/.gitignore index d27ce0e..d5ed0b9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /i3-wallpaper-manager /config.yaml +/build diff --git a/.woodpecker/build.yml b/.woodpecker/build.yml new file mode 100644 index 0000000..2a09ff7 --- /dev/null +++ b/.woodpecker/build.yml @@ -0,0 +1,54 @@ +when: + - event: [pull_request, tag] + - event: push + branch: + - ${CI_REPO_DEFAULT_BRANCH} + - develop + - feature/* + - release/* + - renovate/* + +variables: + - &golang_image 'golang:1.22' + +depends_on: + - test + +steps: + "Add vendor": + image: *golang_image + commands: + - go mod vendor + + "Run build": + image: *golang_image + commands: + - make + + "Test packaging": + image: deblan/fpm-packager + commands: + - VERSION=test + - ./bin/build-debs.sh "$VERSION" + - ./bin/rename-builds.sh "$VERSION" + when: + event: [push, pull_request] + + "Create packages": + image: deblan/fpm-packager + commands: + - VERSION=${CI_COMMIT_TAG/v//} + - ./bin/build-debs.sh "$VERSION" + - ./bin/rename-builds.sh "$VERSION" + when: + event: [tag] + + "Publish": + image: plugins/gitea-release + settings: + api_key: + from_secret: gitnet_api_key + base_url: https://gitnet.fr + files: ./build/* + when: + event: [tag] diff --git a/.woodpecker/test.yml b/.woodpecker/test.yml new file mode 100644 index 0000000..09fb0ed --- /dev/null +++ b/.woodpecker/test.yml @@ -0,0 +1,15 @@ +when: + - event: [pull_request, tag] + - event: push + branch: + - ${CI_REPO_DEFAULT_BRANCH} + - develop + - feature/* + - release/* + - renovate/* + +steps: + "Check sehll scripts": + image: pipelinecomponents/shellcheck + commands: + - shellcheck ./bin/*.sh diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..309fe8a --- /dev/null +++ b/Makefile @@ -0,0 +1,56 @@ +CGO_ENABLED = 0 +DIR = ./build + +GO_ARCH_AMD = amd64 +GO_ARCH_ARM = arm64 + +GO_OS_WIN = windows +GO_OS_DARWIN = darwin +GO_OS_LINUX = linux + +EXECUTABLE = i3-wallpaper-manager + +BIN_LINUX_AMD64 = $(DIR)/$(EXECUTABLE)-linux-$(GO_ARCH_AMD) +BIN_LINUX_ARM64 = $(DIR)/$(EXECUTABLE)-linux-$(GO_ARCH_ARM) + +CC = go build +CFLAGS = -trimpath +LDFLAGS = all=-w -s +GCFLAGS = all= +ASMFLAGS = all= + +.PHONY: all +all: linux + +.PHONY: linux +linux: $(BIN_LINUX_AMD64) $(BIN_LINUX_ARM64) + chmod +x $(BIN_LINUX_ARM64) + chmod +x $(BIN_LINUX_AMD64) + +.PHONY: $(BIN_LINUX_AMD64) +$(BIN_LINUX_AMD64): + GO111MODULE=$(GOMOD) \ + GOARCH=$(GO_ARCH_AMD) \ + GOOS=$(GO_OS_LINUX) \ + CGO_ENABLED=$(CGO_ENABLED) \ + $(CC) $(CFLAGS) -ldflags="$(LDFLAGS)" -gcflags="$(GCFLAGS)" -asmflags="$(ASMFLAGS)" \ + -o $(BIN_LINUX_AMD64) . + +.PHONY: $(BIN_LINUX_ARM64) +$(BIN_LINUX_ARM64): + GO111MODULE=$(GOMOD) \ + GOARCH=$(GO_ARCH_ARM) \ + GOOS=$(GO_OS_LINUX) \ + CGO_ENABLED=$(CGO_ENABLED) \ + $(CC) $(CFLAGS) -ldflags="$(LDFLAGS)" -gcflags="$(GCFLAGS)" -asmflags="$(ASMFLAGS)" \ + -o $(BIN_LINUX_ARM64) . + +.PHONY: clean +clean: + rm -rf $(DIR)/* + +tool-gofumpt: + which golangci-lint > /dev/null 2>&1 || go install mvdan.cc/gofumpt@latest + +fmt: tool-gofumpt + gofumpt -w --extra . diff --git a/bin/build-debs.sh b/bin/build-debs.sh new file mode 100755 index 0000000..a4bf1b2 --- /dev/null +++ b/bin/build-debs.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +VERSION="$1" + +for ARCH in amd64 arm64; do + fpm -t deb -p "build/i3-wallpaper-manager-$VERSION-$ARCH.deb" \ + --architecture $ARCH --version "$VERSION" \ + "build/i3-wallpaper-manager-linux-$ARCH=/usr/bin/i3wp" \ +done diff --git a/bin/rename-builds.sh b/bin/rename-builds.sh new file mode 100755 index 0000000..98b9ae1 --- /dev/null +++ b/bin/rename-builds.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +VERSION="$1" + +for ARCH in amd64 arm64; do + mv -v \ + "build/i3-wallpaper-manager-linux-${ARCH}" \ + "build/i3-wallpaper-manager-${VERSION}-linux-${ARCH}" +done diff --git a/main.go b/main.go index 0f252b6..44161f5 100644 --- a/main.go +++ b/main.go @@ -66,7 +66,7 @@ func main() { cmd := exec.Command("feh", args...) cmd.Env = os.Environ() - log.Printf("[DEBUG] %s", cmd.String()) + log.Printf("[UPDATE] %s", cmd.String()) if err := cmd.Run(); err != nil { log.Printf("[ERROR] %s", err.Error())