---
AWSTemplateFormatVersion: '2010-09-09'
Description: Handel-created S3 bucket

Resources:
  Bucket:
    Type: "AWS::S3::Bucket"
    Properties: 
      {{#if bucketACL}}
      AccessControl: {{bucketACL}}
      {{/if}}
      BucketName: {{bucketName}}
      {{#if loggingBucketName}}
      LoggingConfiguration:
        DestinationBucketName: {{loggingBucketName}}
        LogFilePrefix: {{logFilePrefix}}
      {{/if}}
      {{#if lifecycle_policy}}
      LifecycleConfiguration:
        Rules:
          {{#each lifecycle_policy}}
          - Id: {{name}}
            Status: {{status}}
            {{#if expiration_date}}
            ExpirationDate: {{expiration_date}}
            {{/if}}
            {{#if expiration_days}}
            ExpirationInDays: {{expiration_days}}
            {{/if}}
            {{#if noncurrent_version_expiration_days}}
            NoncurrentVersionExpirationInDays: {{noncurrent_version_expiration_days}}
            {{/if}}
            {{#if noncurrent_version_transitions}}
            NoncurrentVersionTransitions:
            {{#each noncurrent_version_transitions}}
              - StorageClass: {{type}}
                TransitionInDays: {{days}}
            {{/each}}
            {{/if}}
            {{#if prefix}}
            Prefix: {{prefix}}
            {{/if}}
            {{#if transitions}}
            Transitions:
            {{#each transitions}}
              - StorageClass: {{type}}
                {{#if days}}
                TransitionInDays: {{days}}
                {{/if}}
                {{#if date}}
                TransitionDate: {{date}}
                {{/if}}
            {{/each}}
            {{/if}}
          {{/each}}
      {{/if}}
      VersioningConfiguration: 
        Status: {{versioningStatus}}
      {{#if tags}}
      Tags:
      {{#each tags}}
      - Key: {{@key}}
        Value: {{this}}
      {{/each}}
      {{/if}}
      
Outputs:
  BucketName:
    Description: The name of the bucket
    Value: 
      Ref: Bucket
  BucketArn:
    Description: The ARN of the bucket
    Value: 
      Fn::GetAtt: 
        - "Bucket"
        - "Arn"