text: 'use strict';
  
  const BbPromise = require('bluebird');
  const userStats = require('../../utils/userStats');
  
  class Rollback {
    constructor(serverless) {
      this.serverless = serverless;
  
      this.commands = {
        rollback: {
          usage: 'Rollback the Serverless service to a specific deployment',
          configDependent: true,
          lifecycleEvents: ['initialize', 'rollback'],
          options: {
            timestamp: {
              usage: 'Timestamp of the deployment (list deployments with `serverless deploy list`)',
              shortcut: 't',
              required: false,
            },
            verbose: {
              usage: 'Show all stack events during deployment',
              shortcut: 'v',
            },
          },
          commands: {
            function: {
              usage: 'Rollback the function to the previous version',
              lifecycleEvents: ['rollback'],
              options: {
                function: {
                  usage: 'Name of the function',
                  shortcut: 'f',
                  required: true,
                },
                version: {
                  usage: 'Version of the function',
                  shortcut: 'v',
                  required: true,
                },
                stage: {
                  usage: 'Stage of the function',
                  shortcut: 's',
                },
                region: {
                  usage: 'Region of the function',
                  shortcut: 'r',
                },
              },
            },
          },
        },
      };
  
      this.hooks = {
        'after:rollback:rollback': () => BbPromise.bind(this).then(this.track),
      };
    }
  
    track() {
      userStats.track('service_rolledBack');
      return BbPromise.resolve();
    }
  }
  
  module.exports = Rollback;
  