build: refactor makefile to be gnu compatible
All checks were successful
build and upload / build (push) Successful in 15s
All checks were successful
build and upload / build (push) Successful in 15s
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -7,3 +7,4 @@
|
||||
target
|
||||
.idea
|
||||
completions.*
|
||||
Makefile.config
|
||||
|
||||
62
Makefile
62
Makefile
@@ -1,42 +1,42 @@
|
||||
ifeq ($(CARGO_PKG_VERSION),)
|
||||
CARGO_PKG_VERSION := 0.0.0
|
||||
endif
|
||||
SHELL := /bin/sh
|
||||
|
||||
ifeq ($(APP_NAME),)
|
||||
APP_NAME := feddy
|
||||
endif
|
||||
PROJECT ?= $(shell grep "^name =" Cargo.toml | cut -d '"' -f 2)
|
||||
VERSION ?= $(shell grep "^version =" Cargo.toml | cut -d '"' -f 2)
|
||||
|
||||
build: clean
|
||||
-include Makefile.config
|
||||
|
||||
INSTALL ?= install
|
||||
INSTALL_PROGRAM ?= $(INSTALL) -m 755
|
||||
INSTALL_DATA ?= $(INSTALL) -m 644
|
||||
|
||||
.PHONY: build format rpm install uninstall
|
||||
|
||||
build:
|
||||
cargo build --release
|
||||
./target/release/$(APP_NAME) --generate=bash > completions.bash
|
||||
./target/release/$(APP_NAME) --generate=zsh > completions.zsh
|
||||
./target/release/$(APP_NAME) --generate=fish > completions.fish
|
||||
|
||||
clean:
|
||||
rm -f completions.bash
|
||||
rm -f completions.zsh
|
||||
rm -f completions.fish
|
||||
|
||||
format:
|
||||
cargo fmt --all
|
||||
|
||||
# PREFIX is environment variable, but if it is not set, then set default value
|
||||
ifeq ($(PREFIX),)
|
||||
PREFIX := /usr/local
|
||||
endif
|
||||
rpm:
|
||||
rm -rf $(HOME)/rpmbuild
|
||||
rpmdev-setuptree
|
||||
tar -czf $(HOME)/rpmbuild/SOURCES/$(PROJECT)-$(VERSION).tar.gz \
|
||||
--transform "s|^|$(PROJECT)-$(VERSION)/|" \
|
||||
data \
|
||||
src \
|
||||
Cargo.toml \
|
||||
Cargo.lock \
|
||||
configure \
|
||||
Makefile \
|
||||
README.md \
|
||||
LICENSE
|
||||
|
||||
cp $(PROJECT).spec $(HOME)/rpmbuild/SPECS/$(PROJECT).spec
|
||||
rpmbuild -ba $(HOME)/rpmbuild/SPECS/$(PROJECT).spec
|
||||
|
||||
install:
|
||||
install -d $(PREFIX)/bin/
|
||||
install -m 755 target/release/$(APP_NAME) $(PREFIX)/bin/
|
||||
install -d /usr/share/bash-completion/completions/
|
||||
install -m 644 completions.bash /usr/share/bash-completion/completions/$(APP_NAME)
|
||||
install -d /usr/share/zsh/site-functions/
|
||||
install -m 644 completions.zsh /usr/share/zsh/site-functions/_$(APP_NAME)
|
||||
install -d /usr/share/fish/vendor_completions.d/
|
||||
install -m 644 completions.fish /usr/share/fish/vendor_completions.d/$(APP_NAME).fish
|
||||
$(INSTALL) -d $(DESTDIR)$(bindir)
|
||||
$(INSTALL_PROGRAM) target/release/$(PROJECT) $(DESTDIR)$(bindir)/$(PROJECT)
|
||||
|
||||
uninstall:
|
||||
rm -f $(PREFIX)/bin/$(APP_NAME)
|
||||
rm -f /usr/share/bash-completion/completions/$(APP_NAME)
|
||||
rm -f /usr/share/zsh/site-functions/_$(APP_NAME)
|
||||
rm -f /usr/share/fish/vendor_completions.d/$(APP_NAME).fish
|
||||
rm -f $(DESTDIR)$(bindir)/$(PROJECT)
|
||||
102
cliff.toml
Normal file
102
cliff.toml
Normal file
@@ -0,0 +1,102 @@
|
||||
# git-cliff ~ configuration file
|
||||
# https://git-cliff.org/docs/configuration
|
||||
|
||||
[changelog]
|
||||
# changelog header
|
||||
header = """
|
||||
# Changelog\n
|
||||
All notable changes to this project will be documented in this file. See [conventional commits](https://www.conventionalcommits.org/) for commit guidelines.\n
|
||||
"""
|
||||
# template for the changelog body
|
||||
# https://keats.github.io/tera/docs/#introduction
|
||||
body = """
|
||||
{% macro print_commit(commit) -%}
|
||||
- {% if commit.scope %}*({{ commit.scope }})* {% endif %}\
|
||||
{% if commit.breaking %}[**breaking**] {% endif %}\
|
||||
{{ commit.message | upper_first }} - \
|
||||
([{{ commit.id | truncate(length=7, end="") }}]($REPO/commit/{{ commit.id }}))\
|
||||
{% endmacro -%}
|
||||
|
||||
{% if version %}\
|
||||
{% if previous.version %}\
|
||||
## [{{ version | trim_start_matches(pat="v") }}]\
|
||||
($REPO/-/compare/{{ previous.version }}...{{ version }}) - {{ timestamp | date(format="%Y-%m-%d") }}
|
||||
{% else %}\
|
||||
## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }}
|
||||
{% endif %}\
|
||||
{% else %}\
|
||||
## [unreleased]
|
||||
{% endif %}\
|
||||
|
||||
{% for group, commits in commits | group_by(attribute="group") %}
|
||||
### {{ group | striptags | trim | upper_first }}
|
||||
{% for commit in commits
|
||||
| filter(attribute="scope")
|
||||
| sort(attribute="scope") %}
|
||||
{{ self::print_commit(commit=commit) }}
|
||||
{%- endfor -%}
|
||||
{% raw %}\n{% endraw %}\
|
||||
{%- for commit in commits %}
|
||||
{%- if not commit.scope -%}
|
||||
{{ self::print_commit(commit=commit) }}
|
||||
{% endif -%}
|
||||
{% endfor -%}
|
||||
{% endfor %}\n
|
||||
"""
|
||||
# template for the changelog footer
|
||||
footer = """
|
||||
<!-- generated by git-cliff -->
|
||||
"""
|
||||
# remove the leading and trailing whitespace from the templates
|
||||
trim = true
|
||||
# postprocessors
|
||||
postprocessors = [
|
||||
{ pattern = '\$REPO', replace = "https://git.rawleenc.dev/rawleenc/feddy" }, # replace repository URL
|
||||
]
|
||||
|
||||
[git]
|
||||
# parse the commits based on https://www.conventionalcommits.org
|
||||
conventional_commits = true
|
||||
# filter out the commits that are not conventional
|
||||
filter_unconventional = true
|
||||
# process each line of a commit as an individual commit
|
||||
split_commits = false
|
||||
# regex for preprocessing the commit messages
|
||||
commit_preprocessors = [
|
||||
# { pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](https://github.com/orhun/git-cliff/issues/${2}))"}, # replace issue numbers
|
||||
]
|
||||
# regex for parsing and grouping commits
|
||||
commit_parsers = [
|
||||
{ message = "^feat", group = "<!-- 0 -->🚀 Features" },
|
||||
{ message = "^fix", group = "<!-- 1 -->🐛 Bug Fixes" },
|
||||
{ message = "^doc", group = "<!-- 3 -->📚 Documentation" },
|
||||
{ message = "^perf", group = "<!-- 4 -->⚡ Performance" },
|
||||
{ message = "^refactor\\(clippy\\)", skip = true },
|
||||
{ message = "^refactor", group = "<!-- 2 -->🚜 Refactor" },
|
||||
{ message = "^style", group = "<!-- 5 -->🎨 Styling" },
|
||||
{ message = "^test", group = "<!-- 6 -->🧪 Testing" },
|
||||
{ message = "^chore\\(release\\): prepare for", skip = true },
|
||||
{ message = "^chore\\(deps.*\\)", skip = true },
|
||||
{ message = "^chore\\(pr\\)", skip = true },
|
||||
{ message = "^chore\\(pull\\)", skip = true },
|
||||
{ message = "^chore|^ci", group = "<!-- 7 -->⚙️ Miscellaneous Tasks" },
|
||||
{ body = ".*security", group = "<!-- 8 -->🛡️ Security" },
|
||||
{ message = "^revert", group = "<!-- 9 -->◀️ Revert" },
|
||||
{ message = "^build", group = "<!-- 10 -->🔨 Build" },
|
||||
]
|
||||
# protect breaking changes from being skipped due to matching a skipping commit_parser
|
||||
protect_breaking_commits = false
|
||||
# filter out the commits that are not matched by commit parsers
|
||||
filter_commits = false
|
||||
# regex for matching git tags
|
||||
# tag_pattern = "v[0-9].*"
|
||||
# regex for skipping tags
|
||||
# skip_tags = "v0.1.0-beta.1"
|
||||
# regex for ignoring tags
|
||||
ignore_tags = ""
|
||||
# sort the tags topologically
|
||||
topo_order = false
|
||||
# sort the commits inside sections by oldest/newest order
|
||||
sort_commits = "newest"
|
||||
# limit the number of commits included in the changelog.
|
||||
# limit_commits = 42
|
||||
145
configure
vendored
Executable file
145
configure
vendored
Executable file
@@ -0,0 +1,145 @@
|
||||
#!/bin/bash
|
||||
# Configuration script for the feddy project
|
||||
|
||||
usage() {
|
||||
cat <<EOF
|
||||
Usage: $0 [OPTION]...
|
||||
|
||||
Configuration options:
|
||||
--help display this help message
|
||||
--build=BUILD system on which the package is built
|
||||
--host=HOST system on which the package will run
|
||||
--program-prefix=PREFIX prefix for installed program names
|
||||
--disable-dependency-tracking
|
||||
disable dependency tracking
|
||||
--prefix=DIR install files in PREFIX [/usr/local]
|
||||
--exec-prefix=DIR install binaries in EPREFIX [PREFIX]
|
||||
--bindir=DIR install user executables in DIR [EPREFIX/bin]
|
||||
--sbindir=DIR install admin executables in DIR [EPREFIX/sbin]
|
||||
--sysconfdir=DIR install configuration files in DIR [PREFIX/etc]
|
||||
--datadir=DIR install data files in DIR [PREFIX/share]
|
||||
--includedir=DIR install headers in DIR [PREFIX/include]
|
||||
--libdir=DIR install libraries in DIR [EPREFIX/lib]
|
||||
--libexecdir=DIR install internal programs in DIR [EPREFIX/libexec]
|
||||
--localstatedir=DIR install variable state data in DIR [PREFIX/var]
|
||||
--sharedstatedir=DIR install modifiable state data in DIR [PREFIX/com]
|
||||
--mandir=DIR install man pages in DIR [DATADIR/man]
|
||||
--infodir=DIR install info files in DIR [DATADIR/info]
|
||||
EOF
|
||||
exit 0
|
||||
}
|
||||
|
||||
# Default values
|
||||
build="$(uname -m)-unknown-linux"
|
||||
host="$(uname -m)-unknown-linux"
|
||||
program_prefix=''
|
||||
dependency_tracking='yes'
|
||||
prefix='/usr/local'
|
||||
exec_prefix='${prefix}'
|
||||
bindir='${exec_prefix}/bin'
|
||||
sbindir='${exec_prefix}/sbin'
|
||||
sysconfdir='${prefix}/etc'
|
||||
datadir='${prefix}/share'
|
||||
includedir='${prefix}/include'
|
||||
libdir='${exec_prefix}/lib'
|
||||
libexecdir='${exec_prefix}/libexec'
|
||||
localstatedir='${prefix}/var'
|
||||
sharedstatedir='${prefix}/com'
|
||||
mandir='${datadir}/man'
|
||||
infodir='${datadir}/info'
|
||||
|
||||
# Argument processing
|
||||
for arg in "$@"; do
|
||||
case $arg in
|
||||
--help)
|
||||
usage
|
||||
;;
|
||||
--build=*)
|
||||
build="${arg#*=}"
|
||||
;;
|
||||
--host=*)
|
||||
host="${arg#*=}"
|
||||
;;
|
||||
--program-prefix=*)
|
||||
program_prefix="${arg#*=}"
|
||||
;;
|
||||
--disable-dependency-tracking)
|
||||
dependency_tracking="yes"
|
||||
;;
|
||||
--prefix=*)
|
||||
prefix="${arg#*=}"
|
||||
;;
|
||||
--exec-prefix=*)
|
||||
exec_prefix="${arg#*=}"
|
||||
;;
|
||||
--bindir=*)
|
||||
bindir="${arg#*=}"
|
||||
;;
|
||||
--sbindir=*)
|
||||
sbindir="${arg#*=}"
|
||||
;;
|
||||
--sysconfdir=*)
|
||||
sysconfdir="${arg#*=}"
|
||||
;;
|
||||
--datadir=*)
|
||||
datadir="${arg#*=}"
|
||||
;;
|
||||
--includedir=*)
|
||||
includedir="${arg#*=}"
|
||||
;;
|
||||
--libdir=*)
|
||||
libdir="${arg#*=}"
|
||||
;;
|
||||
--libexecdir=*)
|
||||
libexecdir="${arg#*=}"
|
||||
;;
|
||||
--localstatedir=*)
|
||||
localstatedir="${arg#*=}"
|
||||
;;
|
||||
--sharedstatedir=*)
|
||||
sharedstatedir="${arg#*=}"
|
||||
;;
|
||||
--mandir=*)
|
||||
mandir="${arg#*=}"
|
||||
;;
|
||||
--infodir=*)
|
||||
infodir="${arg#*=}"
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Check for cargo (required for compilation)
|
||||
if ! command -v cargo &> /dev/null; then
|
||||
echo "Error: cargo is required but not installed. Please install Rust and cargo."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Generate Makefile.config
|
||||
cat > Makefile.config <<EOF
|
||||
# Automatically generated by the configure script
|
||||
build = $build
|
||||
host = $host
|
||||
program_prefix = $program_prefix
|
||||
dependency_tracking = $dependency_tracking
|
||||
prefix = $prefix
|
||||
exec_prefix = $exec_prefix
|
||||
bindir = $bindir
|
||||
sbindir = $sbindir
|
||||
sysconfdir = $sysconfdir
|
||||
datadir = $datadir
|
||||
includedir = $includedir
|
||||
libdir = $libdir
|
||||
libexecdir = $libexecdir
|
||||
localstatedir = $localstatedir
|
||||
sharedstatedir = $sharedstatedir
|
||||
mandir = $mandir
|
||||
infodir = $infodir
|
||||
EOF
|
||||
|
||||
echo "Configuration complete."
|
||||
echo " Build: $build"
|
||||
echo " Host: $host"
|
||||
echo " Prefix: $prefix"
|
||||
echo " Bindir: $bindir"
|
||||
32
feddy.spec
Normal file
32
feddy.spec
Normal file
@@ -0,0 +1,32 @@
|
||||
Name: feddy
|
||||
Version: 0.1.0
|
||||
Release: 1%{?dist}
|
||||
Summary: Your awesome, friendly, lightning-fast, and super-easy-to-use Fedora Buddy !
|
||||
Vendor: Rawleenc
|
||||
|
||||
%global debug_package %{nil}
|
||||
|
||||
License: MIT
|
||||
URL: https://git.rawleenc.dev/rawleenc/feddy
|
||||
Source0: %{name}-%{version}.tar.gz
|
||||
|
||||
%description
|
||||
Your awesome, friendly, lightning-fast, and super-easy-to-use Fedora Buddy !
|
||||
|
||||
%prep
|
||||
%autosetup
|
||||
|
||||
%build
|
||||
%make_build
|
||||
|
||||
%install
|
||||
%configure
|
||||
%make_install
|
||||
|
||||
%files
|
||||
%license LICENSE
|
||||
%doc README.md
|
||||
%{_bindir}/feddy
|
||||
|
||||
%changelog
|
||||
%autochangelog
|
||||
Reference in New Issue
Block a user