spec:
  inputs:
    stage:
      default: deploy
    project:
      description: "Le nom du projet Dokku"
    when:
      default: manual
    environment:
      default: production
    url:
      default: ""
    image:
      description: "L'image Docker à déployer"
      default: ""
    remote:
      description: "L'adresse SSH du serveur Dokku"
      default: "ssh://dokku@deploy.runner.iiens.net"
---
.dokku:
  stage: $[[ inputs.stage ]]
  when: $[[ inputs.when ]]
  image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/dokku/ci-docker-image
  variables:
    GIT_PUSH_FLAGS: --force
    BRANCH: main
    GIT_REMOTE_URL: $[[ inputs.remote ]]/$[[ inputs.project ]]
    DEPLOY_DOCKER_IMAGE: $[[ inputs.image ]]
  script:
    - echo "Deploying $DEPLOY_DOCKER_IMAGE to $GIT_REMOTE_URL..."
    - dokku-deploy
  after_script:
    - dokku-unlock

"deploy-$[[ inputs.environment ]]":
  extends: .dokku
  environment:
    name: $[[ inputs.environment ]]
    url: $[[ inputs.url ]]
    action: start
    on_stop: stop-deploy-$[[ inputs.environment ]]

"stop-deploy-$[[ inputs.environment ]]":
  extends: .dokku
  when: manual
  needs:
    - "deploy-$[[ inputs.environment ]]"
  environment:
    name: $[[ inputs.environment ]]
    url: $[[ inputs.url ]]
    action: stop
  script:
    - setup-ssh
    - ssh "$[[ inputs.remote ]]" -- ps:stop "$(parse-app-name)"