diff --git a/blueprint-compiler.py b/blueprint-compiler.py index 91a8dde..a3eb0e9 100755 --- a/blueprint-compiler.py +++ b/blueprint-compiler.py @@ -26,7 +26,13 @@ dirname = os.path.join(os.path.dirname(os.path.dirname(__file__)), "share", "blu if os.path.isdir(os.path.join(dirname, "blueprintcompiler")): sys.path.insert(0, dirname) +# Get the configured (or, if running from source, not configured) version number +version = "@VERSION@" + +def literal(key): + return "@" + key + "@" + from blueprintcompiler import main if __name__ == "__main__": - main.main() + main.main("uninstalled" if version == literal("VERSION") else version) diff --git a/blueprintcompiler/lsp.py b/blueprintcompiler/lsp.py index fbc45ea..224da67 100644 --- a/blueprintcompiler/lsp.py +++ b/blueprintcompiler/lsp.py @@ -151,6 +151,8 @@ class LanguageServer: @command("initialize") def initialize(self, id, params): + from . import main + self.client_capabilities = params.get("capabilities") self._send_response(id, { "capabilities": { @@ -167,7 +169,11 @@ class LanguageServer: "completionProvider": {}, "codeActionProvider": {}, "hoverProvider": True, - } + }, + "serverInfo": { + "name": "Blueprint", + "version": main.VERSION, + }, }) @command("textDocument/didOpen") diff --git a/blueprintcompiler/main.py b/blueprintcompiler/main.py index b79de43..1a5e92a 100644 --- a/blueprintcompiler/main.py +++ b/blueprintcompiler/main.py @@ -27,9 +27,7 @@ from . import parser, tokenizer, decompiler, interactive_port from .utils import Colors from .xml_emitter import XmlEmitter - -VERSION = "0.1.0" - +VERSION = "uninstalled" class BlueprintApp: def main(self): @@ -53,6 +51,8 @@ class BlueprintApp: self.add_subcommand("help", "Show this message", self.cmd_help) + self.parser.add_argument("--version", action="version", version=VERSION) + try: opts = self.parser.parse_args() opts.func(opts) @@ -144,5 +144,7 @@ class BlueprintApp: return ast.generate(), warnings -def main(): +def main(version): + global VERSION + VERSION = version BlueprintApp().main() diff --git a/meson.build b/meson.build index 1cba9b0..bca5f23 100644 --- a/meson.build +++ b/meson.build @@ -17,13 +17,16 @@ configure_file( install_dir: join_paths(datadir, 'pkgconfig'), ) -install_data( - 'blueprint-compiler.py', +blueprint_compiler = configure_file( + input: 'blueprint-compiler.py', + output: 'blueprint-compiler', + configuration: { + 'VERSION': meson.project_version(), + }, install_dir: get_option('bindir'), - rename: 'blueprint-compiler', ) -meson.override_find_program('blueprint-compiler', find_program('blueprint-compiler.py')) +meson.override_find_program('blueprint-compiler', blueprint_compiler) if not meson.is_subproject() install_subdir('blueprintcompiler', install_dir: datadir / 'blueprint-compiler')