From a8bf02167aa26934aa64605c6f12bc7142cd2313 Mon Sep 17 00:00:00 2001
From: Florent Kermarrec <florent@enjoy-digital.fr>
Date: Sun, 12 Apr 2020 19:46:56 +0200
Subject: [PATCH] litex_setup: raise exception on update if repository has been
 been initialized.

---
 litex_setup.py | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/litex_setup.py b/litex_setup.py
index 60582955e..991c23ac4 100755
--- a/litex_setup.py
+++ b/litex_setup.py
@@ -85,14 +85,15 @@ if len(sys.argv) < 2:
 if "init" in sys.argv[1:]:
     os.chdir(os.path.join(current_path))
     for name in repos.keys():
-        url, need_recursive, need_develop = repos[name]
-        # clone repo (recursive if needed)
-        print("[cloning " + name + "]...")
-        full_url = url + name
-        opts = "--recursive" if need_recursive else ""
-        subprocess.check_call(
-            "git clone " + full_url + " " + opts,
-            shell=True)
+        if not os.path.exists(name):
+            url, need_recursive, need_develop = repos[name]
+            # clone repo (recursive if needed)
+            print("[cloning " + name + "]...")
+            full_url = url + name
+            opts = "--recursive" if need_recursive else ""
+            subprocess.check_call(
+                "git clone " + full_url + " " + opts,
+                shell=True)
 
 # Repositories installation
 if "install" in sys.argv[1:]:
@@ -120,6 +121,8 @@ if "install" in sys.argv[1:]:
 # Repositories update
 if "update" in sys.argv[1:]:
     for name in repos.keys():
+        if not os.path.exists(name):
+            raise Exception("{} not initialized, please (re)-run init and install first.".format(name))
         # update
         print("[updating " + name + "]...")
         os.chdir(os.path.join(current_path, name))