Compare commits
19 Commits
Author | SHA1 | Date | |
---|---|---|---|
57006c867e | |||
0f935c2faa | |||
07043dd2b2 | |||
c1429905d9 | |||
878f1a1ab0 | |||
1e610e9b9f | |||
bc2551bfa0 | |||
ea649350fc | |||
d56d4c27e8 | |||
ae1344286b | |||
fb516a4266 | |||
49995868dd | |||
8dc57a7cfa | |||
96cf5b8164 | |||
dfa7fc5b23 | |||
e510c227f0 | |||
30d669ff06 | |||
c19fdf0f6a | |||
5d2895871d |
52
.github/workflows/build-release.yml
vendored
Normal file
52
.github/workflows/build-release.yml
vendored
Normal file
@ -0,0 +1,52 @@
|
||||
name: build release
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- '[0-9]+.[0-9]+.[0-9]+-[0-9]+'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: checkout
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: build
|
||||
uses: ./.github/workflows/docker
|
||||
id: build
|
||||
with:
|
||||
target: 'all'
|
||||
|
||||
- name: create release
|
||||
id: create_release
|
||||
uses: actions/create-release@latest
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
tag_name: ${{ github.ref }}
|
||||
release_name: Release ${{ github.ref }}
|
||||
draft: false
|
||||
prerelease: false
|
||||
|
||||
- name: upload srpm
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_path: /home/runner/work/kf2-srv/kf2-srv/SRPMS/${{ steps.build.outputs.srpm_name }}
|
||||
asset_name: ${{ steps.build.outputs.srpm_name }}
|
||||
asset_content_type: application/gzip
|
||||
|
||||
- name: upload rpm
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_path: /home/runner/work/kf2-srv/kf2-srv/RPMS/noarch/${{ steps.build.outputs.rpm_name }}
|
||||
asset_name: ${{ steps.build.outputs.rpm_name }}
|
||||
asset_content_type: application/gzip
|
||||
|
7
.github/workflows/docker/Dockerfile
vendored
Normal file
7
.github/workflows/docker/Dockerfile
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
FROM centos:8
|
||||
|
||||
RUN dnf install -y rpmdevtools dnf-utils make
|
||||
|
||||
COPY * /
|
||||
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
22
.github/workflows/docker/action.yml
vendored
Normal file
22
.github/workflows/docker/action.yml
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
name: 'make'
|
||||
|
||||
description: 'make <target>'
|
||||
|
||||
inputs:
|
||||
target:
|
||||
description: 'make <target>'
|
||||
required: true
|
||||
default: ''
|
||||
|
||||
outputs:
|
||||
rpm_name:
|
||||
description: 'rpm name'
|
||||
srpm_name:
|
||||
description: 'src.rpm name'
|
||||
|
||||
runs:
|
||||
using: 'docker'
|
||||
image: 'Dockerfile'
|
||||
args:
|
||||
- ${{ inputs.target }}
|
||||
|
10
.github/workflows/docker/entrypoint.sh
vendored
Executable file
10
.github/workflows/docker/entrypoint.sh
vendored
Executable file
@ -0,0 +1,10 @@
|
||||
#!/bin/sh -l
|
||||
|
||||
make active && make builddep && make -j$(nproc) "$1"
|
||||
|
||||
RC=$?
|
||||
|
||||
echo "::set-output name=rpm_name::$(find /github/workspace/RPMS -type f -name '*.rpm' -printf '%f\n')"
|
||||
echo "::set-output name=srpm_name::$(find /github/workspace/SRPMS -type f -name '*.src.rpm' -printf '%f\n')"
|
||||
|
||||
exit $RC
|
20
.github/workflows/tests-dev.yml
vendored
Normal file
20
.github/workflows/tests-dev.yml
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
name: tests (dev)
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- dev
|
||||
|
||||
jobs:
|
||||
tests:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: checkout
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: run tests
|
||||
uses: ./.github/workflows/docker
|
||||
with:
|
||||
target: 'test'
|
||||
|
20
.github/workflows/tests-master.yml
vendored
Normal file
20
.github/workflows/tests-master.yml
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
name: tests (master)
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
|
||||
jobs:
|
||||
tests:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: checkout
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: run tests
|
||||
uses: ./.github/workflows/docker
|
||||
with:
|
||||
target: 'test'
|
||||
|
13
Makefile
13
Makefile
@ -34,12 +34,15 @@ SPEC := $(SPECSDIR)/$(NAME).spec
|
||||
VERSION := $(shell grep -Fi 'Version:' $(SPEC) | awk '{ print $$2 }')
|
||||
SOURCETARBALL := $(SOURCESDIR)/$(NAME)-$(VERSION).tar.gz
|
||||
|
||||
.PHONY: all prep rpm srpm activate active check-activate clean-tmp clean-pkg clean
|
||||
.PHONY: all prep rpm srpm activate active check-activate clean-tmp clean-pkg clean builddep test
|
||||
|
||||
all: check-activate prep
|
||||
rpmbuild -ba $(SPEC)
|
||||
$(MAKE) clean-tmp
|
||||
|
||||
builddep:
|
||||
dnf builddep -y $(SPEC)
|
||||
|
||||
prep: clean-tmp
|
||||
cd $(SOURCESDIR) && tar czf $(SOURCETARBALL) \
|
||||
config \
|
||||
@ -56,6 +59,10 @@ srpm: check-activate prep
|
||||
rpmbuild -bs $(SPEC)
|
||||
$(MAKE) clean-tmp
|
||||
|
||||
test: check-activate prep
|
||||
rpmbuild -bi $(SPEC)
|
||||
$(MAKE) clean-tmp
|
||||
|
||||
active: activate
|
||||
|
||||
activate:
|
||||
@ -76,11 +83,11 @@ check-activate:
|
||||
clean-tmp:
|
||||
rm -rf $(BUILDDIR)
|
||||
rm -rf $(BUILDROOTDIR)
|
||||
rm -rf $(SOURCETARBALL)
|
||||
rm -f $(SOURCETARBALL)
|
||||
|
||||
clean-pkg:
|
||||
rm -rf $(RPMSDIR)
|
||||
rm -rf $(SRPMSDIR)
|
||||
|
||||
clean: clean-tmp clean-pkg
|
||||
|
||||
rm -f $(SOURCESDIR)/$(NAME)-*.tar.gz
|
||||
|
24
README.md
24
README.md
@ -1,2 +1,24 @@
|
||||
# kf2-srv
|
||||
Killing Floor 2 server tool for RHEL/CentOS 8
|
||||
*Killing Floor 2 server tool for RHEL8/CentOS8*
|
||||
|
||||
[](https://github.com/GenZmeY/kf2-srv/actions?query=workflow%3A%22build+release%22)
|
||||
[/badge.svg?branch=master)](https://github.com/GenZmeY/kf2-srv/actions?query=workflow%3A%22tests+%28master%29%22)
|
||||
[/badge.svg?branch=dev)](https://github.com/GenZmeY/kf2-srv/actions?query=workflow%3A%22tests+%28dev%29%22)
|
||||
[](https://github.com/genzmey/kf2-srv/releases/latest)
|
||||
[](https://github.com/genzmey/kf2-srv/releases/latest)
|
||||
|
||||
# Features
|
||||
...
|
||||
|
||||
# Build
|
||||
...
|
||||
|
||||
# Install
|
||||
...
|
||||
|
||||
# Usage
|
||||
...
|
||||
|
||||
# License
|
||||

|
||||
...
|
||||
|
@ -27,6 +27,7 @@ PREFIX = /usr/local
|
||||
MAINLOGDIR = $(DESTDIR)/var/log/$(NAME)
|
||||
BETALOGDIR = $(DESTDIR)/var/log/$(NAME)-beta
|
||||
CONFDIR = $(DESTDIR)/etc/$(NAME)
|
||||
BASHCOMPDIR = $(DESTDIR)/etc/bash_completion.d
|
||||
INSTMAINDIR = $(CONFDIR)/instances
|
||||
INSTBETADIR = $(CONFDIR)/instances-beta
|
||||
MAPCYCLEDIR = $(CONFDIR)/mapcycles
|
||||
@ -88,6 +89,7 @@ filesystem:
|
||||
test -d '$(RSYSLOGDIR)' || install -m 755 -d '$(RSYSLOGDIR)'
|
||||
test -d '$(SCRIPTGRPDIR)' || install -m 755 -d '$(SCRIPTGRPDIR)'
|
||||
test -d '$(SCRIPTLIBDIR)' || install -m 755 -d '$(SCRIPTLIBDIR)'
|
||||
test -d '$(BASHCOMPDIR)' || install -m 755 -d '$(BASHCOMPDIR)'
|
||||
|
||||
install: filesystem build
|
||||
install -m 755 $(RELEASEDIR)/main/$(NAME) $(BINDIR)
|
||||
@ -128,6 +130,8 @@ install: filesystem build
|
||||
install -m 644 $(RELEASEDIR)/config/$(NAME).conf $(CONFDIR)
|
||||
|
||||
install -m 644 $(SOURCEDIR)/COPYING $(LICENSEDIR)
|
||||
|
||||
install -m 644 $(RELEASEDIR)/main/bash_completion/$(NAME) $(BASHCOMPDIR)
|
||||
|
||||
uninstall:
|
||||
rm -f $(BINDIR)/$(NAME)
|
||||
@ -201,6 +205,8 @@ test: fake-systemd-build
|
||||
$(BASHCHECK) $(RELEASEDIR)/main/lib/playerids.lib
|
||||
$(BASHCHECK) $(RELEASEDIR)/main/lib/webadmin.lib
|
||||
$(BASHCHECK) $(RELEASEDIR)/main/lib/workshop.lib
|
||||
|
||||
$(BASHCHECK) $(RELEASEDIR)/main/bash_completion/$(NAME)
|
||||
|
||||
clean:
|
||||
rm -rf $(RELEASEDIR)
|
||||
|
108
SOURCES/main/bash_completion/kf2-srv
Normal file
108
SOURCES/main/bash_completion/kf2-srv
Normal file
@ -0,0 +1,108 @@
|
||||
#!/bin/bash
|
||||
|
||||
# kf2-srv is a command line tool for managing a set of Killing Floor 2 servers.
|
||||
# Copyright (C) 2019, 2020 GenZmeY
|
||||
# mailto: genzmey@gmail.com
|
||||
#
|
||||
# This file is part of kf2-srv.
|
||||
#
|
||||
# kf2-srv is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
function _kf2_srv_completions ()
|
||||
{
|
||||
function groups_list ()
|
||||
{
|
||||
find "$GrpDir" \
|
||||
-mindepth 1 \
|
||||
-maxdepth 1 \
|
||||
-type d \
|
||||
-printf "%f\n"
|
||||
}
|
||||
|
||||
function commands_list () # $1: Command group
|
||||
{
|
||||
test -d "$GrpDir/$1" && \
|
||||
find "$GrpDir/$1" \
|
||||
-mindepth 1 \
|
||||
-maxdepth 1 \
|
||||
-type f \
|
||||
-printf "%f\n"
|
||||
}
|
||||
|
||||
function instances_list ()
|
||||
{
|
||||
find "$InsDir" \
|
||||
-mindepth 1 \
|
||||
-maxdepth 1 \
|
||||
-type d \
|
||||
-printf "%f\n"
|
||||
}
|
||||
|
||||
function command_usage_processing () # $1: Command group, $2: Command, $3: Current argument position
|
||||
{
|
||||
local CmdParams=$("$KF2Srv" "$1" "$2" "usage")
|
||||
local LocalPosition; ((LocalPosition = $3 - 2))
|
||||
|
||||
local ParamIndex=0
|
||||
local LastParam
|
||||
for Param in $CmdParams
|
||||
do
|
||||
((ParamIndex++))
|
||||
if [[ "$ParamIndex" -eq "$LocalPosition" ]]; then
|
||||
if echo "$Param" | grep -Fq '<instance>'; then
|
||||
COMPREPLY=($(compgen -W "$(instances_list)" -- "${CURARG}"))
|
||||
fi
|
||||
return 0
|
||||
fi
|
||||
LastParam="$Param"
|
||||
done
|
||||
|
||||
if echo "$LastParam" | grep -Fq '<instance>...'; then
|
||||
COMPREPLY=($(compgen -W "$(instances_list)" -- "${CURARG}"))
|
||||
fi
|
||||
}
|
||||
|
||||
COMPREPLY=()
|
||||
CURARG="${COMP_WORDS[COMP_CWORD]}"
|
||||
|
||||
case "${COMP_CWORD}" in
|
||||
1 ) COMPREPLY=($(compgen -W "$(groups_list)" -- "${CURARG}")) ;;
|
||||
2 ) COMPREPLY=($(compgen -W "$(commands_list ${COMP_WORDS[1]})" -- "${CURARG}")) ;;
|
||||
* ) command_usage_processing "${COMP_WORDS[1]}" "${COMP_WORDS[2]}" "${COMP_CWORD}";;
|
||||
esac
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
function _kf2_srv_main_completions ()
|
||||
{
|
||||
local GrpDir=":DEFINE_PREFIX:/share/kf2-srv/cmdgrp"
|
||||
local InsDir="/etc/kf2-srv/instances"
|
||||
local KF2Srv=":DEFINE_PREFIX:/bin/kf2-srv"
|
||||
|
||||
_kf2_srv_completions
|
||||
}
|
||||
|
||||
function _kf2_srv_beta_completions ()
|
||||
{
|
||||
local GrpDir=":DEFINE_PREFIX:/share/kf2-srv/cmdgrp"
|
||||
local InsDir="/etc/kf2-srv/instances-beta"
|
||||
local KF2Srv=":DEFINE_PREFIX:/bin/kf2-srv-beta"
|
||||
|
||||
_kf2_srv_completions
|
||||
}
|
||||
|
||||
complete -F _kf2_srv_main_completions kf2-srv
|
||||
complete -F _kf2_srv_beta_completions kf2-srv-beta
|
||||
|
@ -67,7 +67,7 @@ function run_as_steamuser () # $@: command
|
||||
shift 3; cmd_main "$@"
|
||||
elif [[ -n $(groups "$(whoami)" | grep -Fo 'wheel') ]] || [[ "$(whoami)" == "root" ]]; then
|
||||
export INC_LIBS=""
|
||||
sudo -u "$SteamUser" "$@"
|
||||
sudo -iu "$SteamUser" "$@"
|
||||
else
|
||||
echo "You must be a $SteamUser, root or sudo-user to run this command."
|
||||
fi
|
||||
@ -79,7 +79,7 @@ function run_as_root () # $@: command
|
||||
shift 3; cmd_main "$@"
|
||||
elif [[ -n $(groups "$(whoami)" | grep -Fo 'wheel') ]]; then
|
||||
export INC_LIBS=""
|
||||
sudo "$@"
|
||||
sudo -i "$@"
|
||||
else
|
||||
echo "You must be root or sudo-user to run this command."
|
||||
fi
|
||||
@ -90,6 +90,11 @@ function is_help () # $1: Arg
|
||||
echo "$1" | grep -Piqo '^(-h|--help|help)$'
|
||||
}
|
||||
|
||||
function is_usage () # $1: Arg
|
||||
{
|
||||
echo "$1" | grep -Piqo '^usage$'
|
||||
}
|
||||
|
||||
function is_version () # $1: Arg
|
||||
{
|
||||
echo "$1" | grep -Piqo '^(-v|--version|version)$'
|
||||
@ -197,6 +202,12 @@ elif [[ -d "$GroupPathname" ]]; then
|
||||
else
|
||||
echo "No help page for this command."
|
||||
fi
|
||||
elif is_usage "$1"; then
|
||||
if function_exists "cmd_usage"; then
|
||||
cmd_usage
|
||||
else
|
||||
echo "No usage information for this command."
|
||||
fi
|
||||
else
|
||||
if function_exists "cmd_main"; then
|
||||
if function_exists "cmd_need_installed_server" && cmd_need_installed_server && ! server_exists; then
|
||||
|
@ -1,7 +1,7 @@
|
||||
%global steamuser steam
|
||||
|
||||
Name: kf2-srv
|
||||
Version: 0.14.1
|
||||
Version: 0.15.3
|
||||
Release: 1%{dist}
|
||||
Summary: Killing Floor 2 server
|
||||
Group: Amusements/Games
|
||||
@ -10,7 +10,10 @@ BuildArch: noarch
|
||||
|
||||
Source0: %{name}-%{version}.tar.gz
|
||||
|
||||
# test deps
|
||||
BuildRequires: systemd
|
||||
BuildRequires: systemd-rpm-macros
|
||||
BuildRequires: libxml2
|
||||
|
||||
Requires: systemd >= 219
|
||||
Requires: steamcmd >= 2018.01.05-5
|
||||
@ -28,6 +31,7 @@ Requires: multini >= 0.2.3
|
||||
Requires: rsyslog >= 8.25.0
|
||||
Requires: logrotate
|
||||
Requires: inotify-tools
|
||||
Requires: bash-completion >= 2.7
|
||||
|
||||
Provides: %{name}
|
||||
|
||||
@ -77,6 +81,7 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%attr(0644,root,root) %{_sysconfdir}/logrotate.d/%{name}
|
||||
%attr(0644,root,root) %{_datadir}/%{name}/cmdgrp/*/*
|
||||
%attr(0644,root,root) %{_datadir}/%{name}/lib/*
|
||||
%attr(0644,root,root) %{_sysconfdir}/bash_completion.d/%{name}
|
||||
|
||||
%preun
|
||||
if [[ $1 -eq 0 ]] ; then # Uninstall
|
||||
@ -96,6 +101,22 @@ if [[ $1 == 1 ]]; then # Install
|
||||
fi
|
||||
|
||||
%changelog
|
||||
* Sat Aug 15 2020 GenZmeY <genzmey@gmail.com> - 0.15.3-1
|
||||
- fix 'find: Failed to restore initial working directory'.
|
||||
|
||||
* Sat Aug 15 2020 GenZmeY <genzmey@gmail.com> - 0.15.2-1
|
||||
- fix bash completion for commands without parameters;
|
||||
- fix bash completion for use not existing command group.
|
||||
|
||||
* Fri Aug 14 2020 GenZmeY <genzmey@gmail.com> - 0.15.1-1
|
||||
- fix bash completion for kf2-srv-beta.
|
||||
|
||||
* Thu Aug 13 2020 GenZmeY <genzmey@gmail.com> - 0.15.0-1
|
||||
- bash completion support.
|
||||
|
||||
* Mon Aug 10 2020 GenZmeY <genzmey@gmail.com> - 0.14.1-2
|
||||
- github-actions build.
|
||||
|
||||
* Sat Aug 8 2020 GenZmeY <genzmey@gmail.com> - 0.14.1-1
|
||||
- parallel actions for instance list.
|
||||
|
||||
|
Reference in New Issue
Block a user