From b52d38f648b9cf1a8b99095fa777d4c1a1c686a7 Mon Sep 17 00:00:00 2001 From: Nathan Braswell Date: Wed, 27 Apr 2016 15:59:28 -0400 Subject: [PATCH] Added in version numbers/hashes pulled from git - captain.sh generates at build time compiler_version.krak to be imported by kraken.main --- .gitignore | 1 + captain.sh | 5 +++++ kraken.krak | 12 ++++++++---- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 9bbbe0b..5f63ff6 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,4 @@ kraken_bac kraken_deprecated bootstrap_kalypso kraken_bootstrap +compiler_version.krak diff --git a/captain.sh b/captain.sh index bf8bfc4..d297fa8 100755 --- a/captain.sh +++ b/captain.sh @@ -3,6 +3,10 @@ kraken="kraken" bootstrap_commits=(cf46fb13afe66ba475db9725e9269c9c1cd3bbc3 2cd43e5a217318c70097334b3598d2924f64b362) +# Echo version string to a file included by kraken.krak +# There is a default version string in the file in case kraken is not built with captain +echo "var version_string = \"Self-hosted Kraken compiler \\\"Kalypso\\\" - revision $(git rev-list HEAD | wc -l), commit: $(git rev-parse HEAD)\";" > compiler_version.krak + if [[ $1 == "clean" ]] then rm ${kraken} @@ -73,6 +77,7 @@ else echo "commit hash: ${bootstrap_commits[$i]}" mv ./krakenGrammer.kgm krakenGrammer.kgm_old git checkout ${bootstrap_commits[$i]} + echo "var version_string = \"Self-hosted Kraken compiler \\\"Kalypso\\\" - revision $(git rev-list HEAD | wc -l), commit: $(git rev-parse HEAD)\";" > compiler_version.krak mv ./krakenGrammer.kgm krakenGrammer.kgm_new mv ./krakenGrammer.kgm_old krakenGrammer.kgm ./${kraken}_bootstrap kraken.krak ${kraken}_bootstrap diff --git a/kraken.krak b/kraken.krak index 2158a7a..500a28a 100644 --- a/kraken.krak +++ b/kraken.krak @@ -9,9 +9,16 @@ import tree:* import serialize:* import c_generator:* import os:* +import compiler_version + fun main(argc: int, argv: **char):int { - + if (argc <= 1) { + error("No input file!\n Call with one argument (the input file), or two arguments (input file and output name)") + } else if (string(argv[1]) == "-v" || string(argv[1]) == "--version") { + println(compiler_version::version_string) + exit(0) + } /*var gram.construct(): grammer*/ // delay construction until we either load it or copy construct it var gram: grammer @@ -61,9 +68,6 @@ fun main(argc: int, argv: **char):int { println("done writing") } - if (argc <= 1) { - error("No input file!\n Call with one argument (the input file), or two arguments (input file and output name)") - } var kraken_file_name = string(argv[1]) var parse.construct(gram): parser var ast_pass.construct(): ast_transformation