public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Alexandre Restovtsev" <tetromino@gmail.com>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/gnome:master commit in: app-admin/eselect-gnome-shell-extensions/files/, ...
Date: Sun, 11 Sep 2011 22:14:54 +0000 (UTC)	[thread overview]
Message-ID: <92ce2421fea0e37f2e694c238801486489c36ea7.tetromino@gentoo> (raw)

commit:     92ce2421fea0e37f2e694c238801486489c36ea7
Author:     Alexandre Rostovtsev <tetromino <AT> gmail <DOT> com>
AuthorDate: Sun Sep 11 21:56:22 2011 +0000
Commit:     Alexandre Restovtsev <tetromino <AT> gmail <DOT> com>
CommitDate: Sun Sep 11 22:14:41 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=92ce2421

app-admin/eselect-gnome-shell-extensions: 20110811 → 20110911

Version bump. Changes:
* Does not display a warning if no extensions are installed (#381247).
* Respects XDG_DATA_DIRS.
* Now works with all versions of gnome-shell, including >=3.1.90.

---
 ...eselect-gnome-shell-extensions-20110911.ebuild} |    9 ++-
 .../files/{20110811.eselect => 20110911.eselect}   |   94 +++++++++++++-------
 2 files changed, 68 insertions(+), 35 deletions(-)

