Typo.
[cdist.git] / cdist
diff --git a/cdist b/cdist
index 139968052bf63298b20b3b788443b4bf55f327df..c68ee22fd3f56ca74d76f5b2ca50e55bdf72fe84 100755 (executable)
--- a/cdist
+++ b/cdist
@@ -114,6 +114,18 @@ class Config:
                          Option('flatpak_state_dir'),
                          Option('parallel', multiprocessing.cpu_count()) ]
 
+        config_dir = '%s/.config' % os.path.expanduser('~')
+        if not os.path.exists(config_dir):
+            os.mkdir(config_dir)
+        config_file = '%s/cdist' % config_dir
+        if not os.path.exists(config_file):
+            f = open(config_file, 'w')
+            for o in self.options:
+                print('# %s ' % o.key, file=f)
+            f.close()
+            print('Template config file written to %s; please edit and try again.' % config_file, file=sys.stderr)
+            sys.exit(1)
+
         try:
             f = open('%s/.config/cdist' % os.path.expanduser('~'), 'r')
             while True:
@@ -541,7 +553,8 @@ class DockerTarget(Target):
 
     def command(self, cmd):
         dir = os.path.join(self.directory, os.path.relpath(os.getcwd(), self.directory))
-        command('%s exec %s -t %s /bin/bash -c \'export %s; cd %s; %s\'' % (config.docker(), self._user_tag(), self.container, self.variables_string(), dir, cmd))
+        interactive_flag = '-i ' if sys.stdin.isatty() else ''
+        command('%s exec %s %s -t %s /bin/bash -c \'export %s; cd %s; %s\'' % (config.docker(), self._user_tag(), interactive_flag, self.container, self.variables_string(), dir, cmd))
 
     def cleanup(self):
         super(DockerTarget, self).cleanup()
@@ -921,7 +934,13 @@ class Tree(object):
     def add_defaults(self, options):
         """Add the defaults from this into a dict options"""
         if 'option_defaults' in self.cscript:
-            for k, v in self.cscript['option_defaults']().items():
+            from_cscript = self.cscript['option_defaults']
+            if isinstance(from_cscript, dict):
+                defaults_dict = from_cscript
+            else:
+                log("Deprecated cscript option_defaults method; replace with a dict")
+                defaults_dict = from_cscript()
+            for k, v in defaults_dict.items():
                 if not k in options:
                     options[k] = v
 
@@ -958,12 +977,19 @@ class Tree(object):
 
     def build_dependencies(self, options):
         for i in self.dependencies(options):
+            global args
+            if args.verbose:
+                print('Building a dependency of %s %s %s with %s' % (self.name, self.specifier, self.version, options))
             i[0].build(i[1])
 
     def build(self, options):
         if self.built:
             return
 
+        global args
+        if args.verbose:
+            print("* Building %s %s %s with %s" % (self.name, self.specifier, self.version, options))
+
         variables = copy.copy(self.target.variables)
 
         # Start with the options passed in
@@ -1030,6 +1056,8 @@ def main():
     parser.add_argument('--no-version-commit', help="use just tags for versioning, don't modify wscript, ChangeLog etc.", action='store_true')
     parser.add_argument('--option', help='set an option for the build (use --option key:value)', action='append')
     parser.add_argument('--ccache', help='use ccache', action='store_true')
+    parser.add_argument('--verbose', help='be verbose', action='store_true')
+    global args
     args = parser.parse_args()
 
     # Check for incorrect multiple parameters