#11 Refactor to eliminate redundant distro conf files and ease of use
Merged a year ago by ngompa. Opened a year ago by salimma.
salimma/rpmdistro-repoquery refactor-dedup  into  main

file modified
+5 -3
@@ -26,17 +26,19 @@ 

  * CentOS (since 7.6) with EPEL installed and enabled

  

  ```bash

- $ ./rpmdistro-repoquery ./distros/<distro>.conf <releasever> [<repoquery options> ...] <pkg-or-file-path>

+ $ ./rpmdistro-repoquery ./distros/<distro> <releasever> [<repoquery options> ...] <pkg-or-file-path>

  

  ```

  

+ If the `<distro>` argument is specified without a path, `rpmdistro-repoquery` will look in `/usr/share/rpmdistro-repoquery`.

+ 

  ## openSUSE specific notes

  

  For a special case, openSUSE Tumbleweed would work as the following with repoquery:

  

  ```bash

  

- $ ./rpmdistro-repoquery ./distros/opensuse-tumbleweed.conf 0 [<repoquery options> ...] <pkg-or-file-path>

+ $ ./rpmdistro-repoquery ./distros/opensuse-tumbleweed 0 [<repoquery options> ...] <pkg-or-file-path>

  

  ```

  
@@ -46,7 +48,7 @@ 

  

  ```bash

  

- $ ./rpmdistro-repoquery ./distros/opensuse-tumbleweed-snapshot.conf 20190423 [<repoquery options> ...] <pkg-or-file-path>

+ $ ./rpmdistro-repoquery ./distros/opensuse-tumbleweed-snapshot 20190423 [<repoquery options> ...] <pkg-or-file-path>

  

  ```

  

@@ -1,12 +0,0 @@ 

- [main]

- keepcache=1

- debuglevel=2

- reposdir=/dev/null

- logdir=/tmp/log/dnf

- retries=20

- obsoletes=1

- gpgcheck=0

- best=1

- install_weak_deps=0

- metadata_expire=0

- mdpolicy=group:primary

@@ -1,12 +0,0 @@ 

- [main]

- keepcache=1

- debuglevel=2

- reposdir=/dev/null

- logdir=/tmp/log/dnf

- retries=20

- obsoletes=1

- gpgcheck=0

- best=1

- install_weak_deps=0

- metadata_expire=6h

- mdpolicy=group:primary

file removed
-12
@@ -1,12 +0,0 @@ 

- [main]

- keepcache=1

- debuglevel=2

- reposdir=/dev/null

- logdir=/tmp/log/dnf

- retries=20

- obsoletes=1

- gpgcheck=0

- best=1

- install_weak_deps=0

- metadata_expire=6h

- mdpolicy=group:primary

distros/dnf.conf distros/centos-stream-legacy.conf
file renamed
file was moved with no change to the file
file removed
-12
@@ -1,12 +0,0 @@ 

- [main]

- keepcache=1

- debuglevel=2

- reposdir=/dev/null

- logdir=/tmp/log/dnf

- retries=20

- obsoletes=1

- gpgcheck=0

- best=1

- install_weak_deps=0

- metadata_expire=6h

- mdpolicy=group:primary

file removed
-12
@@ -1,12 +0,0 @@ 

- [main]

- keepcache=1

- debuglevel=2

- reposdir=/dev/null

- logdir=/tmp/log/dnf

- retries=20

- obsoletes=1

- gpgcheck=0

- best=1

- install_weak_deps=0

- metadata_expire=6h

- mdpolicy=group:primary

@@ -1,12 +0,0 @@ 

- [main]

- keepcache=1

- debuglevel=2

- reposdir=/dev/null

- logdir=/tmp/log/dnf

- retries=20

- obsoletes=1

- gpgcheck=0

- best=1

- install_weak_deps=0

- metadata_expire=6h

- mdpolicy=group:primary

@@ -1,12 +0,0 @@ 

- [main]

- keepcache=1

- debuglevel=2

- reposdir=/dev/null

- logdir=/tmp/log/dnf

- retries=20

- obsoletes=1

- gpgcheck=0

- best=1

- install_weak_deps=0

- metadata_expire=6h

- mdpolicy=group:primary

@@ -1,12 +0,0 @@ 

- [main]

- keepcache=1

- debuglevel=2

- reposdir=/dev/null

- logdir=/tmp/log/dnf

- retries=20

- obsoletes=1

- gpgcheck=0

- best=1

- install_weak_deps=0

- metadata_expire=6h

- mdpolicy=group:primary

@@ -1,12 +0,0 @@ 

- [main]

- keepcache=1

