import * as core from "@actions/core"

import { RefKey, State } from "../constants"

export function isExactKeyMatch(key: string, cacheKey?: string): boolean {
  return !!(
    cacheKey &&
    cacheKey.localeCompare(key, undefined, {
      sensitivity: "accent",
    }) === 0
  )
}

export function setCacheState(state: string): void {
  core.saveState(State.CacheMatchedKey, state)
}

export function getCacheState(): string | undefined {
  const cacheKey = core.getState(State.CacheMatchedKey)
  if (cacheKey) {
    core.debug(`Cache state/key: ${cacheKey}`)
    return cacheKey
  }

  return undefined
}

export function logWarning(message: string): void {
  const warningPrefix = "[warning]"
  core.info(`${warningPrefix}${message}`)
}

// Cache token authorized for all events that are tied to a ref
// See GitHub Context https://help.github.com/actions/automating-your-workflow-with-github-actions/contexts-and-expression-syntax-for-github-actions#github-context
export function isValidEvent(): boolean {
  return RefKey in process.env && Boolean(process.env[RefKey])
}
