diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..696e053 --- /dev/null +++ b/build.sh @@ -0,0 +1,66 @@ +#!/bin/sh + +# Exit if subprocess return non-zero exit code +set -e + +# Log function +log () { + echo -e "\033[0;32m[LOG]\033[0m $1" +} +err () { + echo -e "\033[0;31m[ERR]\033[0m $1" +} + +# This will always be true unless there is +# missing executable that we need to use +install_pass=true + +# Check if $1 is installed +check_installed () { + if ! command -v $1 -h &> /dev/null + then + err "$1 is not installed" + if [ install_pass ]; then + install_pass=false + fi + fi +} + +check_installed cargo +check_installed git +check_installed deno # deno is required for running transpiled program + +# If all of the above is installed +if [ ! install_pass ]; then + exit 1 +fi +log "Dependencies is installed. Cloning..." + +rm -rf ~/.cache/hazure/build/ +git clone https://github.com/azur1s/hazure.git ~/.cache/hazure/build/ + +cd ~/.cache/hazure/build/ + +# Remove the progress bar +CARGO_TERM_PROGRESS_WHEN=never + +if [ $1 = "d" ]; then + log "Building in debug..." + cargo build + rm ~/bin/hazure -f + mv ~/.cache/hazure/build/target/debug/hazure ~/bin/hazure +else + log "Building..." + cargo build --release + rm ~/bin/hazure -f + mv ~/.cache/hazure/build/target/release/hazure ~/bin/hazure +fi + +unset CARGO_TERM_PROGRESS_WHEN + +log "Build done. Cleaning up..." + +rm -rf ~/.cache/hazure/build/ + +log "Done." +hazure -h diff --git a/crates/main/src/args.rs b/crates/main/src/args.rs index 41d55a3..22312ee 100644 --- a/crates/main/src/args.rs +++ b/crates/main/src/args.rs @@ -3,7 +3,7 @@ use clap::{ Parser, Subcommand }; const VERSION: &str = env!("CARGO_PKG_VERSION"); -/// Hades compiler. +/// Hazure compiler #[derive(Parser, Debug)] #[clap( version = VERSION, @@ -17,17 +17,17 @@ pub struct Args { pub enum Options { #[clap(about = "Compile an input file.")] Compile { - /// The input file to compile. + /// The input file to compile #[clap(parse(from_os_str))] input: PathBuf, - /// Print parsed AST and exit (for debugging). + /// Print parsed AST and exit (for debugging) #[clap(short, long)] ast: bool, - /// Log process. + /// Log process #[clap(short, long)] log: bool, - /// Output file path. + /// Output file path #[clap(short, long, parse(from_os_str))] output: Option, }, -} \ No newline at end of file +} diff --git a/example/69.hz b/example/69.hz index bc8399a..0c15b59 100644 --- a/example/69.hz +++ b/example/69.hz @@ -5,9 +5,10 @@ end; fun main: void = do let result: int = add2(34, 35); @write(result); + @write("\n"); if result == 69 then - @write("big cool") + @write("big cool"); else - @write("not cool") + @write("not cool"); end; end; diff --git a/example/iter.hz b/example/iter.hz index 32cc159..ca94b07 100644 --- a/example/iter.hz +++ b/example/iter.hz @@ -5,7 +5,7 @@ fun iter_ (vec: vec_int) (current: int): void = do do -- iter logic -- TODO: function as argument - @get(vec, current) |> @write(_); + @get(vec current) |> @write(_); @write("\n"); iter_(vec, current + 1);