- debuglevel=2

- reposdir=/dev/null

- logdir=/tmp/log/dnf

- retries=20

- obsoletes=1

- gpgcheck=0

- best=1

- install_weak_deps=0

- metadata_expire=6h

- mdpolicy=group:primary

@@ -1,12 +0,0 @@ 

- [main]

- keepcache=1

- debuglevel=2

- reposdir=/dev/null

- logdir=/tmp/log/dnf

- retries=20

- obsoletes=1

- gpgcheck=0

- best=1

- install_weak_deps=0

- metadata_expire=6h

- mdpolicy=group:primary

file removed
-12
@@ -1,12 +0,0 @@ 

- [main]

- keepcache=1

- debuglevel=2

- reposdir=/dev/null

- logdir=/tmp/log/dnf

- retries=20

- obsoletes=1

- gpgcheck=0

- best=1

- install_weak_deps=0

- metadata_expire=6h

- mdpolicy=group:primary

file removed
-12
@@ -1,12 +0,0 @@ 

- [main]

- keepcache=1

- debuglevel=2

- reposdir=/dev/null

- logdir=/tmp/log/dnf

- retries=20

- obsoletes=1

- gpgcheck=0

- best=1

- install_weak_deps=0

- metadata_expire=6h

- mdpolicy=group:primary

file modified
+21 -6
@@ -5,21 +5,36 @@ 

  # License: MIT

  # See LICENSE for license information

  

- config=$1

+ if (( $# < 3 )); then

+ 	echo "Usage: $0 <distro> <releasever> [<repoquery options> ...] <pkg-or-file-path>"

+ 	exit 1

+ fi

+ repos=$1

  releasever=$2

  module_platform=""

- reposdir=${config%%.*}

+ repos_loc=$(dirname $1)

+ # if config is a path to an directory, use it

+ # otherwise use the system installation

+ if [ -d "${repos}" ]; then

+ 	repos_loc=$(dirname $1)

+ 	repos=$(basename $1)

+ elif [[ "${repos}" =~ "/" ]]; then

+ 	echo "ERROR: specified repos path does not exist"

+ 	exit 1

+ else

+ 	repos_loc=/usr/share/rpmdistro-repoquery/distros

+ fi	

  

- if [[ "$1" =~ "centos" ]]; then

+ if [[ "${repos}" =~ "centos" ]]; then

  	module_platform="--setopt=module_platform_id=platform:el${2}"

  fi

  

- if [[ "$1" =~ "mageia" ]]; then

+ if [[ "${repos}" =~ "mageia" ]]; then

  	DNF_VAR_distarch=$(rpm --eval "%{_target_cpu}")

  	export DNF_VAR_distarch

  fi

  

- if [[ "$1" =~ "sle-bci" ]]; then

+ if [[ "${repos}" =~ "sle-bci" ]]; then

  	arr=(${releasever//./ })

  	if [ "${#arr[@]}" -gt "1" ]; then

  		DNF_VAR_releaseversp="${arr[0]}-SP${arr[1]}"
@@ -29,4 +44,4 @@ 

  	export DNF_VAR_releaseversp

  fi

  

- dnf --config=${config} --setopt=reposdir=${reposdir} --releasever=${releasever} ${module_platform} --nogpgcheck repoquery "${@:3}"

+ dnf --config=${repos_loc}/dnf.conf --setopt=reposdir=${repos_loc}/${repos} --releasever=${releasever} ${module_platform} --nogpgcheck repoquery "${@:3}"

The various *.conf are all identical except for centos-legacy.conf
which was not configured to use caching yet.

Collapse them into a single dnf.conf, and also allow users to specify
only the distro name (in which case the repos are assumed to be at
/usr/share/rpmdistro-repoquery/distros) or a full path.

Also add a usage guide if the script is called without at least 3
arguments.

Tests (added echo to output the command):

rpmdistro-repoquery on  main [✘»!]
❯ ./rpmdistro-repoquery fedora 37 foo bar
dnf --config=/usr/share/rpmdistro-repoquery/dnf.conf --setopt=reposdir=/usr/share/rpmdistro-repoquery/distros/fedora --releasever=37 --nogpgcheck repoquery foo bar

rpmdistro-repoquery on  main [✘»!]
❯ ./rpmdistro-repoquery ./distros/fedora/ 37 foo bar
dnf --config=./distros/dnf.conf --setopt=reposdir=./distros/fedora --releasever=37 --nogpgcheck repoquery foo bar

Signed-off-by: Michel Alexandre Salim salimma@fedoraproject.org

Pull-Request has been merged by ngompa

a year ago