Maintain header order in merge_csv
Previously, if the --header property was not specified then merge_csv would use a header constructed by sorting all the fields in the input files. That required that any use of merge_csv which did not already have headers in the required order would have to explicitly specify the headers. That made it harder to use merge_csv as a generic tool as each invocation needed to be aware of what headers were exported in the output. This change causes merge_csv to simply use the headers in the order in which they are encountered in the input files. That removes the need to specify the --header option when generating the index files. Bug: 179354495 Test: m out/soong/hiddenapi/hiddenapi-index.csv out/soong/hiddenapi/hiddenapi-unsupported.csv - make sure that they are not changed by this change. Merged-In: I420b7d07aea85af6372cd7580a8be5e2cc82a513 Change-Id: I420b7d07aea85af6372cd7580a8be5e2cc82a513 (cherry picked from commit 84c1cdf31f8f888ee9c0beb201d35ad9d293c341)
This commit is contained in:
parent
930610f64b
commit
2aae98f029
|
@ -219,7 +219,6 @@ func buildRuleToGenerateIndex(ctx android.ModuleContext, desc string, classesJar
|
|||
BuiltTool("merge_csv").
|
||||
Flag("--zip_input").
|
||||
Flag("--key_field signature").
|
||||
FlagWithArg("--header=", "signature,file,startline,startcol,endline,endcol,properties").
|
||||
FlagWithOutput("--output=", indexCSV).
|
||||
Inputs(classesJars)
|
||||
rule.Build(desc, desc)
|
||||
|
|
|
@ -55,14 +55,15 @@ else:
|
|||
if entry.endswith('.uau'):
|
||||
csv_readers.append(dict_reader(io.TextIOWrapper(zip.open(entry, 'r'))))
|
||||
|
||||
headers = set()
|
||||
if args.header:
|
||||
fieldnames = args.header.split(',')
|
||||
else:
|
||||
headers = {}
|
||||
# Build union of all columns from source files:
|
||||
for reader in csv_readers:
|
||||
headers = headers.union(reader.fieldnames)
|
||||
fieldnames = sorted(headers)
|
||||
for fieldname in reader.fieldnames:
|
||||
headers[fieldname] = ""
|
||||
fieldnames = list(headers.keys())
|
||||
|
||||
# By default chain the csv readers together so that the resulting output is
|
||||
# the concatenation of the rows from each of them:
|
||||
|
|
Loading…
Reference in New Issue