#!/usr/bin/env ruby require File.dirname(__FILE__) + '/../lib/s3_website' class Cfg < Thor desc 'create', 'Create a config file with placeholder values' def create S3Website::Tasks.config_create Dir.pwd end desc 'apply', 'Apply the configuration on the AWS services' long_desc <<-LONGDESC `s3_website cfg apply` will apply the configuration the S3 bucket. In addition, if you CloudFront related settings, this command will apply them on the CloudFront distribution. If the S3 bucket does not exist, this command will create it and configure it to function as a website. LONGDESC def apply puts 'Applying the configurations in s3_website.yml on the AWS services ...' puts `configure-s3-website --config-file s3_website.yml` end end class Cli < Thor option( :site, :type => :string, :default => '_site', :desc => 'The directory where your website files are' ) option( :headless, :type => :boolean, :desc => 'When headless, s3_website will not require human interaction at any point' ) desc 'push', 'Push local files with the S3 website' long_desc <<-LONGDESC `s3_website push` will upload new and changes files to S3. It will also delete from S3 the files that you no longer have locally. LONGDESC def push S3Website::Tasks.push(options[:site], options[:headless]) end desc 'cfg SUBCOMMAND ...ARGS', 'Operate on the config file' subcommand 'cfg', Cfg end Cli.start(ARGV)