scripts/deps-csv.py (22 lines of code) (raw):
#
# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
# or more contributor license agreements. Licensed under the Elastic License 2.0;
# you may not use this file except in compliance with the Elastic License 2.0.
#
import csv
import sys
# input csv column indices
NAME = 0
VERSION = 1
LICENSE = 2
URL = 3
def main(dependencies_csv):
"""
The input is what we get from `pip-licenses --format=csv --with-urls`
See: https://pypi.org/project/pip-licenses/#csv
Unfortunately, our DRA requires a few more columns that `pip-licenses` does not understand.
This function reorders each row.
:param dependencies_csv:
:return:
"""
rows = []
# read the csv rows into memory
with open(dependencies_csv) as csv_file:
reader = csv.reader(csv_file)
for row in reader:
rows.append(row)
# overwrite the original file
with open(dependencies_csv, "w") as csv_file:
writer = csv.writer(csv_file, quoting=csv.QUOTE_MINIMAL)
# The expected column order (this row is the CSV header)
writer.writerow(["name", "url", "version", "revision", "license", "sourceURL"])
# reorder each row using the expected column order. (leaves 'revision' and 'sourceURL' empty)
for row in rows[1:]: # skip the header row
writer.writerow([row[NAME], row[URL], row[VERSION], "", row[LICENSE], ""])
if __name__ == "__main__":
depenencies_csv = sys.argv[1]
print(f"post-processing {depenencies_csv}") # noqa
main(depenencies_csv)
print(f"wrote output to {depenencies_csv}") # noqa