%% This file is in the public domain.
'''
+new_lys_marker = "%% generated from %s" % new_lys
LY_HEADER_NEW = '''%% DO NOT EDIT this file manually; it is automatically
-%% generated from %s
+%s
%% Make any changes in Documentation/snippets/new/
%% and then run scripts/auxiliar/makelsr.py
%%
%% This file is in the public domain.
-''' % new_lys
+''' % new_lys_marker
options_parser = optparse.OptionParser (
description = "makelsr - update snippets directory from LSR",
options_parser.print_help (sys.stderr)
sys.exit (n)
-tags=[]
if len (args):
in_dir = args[0]
if not (os.path.isdir (in_dir)):
if len (args) > 1:
exit_with_usage (2)
tags = os.listdir (in_dir)
- ## Make sure all users get the same ordering of tags
- tags.sort()
else:
- in_dir = '.'
+ in_dir = ''
+ tags = [os.path.splitext (os.path.basename (f))[0]
+ for f in glob.glob (os.path.join (lys_from_lsr, '*.snippet-list'))]
+## Make sure all users get the same ordering of tags
+tags.sort ()
if options.convert_ly == "LY_PATH/convert-ly":
convert_ly = os.path.join (options.bin_path, "convert-ly")
return begin_header_re.sub ('\\g<0>\n lsrtags = "' + tags + '"\n',
ly_code, 1)
-# for snippets from input/new, add message for earliest working version
+# for snippets from Documentation/snippets/new, add message for earliest working version
def add_version (ly_code):
return '''%% Note: this file works from version ''' + \
ly_new_version_re.search (ly_code).group (1) + '\n'
if m:
file_tags = [tag.strip() for tag in m.group (1). split(',')]
s[basename] = (src, file_tags)
- [l[tag].add (basename) for tag in file_tags if tag in tags]
+ for tag in file_tags:
+ if tag in tags:
+ l[tag].add (basename)
+ else:
+ l[tag] = set ((basename,))
else:
notags_files.append (f)
return s, l
-def dump_file_list (file, file_list, update=False):
- if update:
- old_list = set (open (file, 'r').read ().splitlines ())
- old_list.update (file_list)
- new_list = list (old_list)
- else:
- new_list = file_list
+def dump_file_list (file, file_list):
+ new_list = file_list
f = open (file, 'w')
f.write ('\n'.join (sorted (new_list)) + '\n')
-## clean out existing lys and generated files - but only when we're
-## completely recreating them from the tarball. Otherwise
-## tags will be empty and so we can use this to skip this step
-
-if len(tags) > 0:
+## clean out existing lys and generated files - but when we're
+## not recreating all of them from the tarball don't delete
+## snippets that came from LSR.
+if in_dir:
map (os.remove, glob.glob (os.path.join (lys_from_lsr, '*.ly')) +
glob.glob (os.path.join (lys_from_lsr, '*.snippet-list')))
+else:
+ map (os.remove, glob.glob (os.path.join (lys_from_lsr, '*.snippet-list')))
+ for f in glob.glob (os.path.join (lys_from_lsr, '*.ly')):
+ if new_lys_marker in open (f).read ():
+ os.remove (f)
+
+if in_dir:
+ # read LSR source where tags are defined by subdirs
+ snippets, tag_lists = read_source_with_dirs (in_dir)
+else:
+ snippets, tag_lists = read_source (lys_from_lsr)
+ # in local update we're only interested in retrieving tags
+ snippets = {}
-# read LSR source where tags are defined by subdirs
-snippets, tag_lists = read_source_with_dirs (in_dir)
-
-# read input/new where tags are directly defined
+# read Documentation/snippets/new where tags are directly defined
s, l = read_source (new_lys)
snippets.update (s)
for t in tags:
copy_ly (srcdir, name, file_tags)
for (tag, file_set) in tag_lists.items ():
dump_file_list (os.path.join (lys_from_lsr, tag + '.snippet-list'),
- file_set, update=not(in_dir))
+ file_set)
if unconverted:
sys.stderr.write ('These files could not be converted successfully by convert-ly:\n')
sys.stderr.write ('\n'.join (unconverted) + '\n\n')