Advertisement
cirossmonteiro

merge package.json

Feb 2nd, 2023
955
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.37 KB | Source Code | 0 0
  1. """
  2. add the following command to package.json
  3. - "merge-packages-json": "python3 src/react-utils/merge_packages_json.py react-utils"
  4. """
  5. import json
  6. import sys
  7.  
  8.  
  9. paths = sys.argv[1:]
  10.  
  11. main_package = "package.json"
  12. main = None
  13. with open(main_package) as fh:
  14.     main = json.load(fh)
  15.  
  16. obj_conflict = {}
  17. first = False
  18. for path in paths:
  19.     package_path = f"src/{path}/package.json"
  20.     with open(package_path) as fh:
  21.         obj = json.load(fh)
  22.         for key in obj["dependencies"]:
  23.             if key in main["dependencies"]:
  24.                 if not first:
  25.                     print("\nCONFLICT DETECTED IN DEPENDENCIES!!!\n")
  26.                 print(f"Package conflict: {key}")
  27.                 v_main, v_obj = main["dependencies"][key], obj["dependencies"][key]
  28.                 cmd = input(f"Type a number (default: 0):\n(0) highest\n(1) {v_main}\n(2) {v_obj}")
  29.                 cmd = "0" if cmd == "" else cmd
  30.                 first = True
  31.                 if cmd == "0":
  32.                     # to-do: fix because 18.0.6 < 18.0.10, but lexicographically "18.0.6" > "18.0.10"
  33.                     obj_conflict[key] = max([v_main, v_obj])
  34.                 elif cmd == "1":
  35.                     obj_conflict[key] = v_main
  36.                 elif cmd == "2":
  37.                     obj_conflict[key] = v_obj
  38.                 print(f"Selected: {obj_conflict[key]}\n")
  39.  
  40. print(obj_conflict)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement