def copy_license_to_files(license_content): """Copy license header to every .py files""" # get the project name if not configurationhandler.project_config: configurationhandler.loadConfig() project_name = configurationhandler.project_config['project'] # open each python file and main bin file for root, dirs, files in os.walk('./'): for name in files: if name.endswith('.py') or os.path.join( root, name) == "./bin/" + project_name: target_file_name = os.path.join(root, name) try: templatetools.update_file_content( target_file_name, BEGIN_LICENCE_TAG, END_LICENCE_TAG, '%s\n%s' % (BEGIN_LICENCE_TAG, license_content)) except templatetools.CantUpdateFile, e: print _( "WARNING: %s was not found in the file %s. No licence replacement" ) % (END_LICENCE_TAG, target_file_name) except (OSError, IOError), e: msg = _("%s file was not found") % target_file_name raise LicenceError(msg)
def copy_license_to_files(license_content): """Copy license header to every .py files""" # get the project name if not configurationhandler.project_config: configurationhandler.loadConfig() project_name = configurationhandler.project_config['project'] # open each python file and main bin file for root, dirs, files in os.walk('./'): for name in files: if name.endswith('.py') or os.path.join(root, name) == "./bin/" + project_name: target_file_name = os.path.join(root, name) try: templatetools.update_file_content( target_file_name, BEGIN_LICENCE_TAG, END_LICENCE_TAG, '%s\n%s' % (BEGIN_LICENCE_TAG, license_content) ) except templatetools.CantUpdateFile, e: print _("WARNING: %s was not found in the file %s. No licence replacement") % (END_LICENCE_TAG, target_file_name) except (OSError, IOError), e: msg = _("%s file was not found") % target_file_name raise LicenceError(msg)
def update_rules(): # Also update debian/control to add a new Build-Depends needed for # glib-compile-schemas templatetools.update_file_content( 'debian/control', "Build-Depends: debhelper (>= 8),", " python (>= 2.6.6-3~),", "Build-Depends: debhelper (>= 8), libglib2.0-bin,")
def update_metadata(): # See https://wiki.ubuntu.com/PostReleaseApps/Metadata for details metadata = [] project_name = configurationhandler.project_config['project'] # Grab name and category from desktop file with open('%s.desktop.in' % project_name, 'r') as f: desktop = f.read() match = re.search('\n_?Name=(.*)\n', desktop) if match is not None: metadata.append('XB-AppName: %s' % match.group(1)) match = re.search('\nCategories=(.*)\n', desktop) if match is not None: metadata.append('XB-Category: %s' % match.group(1)) # Grab distribution for screenshot URLs from debian/changelog changelog = subprocess.Popen(['dpkg-parsechangelog'], stdout=subprocess.PIPE).communicate()[0] match = re.search('\nDistribution: (.*)\n', changelog) if match is not None: distribution = match.group(1) first_letter = project_name[0] urlbase = 'https://software-center.ubuntu.com/screenshots/%s' % first_letter metadata.append('XB-Screenshot-Url: %s/%s-%s.png' % (urlbase, project_name, distribution)) metadata.append('XB-Thumbnail-Url: %s/%s-%s.thumb.png' % (urlbase, project_name, distribution)) # Now ship the icon as part of the debian packaging icon_name = 'data/media/%s.svg' % project_name if not os.path.exists(icon_name): # Support pre-11.03.1 icon names icon_name = 'data/media/logo.svg' if not os.path.exists(icon_name): icon_name = None if icon_name: contents = '' with open('debian/rules', 'r') as f: contents = f.read() if contents and re.search('dpkg-distaddfile %s.svg' % project_name, contents) is None: contents += """ common-install-indep:: cp %(icon_name)s ../%(project_name)s.svg dpkg-distaddfile %(project_name)s.svg raw-meta-data -""" % { 'project_name': project_name, 'icon_name': icon_name} templatetools.set_file_contents('debian/rules', contents) metadata.append('XB-Icon: %s.svg' % project_name) # Prepend the start-match line, because update_file_content replaces it metadata.insert(0, 'XB-Python-Version: ${python:Versions}') templatetools.update_file_content('debian/control', 'XB-Python-Version: ${python:Versions}', 'Depends: ${misc:Depends},', '\n'.join(metadata) + '\n')
sys.path.insert(0, opt_path) if (os.path.exists(os.path.join(PROJECT_ROOT_DIRECTORY, '%(python_name)s')) and PROJECT_ROOT_DIRECTORY not in sys.path): python_path.insert(0, PROJECT_ROOT_DIRECTORY) sys.path.insert(0, PROJECT_ROOT_DIRECTORY) if python_path: os.putenv('PYTHONPATH', "%%s:%%s" %% (os.getenv('PYTHONPATH', ''), ':'.join(python_path))) # for subprocesses''' % {'python_name' : python_name, 'project_name' : project_name} # projects based on ~/quickly-projects/template-name have no project_version # so only upgrade if really necessary with open("./bin/%s" % project_name) as project_bin: contents = project_bin.read() if not content_to_update in contents: try: templatetools.update_file_content("./bin/%s" % project_name, 'if (os.path.exists(os.path.join(PROJECT_ROOT_DIRECTORY', " os.putenv('PYTHONPATH', PROJECT_ROOT_DIRECTORY) # for subprocesses", content_to_update) except templatetools.CantUpdateFile, e: print _("WARNING: can't update your project to support /opt. This doesn't matter if you don't plan to submit your project to the application review board. Cause is: %s" % e) ### 11.09 update (but only through 11.10; later versions don't want this change) if project_version < '11.09' and template_version <= '11.10': filename = './%s_lib/Builder.py' % python_name try: with open(filename) as fileobj: contents = fileobj.read() contents = contents.replace('from gi.repository import GObject', 'import gobject') contents = contents.replace('GObject.', 'gobject.') templatetools.set_file_contents(filename, contents) except IOError: pass