diff --git a/app-admin/eselect-gnome-shell-extensions/eselect-gnome-shell-extensions-20110811.ebuild b/app-admin/eselect-gnome-shell-extensions/eselect-gnome-shell-extensions-20110911.ebuild
similarity index 80%
rename from app-admin/eselect-gnome-shell-extensions/eselect-gnome-shell-extensions-20110811.ebuild
rename to app-admin/eselect-gnome-shell-extensions/eselect-gnome-shell-extensions-20110911.ebuild
index f2b3cb0..c35301a 100644
--- a/app-admin/eselect-gnome-shell-extensions/eselect-gnome-shell-extensions-20110811.ebuild
+++ b/app-admin/eselect-gnome-shell-extensions/eselect-gnome-shell-extensions-20110911.ebuild
@@ -36,12 +36,15 @@ src_install() {
 pkg_postinst() {
 	einfo "Updating list of installed extensions"
 	eselect gnome-shell-extensions update || die
+	local keyname="disabled-extensions"
+	has_version ">=gnome-base/gnome-shell-3.1.90" &&
+		keyname="enabled-extensions"
 	elog
 	elog "eselect gnome-shell-extensions manages the system default value of"
-	elog "the org.gnome.shell disabled-extensions key. To override the default"
+	elog "the org.gnome.shell ${keyname} key. To override the default"
 	elog "for an individual user, use the gsettings command, e.g."
-	elog "\$ gsettings set org.gnome.shell disabled-extensions \"['foo', 'bar']\""
+	elog "\$ gsettings set org.gnome.shell ${keyname} \"['foo', 'bar']\""
 	elog "To undo per-user changes and use the system default, do"
-	elog "\$ gsettings reset org.gnome.shell disabled-extensions"
+	elog "\$ gsettings reset org.gnome.shell ${keyname}"
 	elog
 }

diff --git a/app-admin/eselect-gnome-shell-extensions/files/20110811.eselect b/app-admin/eselect-gnome-shell-extensions/files/20110911.eselect
similarity index 69%
rename from app-admin/eselect-gnome-shell-extensions/files/20110811.eselect
rename to app-admin/eselect-gnome-shell-extensions/files/20110911.eselect
index 13f53bc..ef288c7 100644
--- a/app-admin/eselect-gnome-shell-extensions/files/20110811.eselect
+++ b/app-admin/eselect-gnome-shell-extensions/files/20110911.eselect
@@ -6,18 +6,19 @@
 DESCRIPTION="Manage default settings for systemwide GNOME Shell extensions"
 AUTHOR="tetromino@gmail.com"
 MAINTAINER="gnome@gentoo.org"
-SVN_DATE='$Date: 2011/08/11 19:00:00 -0400 $'
+SVN_DATE='$Date: 2011/09/11 18:00:00 -0400 $'
 VERSION=$(svn_date_to_version "${SVN_DATE}")
 
 #
 # Basic idea: eselect manages a gschema override file located in
 # /etc/eselect/gnome-shell-extensions/ that overrides GNOME Shell's
-# 'disabled-extensions' GSettings key; the override file is symlinked
-# from /usr/share/glib-2.0/schemas/
+# 'disabled-extensions' or 'enabled-extensions' (depending on
+# current shell version) GSettings key; the override file is
+# symlinked from /usr/share/glib-2.0/schemas/
 #
 
 gse_prepare() {
-	EXTDIR="${EROOT}/usr/share/gnome-shell/extensions"
+	XDG_DATA_DIRS=${XDG_DATA_DIRS:="${EROOT}/usr/local/share:${EROOT}/usr/share"}
 	ETCDIR="${EROOT}/etc/eselect/gnome-shell-extensions"
 	SCHEMADIR="${EROOT}/usr/share/glib-2.0/schemas"
 	OVERRIDE_FILE="eselect-gnome-shell-extensions.gschema.override"
@@ -31,6 +32,7 @@ gse_prepare() {
 	warnings=()
 	errors=()
 	available=()
+	available_dirs=()
 	enabled=()
 
 	if [[ -e "${ETCDIR}/${CONFIG_FILE}" ]]; then
@@ -75,27 +77,38 @@ gse_read_available() {
 	local d
 
 	gse_prepare
-	if ! pushd "${EXTDIR}" > /dev/null; then
-		warnings=( "${warnings[@]}" "Failed to open ${EXTDIR}" )
-		return 1
-	fi
-	# Do not expand * to '*' if EXTDIR is empty
+	# Do not expand * to '*' if $p is empty
 	shopt -s nullglob
-	for d in *; do
-		# skip invalid extension directories
-		if ! [[ -d "${d}" && -f "${d}/metadata.json" && -s "${d}/metadata.json" ]]; then
-			warnings=( "${warnings[@]}" "${EXTDIR}/${d} is not a valid extension" )
-			continue
-		fi
-		available=( "${available[@]}" "${d}" )
+
+	for p in $(echo "${XDG_DATA_DIRS}" | tr -s ':' '\n'); do
+		pushd "${p}/gnome-shell/extensions" &> /dev/null || continue
+		for d in *; do
+			local full_d="${p}/gnome-shell/extensions/${d}"
+			# skip invalid extension directories
+			if ! [[ -d "${d}" && -f "${d}/metadata.json" && -s "${d}/metadata.json" ]]; then
+				warnings=( "${warnings[@]}" "${full_d} is not a valid extension" )
+				continue
+			fi
+			# earlier entries in XDG_DATA_DIRS take precedence
+			if has "${d}" "${available[@]}"; then
+				warnings=( "${warnings[@]}" "Skipping ${full_d}" )
+				continue
+			fi
+			available_dirs=( "${available_dirs[@]}" "${full_d}" )
+			available=( "${available[@]}" "${d}" )
+		done
+		popd > /dev/null
 	done
-	popd > /dev/null
+	# Sort $available
+	if [[ -n "${available[@]}" ]]; then
+		eval available=( $(printf '%q\n' "${available[@]}" | sort ) )
+	fi
 }
 
 gse_write_config_file() {
 	local f="${ETCDIR}/${CONFIG_FILE}"
 
-	# Sort and uniquefy 'enabled'
+	# Sort and uniquefy $enabled
 	eval enabled_saved=( $(printf '%q\n' "${enabled[@]}" | sort -u ) )
 
 	if [[ -e "${f}" ]]; then
@@ -112,12 +125,26 @@ EOF
 
 gse_write_override_file() {
 	local f="${ETCDIR}/${OVERRIDE_FILE}"
-	local disstring e
-
-	for e in "${available[@]}"; do
-		has "${e}" "${enabled[@]}" || disstring+="'${e}', "
-	done
-	disstring=`echo "${disstring}" | sed -e 's:, $::'`
+	local local key value e
+
+	case $(gnome-shell --version) in
+	"GNOME Shell 2"* | "GNOME Shell 3.0"* | "GNOME Shell 3.1."[012345678]* )
+		# <gnome-shell-3.1.90 uses 'disabled-extensions' key
+		key="disabled-extensions"
+		for e in "${available[@]}"; do
+			has "${e}" "${enabled[@]}" || value+="'${e}', "
+		done
+		value=`echo "${value}" | sed -e 's:, $::'`
+		;;
+	* )
+		# >=gnome-shell-3.1.90 uses 'enabled-extensions' key
+		key="enabled-extensions"
+		for e in "${enabled[@]}"; do
+			value+="'${e}', "
+		done
+		value=`echo "${value}" | sed -e 's:, $::'`
+		;;
+	esac
 
 	if [[ -e "${f}" ]]; then
 		[[ -f "${f}" && -w "${f}" ]] || gse_die "${f} not writable"
@@ -128,19 +155,21 @@ gse_write_override_file() {
 	cat > "${f}" <<EOF || gse_die "Failed to write ${f}"
 # Generated and used by eselect gnome-shell-extensions; do not edit manually
 [org.gnome.shell]
-disabled-extensions=[${disstring}]
+${key}=[${value}]
 EOF
 	glib-compile-schemas "${SCHEMADIR}" || gse_die "Failed to compile schemas in ${SCHEMADIR}"
 }
 
 gse_get_name() {
+	# $1 is an index into available_dirs
 	perl -e 'use JSON; undef $/; print decode_json(<>)->{name};' \
-		"${EXTDIR}/${1}/metadata.json" 
+		"${available_dirs[${1}]}/metadata.json"
 }
 
 gse_get_description() {
+	# $1 is an index into available_dirs
 	perl -e 'use JSON; undef $/; print decode_json(<>)->{description};' \
-		"${EXTDIR}/${1}/metadata.json"
+		"${available_dirs[${1}]}/metadata.json"
 }
 
 ### list action
@@ -157,12 +186,12 @@ do_list() {
 	local n
 
 	gse_read_available
-	write_list_start "Available extensions ($(highlight '*') means enabled by default):"
+	write_list_start "Available extensions ($(highlight '*') means enabled for all users by default):"
 	for (( n = 0; n < ${#available[@]}; ++n )); do
 		has "${available[n]}" "${enabled[@]}" &&
 			available[n]=$(highlight_marker "${available[n]}")
 		if [[ $1 = "--verbose" || $1 = "-v" ]]; then
-			available[n]+="\n\tfull name   : $(gse_get_name ${available[n]})\n\tdescription : $(gse_get_description ${available[n]})"
+			available[n]+="\n\tfull name   : $(gse_get_name $n)\n\tdescription : $(gse_get_description $n)"
 		fi
 	done
 	write_numbered_list -m "(none found)" "${available[@]}"
@@ -172,7 +201,7 @@ do_list() {
 ### enable action
 
 describe_enable() {
-	echo "Enable specified extension(s) by default"
+	echo "Enable specified extension(s) for all users by default"
 }
 
 describe_enable_parameters() {
@@ -210,7 +239,7 @@ do_enable() {
 ### disable action
 
 describe_disable() {
-	echo "Disable specified extension(s) by default"
+	echo "Disable specified extension(s) for all users by default"
 }
 
 describe_disable_parameters() {
@@ -264,7 +293,8 @@ do_disable() {
 ### update action
 
 describe_update() {
-	echo "Scan for installed extensions and disable ones that haven't been enabled earlier"
+	echo "Scan for installed extensions, disable ones that haven't been enabled"
+	echo "earlier, and update gsettings keys if GNOME Shell has been upgraded"
 }
 
 do_update() {



             reply	other threads:[~2011-09-11 22:15 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-11 22:14 Alexandre Restovtsev [this message]
  -- strict thread matches above, loose matches on Subject: below --
2011-08-12  8:29 [gentoo-commits] proj/gnome:master commit in: app-admin/eselect-gnome-shell-extensions/files/, Alexandre Restovtsev

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=92ce2421fea0e37f2e694c238801486489c36ea7.tetromino@gentoo \
    --to=tetromino@gmail.com \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox