mirror of
https://gitlab.gnome.org/jwestman/blueprint-compiler.git
synced 2025-05-04 15:59:08 -04:00
Create an interactive porting tool
`blueprint-compiler port` interactively ports a project to blueprint. It will create the subproject wrap file, add it to .gitignore, decompile your GtkBuilder XML files, emit code to copy and paste into your meson.build file, and update POTFILES.in. It can't quite handle all of the features the forward compiler can, so it will skip those files.
This commit is contained in:
parent
84dfe74755
commit
8e4433a487
19 changed files with 921 additions and 61 deletions
|
@ -20,9 +20,10 @@
|
|||
|
||||
import argparse, json, os, sys
|
||||
|
||||
from .errors import PrintableError, report_compile_error, MultipleErrors
|
||||
from .errors import PrintableError, report_bug, MultipleErrors
|
||||
from .lsp import LanguageServer
|
||||
from . import parser, tokenizer
|
||||
from . import parser, tokenizer, decompiler, interactive_port
|
||||
from .utils import Colors
|
||||
from .xml_emitter import XmlEmitter
|
||||
|
||||
|
||||
|
@ -44,6 +45,8 @@ class BlueprintApp:
|
|||
batch_compile.add_argument("input_dir", metavar="input-dir")
|
||||
batch_compile.add_argument("inputs", nargs="+", metavar="filenames", default=sys.stdin, type=argparse.FileType('r'))
|
||||
|
||||
port = self.add_subcommand("port", "Interactive porting tool", self.cmd_port)
|
||||
|
||||
lsp = self.add_subcommand("lsp", "Run the language server (for internal use by IDEs)", self.cmd_lsp)
|
||||
lsp.add_argument("--logfile", dest="logfile", default=None, type=argparse.FileType('a'))
|
||||
|
||||
|
@ -54,8 +57,12 @@ class BlueprintApp:
|
|||
opts.func(opts)
|
||||
except SystemExit as e:
|
||||
raise e
|
||||
except KeyboardInterrupt:
|
||||
print(f"\n\n{Colors.RED}{Colors.BOLD}Interrupted.{Colors.CLEAR}")
|
||||
except EOFError:
|
||||
print(f"\n\n{Colors.RED}{Colors.BOLD}Interrupted.{Colors.CLEAR}")
|
||||
except:
|
||||
report_compile_error()
|
||||
report_bug()
|
||||
|
||||
|
||||
def add_subcommand(self, name, help, func):
|
||||
|
@ -114,6 +121,10 @@ class BlueprintApp:
|
|||
langserv.run()
|
||||
|
||||
|
||||
def cmd_port(self, opts):
|
||||
interactive_port.run(opts)
|
||||
|
||||
|
||||
def _compile(self, data: str) -> str:
|
||||
tokens = tokenizer.tokenize(data)
|
||||
ast, errors = parser.parse(tokens)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue