1
1
Fork 0
mirror of https://github.com/azur1s/bobbylisp.git synced 2024-10-16 02:37:40 -05:00

build script

This commit is contained in:
Natapat Samutpong 2022-03-25 12:51:37 +07:00
parent e19e468545
commit 222cd44bb3
4 changed files with 76 additions and 9 deletions

66
build.sh Executable file
View file

@ -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

View file

@ -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,16 +17,16 @@ 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<PathBuf>,
},

View file

@ -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;

View file

@ -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);