TOML_FILE := "typst.toml"

get_value_from_toml key:
  #!/bin/bash
  grep "{{key}}" {{TOML_FILE}} | sed -E 's/.*= "(.*)"/\1/'

get_local_package_dir:
  #!/bin/bash
  if [[ "$OSTYPE" == "darwin"* ]]; then
    # macOS
    echo "$HOME/Library/Application Support/typst/packages"
  elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
    # Linux
    echo "${XDG_DATA_HOME:-$HOME/.local/share}/typst/packages"
  elif [[ "$OSTYPE" == "msys"* || "$OSTYPE" == "cygwin"* ]]; then
    # Windows
    echo "$APPDATA/typst/packages"
  else
    echo "Unsupported OS"
    exit 1
  fi

install:
  #!/bin/bash
  if ! command -v typst &> /dev/null; then
    echo "Error: Typst is not installed. Please install it before running this recipe."
    exit 1
  fi

  PACKAGE_NAME=$(just get_value_from_toml name)
  PACKAGE_VERSION=$(just get_value_from_toml version)
  LOCAL_PACKAGE_DIR=$(just get_local_package_dir)
  TARGET_DIR="$LOCAL_PACKAGE_DIR/local/$PACKAGE_NAME/$PACKAGE_VERSION"

  mkdir -p "$TARGET_DIR"

  echo "Copying files to $TARGET_DIR..."
  
  cp {{TOML_FILE}} "$TARGET_DIR"

  cp *.typ "$TARGET_DIR"
  
  if [ -f "glotter.wasm" ]; then
    cp glotter.wasm "$TARGET_DIR"
  else
    echo "Warning: glotter.wasm not found in current directory."
    exit 1
  fi

  [ -f "README.md" ] && cp README.md "$TARGET_DIR"
  [ -f "NOTICE.md" ] && cp NOTICE.md "$TARGET_DIR"
  [ -f "LICENSE-MIT" ] && cp LICENSE-MIT "$TARGET_DIR"
  [ -f "LICENSE-CC-BY-SA-3.0" ] && cp LICENSE-CC-BY-SA-3.0 "$TARGET_DIR"

  echo "Package $PACKAGE_NAME version $PACKAGE_VERSION has been installed."

clean:
  #!/bin/bash
  PACKAGE_NAME=$(just get_value_from_toml name)
  PACKAGE_VERSION=$(just get_value_from_toml version)
  LOCAL_PACKAGE_DIR=$(just get_local_package_dir)
  TARGET_DIR="$LOCAL_PACKAGE_DIR/local/$PACKAGE_NAME/$PACKAGE_VERSION"
  
  if [ -d "$TARGET_DIR" ]; then
    rm -rf "$TARGET_DIR"
    echo "Directory $TARGET_DIR has been removed."
  else
    echo "Directory $TARGET_DIR does not exist."
  fi
