local windows_pipe = '\\\\\\\\.\\\\pipe\\\\docker_engine';
local windows_pipe_volume = 'docker_pipe';
local versions = [
  //'1803',
  '1809',
];
local trigger = {
  ref: [
    'refs/heads/master',
    'refs/tags/**',
  ],
};
local pipeline_name(version) = 'Windows ' + version;

local pipeline(version, arch) = {
  kind: 'pipeline',
  name: pipeline_name(version),

  platform: {
    os: 'windows',
    arch: arch,
    version: version,
  },

  steps: [{
    name: 'git',
    image: 'plugins/docker:windows-1809',  // TODO: This should just use the manifest
    settings: {
      repo: 'drone/git',
      dockerfile: 'docker/Dockerfile.windows.' + version,
      auto_tag: true,
      auto_tag_suffix: 'windows-' + version + '-' + arch,

      username: { from_secret: 'docker_username' },
      password: { from_secret: 'docker_password' },

      // Windows specific options
      daemon_off: true,
      purge: 'false',  // TODO: Fix bug where setting false won't generate the yaml value
    },
    volumes: [{ name: windows_pipe_volume, path: windows_pipe }],
  }],

  volumes: [{ name: windows_pipe_volume, host: { path: windows_pipe } }],
  trigger: trigger,
};

[
  pipeline(version, 'amd64')
  for version in versions
] + [
  {
    kind: 'pipeline',
    name: 'Image Manifest',

    steps: [{
      name: 'manifest',
      image: 'plugins/manifest',
      settings: {
        spec: 'docker/manifest.tmpl',
        ignore_missing: true,

        username: { from_secret: 'docker_username' },
        password: { from_secret: 'docker_password' },
      },
    }],

    depends_on: [
      pipeline_name(version)
      for version in versions
    ],
    trigger: trigger,
  },
]