mirror of
https://github.com/darkrenaissance/darkfi.git
synced 2026-01-09 14:48:08 -05:00
contrib/cargo-outdated: Automagic updates.
This commit is contained in:
@@ -9,7 +9,7 @@ from os.path import exists, join
|
||||
from subprocess import PIPE
|
||||
|
||||
import semver
|
||||
import toml
|
||||
import tomlkit
|
||||
from colorama import Fore, Style
|
||||
from prettytable import PrettyTable
|
||||
|
||||
@@ -32,11 +32,11 @@ if exists(PICKLE_CACHE):
|
||||
METADATA_PATHS = json.loads(json_data)
|
||||
|
||||
|
||||
def parse_toml(file):
|
||||
with open(file) as f:
|
||||
def parse_toml(filename):
|
||||
with open(filename) as f:
|
||||
content = f.read()
|
||||
|
||||
p = toml.loads(content)
|
||||
p = tomlkit.parse(content)
|
||||
deps = p.get("dependencies")
|
||||
devdeps = p.get("dev-dependencies")
|
||||
|
||||
@@ -49,7 +49,7 @@ def parse_toml(file):
|
||||
else:
|
||||
dependencies = None
|
||||
|
||||
return (p["package"]["name"], dependencies)
|
||||
return (p, dependencies)
|
||||
|
||||
|
||||
def get_metadata_path(name):
|
||||
@@ -108,6 +108,10 @@ def main():
|
||||
parser = ArgumentParser(
|
||||
description="Prettyprint outdated dependencies in a cargo project")
|
||||
|
||||
parser.add_argument("-u",
|
||||
"--update",
|
||||
action="store_true",
|
||||
help="Prompt to update dependencies")
|
||||
parser.add_argument("-i",
|
||||
"--ignore",
|
||||
type=str,
|
||||
@@ -145,9 +149,9 @@ def main():
|
||||
x = PrettyTable()
|
||||
x.field_names = ["package", "crate", "current", "latest", "path"]
|
||||
|
||||
for file in files:
|
||||
package, deps = parse_toml(file)
|
||||
parse_toml(file)
|
||||
for filename in files:
|
||||
ps, deps = parse_toml(filename)
|
||||
package = ps["package"]["name"]
|
||||
print(f"Checking deps for {Fore.GREEN}{package}{Style.RESET_ALL}")
|
||||
for dep in deps:
|
||||
ret = check_dep(dep, deps[dep])
|
||||
@@ -157,9 +161,23 @@ def main():
|
||||
dep,
|
||||
f"{Fore.YELLOW}{ret[0]}{Style.RESET_ALL}",
|
||||
f"{Fore.GREEN}{ret[1]}{Style.RESET_ALL}",
|
||||
file,
|
||||
filename,
|
||||
])
|
||||
|
||||
if args.update and ret:
|
||||
print(f"Update {dep} from {ret[0]} to {ret[1]}? (y/N)")
|
||||
choice = input()
|
||||
if choice and (choice == "y" or choice == "Y"):
|
||||
if "dependencies" in ps and dep in ps["dependencies"]:
|
||||
if ps["dependencies"][dep] == ret[0]:
|
||||
ps["dependencies"][dep] = ret[1]
|
||||
else:
|
||||
ps["dependencies"][dep]["version"] = ret[1]
|
||||
|
||||
if args.update:
|
||||
with open(filename, "w") as f:
|
||||
f.write(tomlkit.dumps(ps))
|
||||
|
||||
print(x)
|
||||
|
||||
# Write the pickle
|
||||
|
||||
Reference in New Issue
Block a user