from os import system, mkdir from re import findall from sys import argv import requests def npm_create_package_lock_file(package): system("npm i --package-lock-only " + package) def get_all_urls_packages(): with open("package-lock.json", "rt") as package_lock_file: content = package_lock_file.read() return list(dict.fromkeys(findall("https://.+.tgz", content))) def download_npm_package(url:str, dir="npm-packages"): try: mkdir(dir) except: pass with open(dir + "/" + url.split("/")[-1], "wb") as npm_package_file: npm_package_file.write(requests.get(url)) def download_all_package(): packages_urls = get_all_urls_packages() for package_url in packages_urls: download_npm_package(package_url, "npm-packages") def upload_package(nexus_host, repository, package_file): if nexus_host[-1] != "/": nexus_host += "/" res = requests.post( nexus_host + "service/rest/v1/components?repository=" + repository, headers={ "accept": "application/json", "Content-Type": "multipart/form-data" }, files={ "npm.asset": open(package_file, "rb") }) return res def publish_all_packages(): pass def main(): npm_create_package_lock_file(argv[1]) urls_packages = get_all_urls_packages() if __name__ == "__main__": main()