示例#1
0
 def visit_fileinserter(self, node):
     # perform the dumping operation.
     new = node.dumps(self.flatten())
     # check if we should write this out
     if node.check:
         msg = "The current state to insert is:\n\n{0}\n"
         print(msg.format(textwrap.indent(new, "    ")))
         ap = "Would you like to write out the current state, " + YN
         asker = TrueFalse(prompt=ap)
         do_save = self.visit(asker)
         if not do_save:
             return Unstorable
     # get and backup the file.
     fname = None
     if node.ask_filename:
         fname = self.visit_input(node)
     if fname is None or len(fname) == 0:
         fname = node.default_file
     if os.path.isfile(fname):
         with open(fname, "r") as f:
             s = f.read()
         before, _, s = s.partition(node.prefix)
         _, _, after = s.partition(node.suffix)
         backup_file(fname)
     else:
         before = after = ""
         dname = os.path.dirname(fname)
         if dname:
             os.makedirs(dname, exist_ok=True)
     # write out the file
     with open(fname, "w") as f:
         f.write(before + new + after)
     return fname
示例#2
0
 def visit_savejson(self, node):
     jstate = json.dumps(self.state,
                         indent=1,
                         sort_keys=True,
                         default=serialize_xonsh_json)
     if node.check:
         msg = "The current state is:\n\n{0}\n"
         print(msg.format(textwrap.indent(jstate, "    ")))
         ap = "Would you like to save this state, " + YN
         asker = TrueFalse(prompt=ap)
         do_save = self.visit(asker)
         if not do_save:
             return Unstorable
     fname = None
     if node.ask_filename:
         fname = self.visit_input(node)
     if fname is None or len(fname) == 0:
         fname = node.default_file
     if os.path.isfile(fname):
         backup_file(fname)
     else:
         os.makedirs(os.path.dirname(fname), exist_ok=True)
     with open(fname, "w") as f:
         f.write(jstate)
     return fname
示例#3
0
 def visit_fileinserter(self, node):
     # perform the dumping operation.
     new = node.dumps(self.flatten())
     # check if we should write this out
     if node.check:
         msg = "The current state to insert is:\n\n{0}\n"
         print(msg.format(textwrap.indent(new, "    ")))
         ap = "Would you like to write out the current state, " + YN
         asker = TrueFalse(prompt=ap)
         do_save = self.visit(asker)
         if not do_save:
             return Unstorable
     # get and backup the file.
     fname = None
     if node.ask_filename:
         fname = self.visit_input(node)
     if fname is None or len(fname) == 0:
         fname = node.default_file
     if os.path.isfile(fname):
         with open(fname, "r") as f:
             s = f.read()
         before, _, s = s.partition(node.prefix)
         _, _, after = s.partition(node.suffix)
         backup_file(fname)
     else:
         before = after = ""
         dname = os.path.dirname(fname)
         if dname:
             os.makedirs(dname, exist_ok=True)
     # write out the file
     with open(fname, "w") as f:
         f.write(before + new + after)
     return fname
示例#4
0
 def visit_fileinserter(self, node):
     # perform the dumping operation.
     lines = [node.prefix]
     flat = self.flatten()
     for path, value in sorted(flat.items()):
         rule, func = node.find_rule(path)
         if func is None:
             continue
         line = func(path, value)
         lines.append(line)
     lines.append(node.suffix)
     new = '\n'.join(lines) + '\n'
     # check if we should write this out
     if node.check:
         msg = 'The current state to insert is:\n\n{0}\n'
         print(msg.format(textwrap.indent(new, '    ')))
         ap = 'Would you like to write out the current state, ' + YN
         asker = TrueFalse(prompt=ap)
         do_save = self.visit(asker)
         if not do_save:
             return Unstorable
     # get and backup the file.
     fname = None
     if node.ask_filename:
         fname = self.visit_input(node)
     if fname is None or len(fname) == 0:
         fname = node.default_file
     if os.path.isfile(fname):
         with open(fname, 'r') as f:
             s = f.read()
         before, _, s = s.partition(node.prefix)
         _, _, after = s.partition(node.suffix)
         backup_file(fname)
     else:
         before = after = ''
         dname = os.path.dirname(fname)
         if dname:
             os.makedirs(dname, exist_ok=True)
     # write out the file
     with open(fname, 'w') as f:
         f.write(before + new + after)
     return fname
示例#5
0
文件: wizard.py 项目: bvenkatr/xonsh
 def visit_save(self, node):
     jstate = json.dumps(self.state, indent=1, sort_keys=True)
     if node.check:
         msg = 'The current state is:\n\n{0}\n'
         print(msg.format(textwrap.indent(jstate, '    ')))
         ap = 'Would you like to save this state, ' + YN
         asker = TrueFalse(prompt=ap)
         do_save = self.visit(asker)
         if not do_save:
             return Unstorable
     fname = self.visit_input(node)
     if fname is None or len(fname) == 0:
         fname = node.default_file
     if os.path.isfile(fname):
         backup_file(fname)
     else:
         os.makedirs(os.path.dirname(fname), exist_ok=True)
     with open(fname, 'w') as f:
         f.write(jstate)
     return fname