forked from pool/faenza-icon-theme
Dominique Leuenberger
d69088876b
- 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
175 lines
4.9 KiB
Python
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
|