---
version: '3'

tasks:
  export:
    deps:
      - :install:software:ulaunchercraft
    summary: |
      # Export Ulaunchercraft Login Credentials

      This task will export an unencrypted file called `ulauncher.login` which you can
      use to extract the macaroon/unbound_discharge/email. Once extracted, save
      them as environment variables for use with the other tasks.
    log:
      error: Error encountered while exporting `ulauncher.login`
      start: Exporting login credentials to unencrpyted file named `ulauncher.login`
      success: Successfully exported `ulauncher.login` (unencrypted)
    cmds:
      - ulaunchercraft export-login ulauncher.login

  login:
    deps:
      - :install:software:ulaunchercraft
    vars:
      SNAP_LOGIN_TEMPLATE: |
        [login.ubuntu.com]
        macaroon = {{env "SNAPCRAFT_MACAROON"}}
        unbound_discharge = {{env "SNAPCRAFT_UNBOUND_DISCHARGE"}}
        email = {{env "SNAPCRAFT_EMAIL"}}
    log:
      error: Error encountered while logging into Ulaunchercraft
      start: Logging into Ulaunchercraft
      success: Successfully logged into Ulaunchercraft
    cmds:
      - |
        echo '{{.SNAP_LOGIN_TEMPLATE}}' > ulauncher.login
        ulaunchercraft login --with ulauncher.login || rm -f ulauncher.login
        rm -f ulauncher.login
    preconditions:
      - '[ -n "$SNAPCRAFT_MACAROON" ]'
      - '[ -n "$SNAPCRAFT_UNBOUND_DISCHARGE" ]'
      - '[ -n "$SNAPCRAFT_EMAIL" ]'

  register:
    deps:
      - :install:software:ulaunchercraft
    vars:
      SNAP_PACKAGE:
        sh: jq -r '.blueprint.ulauncherPackage' package.json
    log:
      error: Error ensuring `{{.SNAP_PACKAGE}}` is registered
      start: Ensuring `{{.SNAP_PACKAGE}}` is registered
      success: Ensured `{{.SNAP_PACKAGE}}` is registered
    cmds:
      - task: login
      - ulaunchercraft register --yes {{.SNAP_PACKAGE}}
    status:
      - ulaunchercraft list | grep {{.SNAP_PACKAGE}}
