1
0
faenza-icon-theme/faenza-install
Dominique Leuenberger d69088876b Accepting request 853070 from home:dimstar:Factory
- Use python3 to perform installation:
  + Replace python BuildRequires with python3-base.
  + Change syntax of faenza-install to be python3 compatible.

OBS-URL: https://build.opensuse.org/request/show/853070
OBS-URL: https://build.opensuse.org/package/show/GNOME:Apps/faenza-icon-theme?expand=0&rev=11
2020-12-05 13:51:08 +00:00

175 lines
4.9 KiB
Python

#!/usr/bin/env python
#
# Copyright (c) 2011-2012 Nelson Marques <nmo.marques@gmail.com>
#
# crap script to rebrand and install faenza icon theme; this is aimed to
# be invoked from the .spec file during the install process.
#
import os, shutil, sys
from fnmatch import fnmatch
from optparse import OptionParser, OptionGroup
VERSION = '0.2'
icons = []
base = os.getcwd()
variants = ( 'Faenza-Ambiance', 'Faenza-Dark', 'Faenza-Darker',
'Faenza-Darkest', 'Faenza-Mint', 'Faenza-Radiance',
'Faenza')
class Faenza():
'''
print header
'''
def header(self):
print('\n faenza-install -- version %s \n' % VERSION)
print(' This script performs minimum rebranding and installs the')
print(' faenza-icon-theme in INSTALL_DIR (sys.argv[1]). For help')
print(' run the following this script with "-h" or "--help". \n')
'''
returns a list of matching targets
'''
def scan(self, target):
for variant in variants:
for root, dirs, files in os.walk(variant):
for f in files:
if fnmatch(f, target + '.png') or fnmatch(f, target + '.svg'):
icons.append(root + '/' + f)
return 0
'''
delete designated file
'''
def delete(self, target):
try:
if os.path.exists(target):
os.unlink(target)
else:
print(' - file not found: %s' % target)
except Exception as errno:
print(errno)
sys.exit(1)
return 0
'''
install a file
'''
def rebrand(self, distribution):
self.scan('start-here')
self.scan('distributor-logo')
if not icons:
print('\n - NO icons found.. Exiting!\n')
sys.exit(1)
else:
for icon in icons:
dirname, myfile = os.path.split(icon)
filename, myext = os.path.splitext(myfile)
print(' - %s' % icon)
try:
self.delete(icon)
print(' + delete file: %s' % icon)
except Exception as errno:
print(errno)
sys.exit(1)
os.chdir(dirname)
os.system('ln -s %s %s' % ( filename + '-' + dist + myext, myfile))
print(' + file rebranded to: %s' % ( filename + '-' + distribution + myext ))
os.chdir(base)
return 0
'''
install Faenza themes on sys.argv[1]
'''
def install(self, target):
print(' - Installation \n')
for variant in variants:
fs_dir = os.path.join(target, variant)
if not os.path.isdir(fs_dir):
try:
shutil.copytree(variant, fs_dir)
print(' + file installed: %s' % fs_dir)
except Exception as err:
print(err)
return 1
return 0
def main():
faenza = OptionParser(
usage = '%prog [OPTIONS] INSTALL_DIR',
epilog = ''' A simple python script to install icon theme with branding ''')
f_group = OptionGroup(faenza, 'Distribution Options: \n' +
' - opensuse, fedora, debian, frugalware, linux-mint, \n' +
' archlinux, gnome, mandriva, slackware, archlinux, \n' +
' ubuntu')
faenza.add_option('-v', '--version', action='store_true', dest='version',
default=False, help='print version and exit to shell')
faenza.add_option('-i', '--install', action='store_true', dest='install',
default=False, help='install icon themes on INSTALL_DIR')
faenza.add_option('-r', '--rebrand', action='store_true', dest='rebrand',
default=True, help='rebrand "start-here" and "distributor-logo" (default)')
faenza.add_option('--dist', action='store', dest='distribution',
default='opensuse', help='set default distribution for branding')
faenza.add_option_group(f_group)
(option, args) = faenza.parse_args()
if len(args) != 1:
faenza.print_help()
return 1
if option.version:
print('\n faenza-install -- version %s \n' % VERSION)
print(' This script performs minimum rebranding and installs the')
print(' faenza-icon-theme in INSTALL_DIR (sys.argv[1]). For help')
print(' run the following this script with "-h" or "--help". \n')
sys.exit(0)
global dist
dist = str(option.distribution)
run = Faenza()
fs = args[0]
run.header()
if option.rebrand:
run.rebrand(dist)
if option.install:
if not os.path.isdir(fs):
os.makedirs(fs)
run.install(fs)
return 0
if __name__ == '__main__':
try:
main()
except KeyboardInterrupt:
pass