Class: Antwort::CLI

Inherits:
Thor
  • Object
show all
Includes:
FileHelpers, Thor::Actions
Defined in:
lib/antwort/cli/cli.rb,
lib/antwort/cli/send.rb,
lib/antwort/cli/upload.rb

Defined Under Namespace

Classes: Send, Upload

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from FileHelpers

#count_files, #create_file!, #email_id_from_folder_name, #list_folders

Instance Attribute Details

#email_idObject (readonly)

Returns the value of attribute email_id.



200
201
202
# File 'lib/antwort/cli/cli.rb', line 200

def email_id
  @email_id
end

#project_nameObject (readonly)

Returns the value of attribute project_name.



200
201
202
# File 'lib/antwort/cli/cli.rb', line 200

def project_name
  @project_name
end

Class Method Details

.source_rootObject

set template source path for Thor



9
10
11
# File 'lib/antwort/cli/cli.rb', line 9

def self.source_root
  File.expand_path('../../../template', File.dirname(__FILE__))
end

Instance Method Details

#build(email_id = '') ⇒ Object



134
135
136
137
138
139
140
141
142
143
144
# File 'lib/antwort/cli/cli.rb', line 134

def build(email_id = '')
  if email_id.empty?
    say 'Error: ', :red
    say 'build which email?'
    list
  else
    to_build = options[:all] ? EmailCollection.new.list : email_id
    Build.new(to_build, options).create!
    show_accuracy_warning if options[:partials]
  end
end

#init(project_name) ⇒ Object



31
32
33
34
35
36
37
38
39
40
# File 'lib/antwort/cli/cli.rb', line 31

def init(project_name)
  @project_name = project_name
  @user         = options[:user] if options[:user]
  @key          = options[:key] if options[:key]

  copy_project
  initialize_git_repo if options[:git]
  run_bundler if options[:bundle]
  say "New project initialized in: ./#{project_directory}/", :green
end

#listObject



55
56
57
58
59
# File 'lib/antwort/cli/cli.rb', line 55

def list
  EmailCollection.new.list.each do |email_id|
    puts "- #{email_id}"
  end
end

#new(email_id) ⇒ Object



46
47
48
49
# File 'lib/antwort/cli/cli.rb', line 46

def new(email_id)
  @email_id = email_id
  copy_email
end

#pruneObject



154
155
156
157
158
159
160
161
162
163
164
165
166
# File 'lib/antwort/cli/cli.rb', line 154

def prune
  if confirms_prune?
    build_dir = File.expand_path('./build')
    Dir.foreach(build_dir) do |f|
      next if f.to_s[0] == '.'
      say '  delete ', :red
      say "./build/#{f}/"
      FileUtils.rm_rf(File.expand_path("./build/#{f}"))
    end
  else
    say 'prune aborted.'
  end
end

#remove(email_id) ⇒ Object



176
177
178
179
180
181
182
183
184
185
186
187
188
189
# File 'lib/antwort/cli/cli.rb', line 176

def remove(email_id)
  @email_id = email_id

  unless can_remove?
    say "The '#{email_id}' folder is a project dependency and cannot be removed.", :red
    return
  end

  if confirms_remove?
    remove_email
  else
    say 'Remove aborted.'
  end
end

#send(email_id) ⇒ Object



88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/antwort/cli/cli.rb', line 88

def send(email_id)
  require 'antwort/cli/send'
  build = last_build_by_id(email_id)

  if build.nil?
    say '   warning  ', :yellow
    say "No build found for '#{email_id}'. Building now..."
    build(email_id)
    build = last_build_by_id(email_id)
  end

  Send.new(build, options).send
end

#serverObject



110
111
112
113
# File 'lib/antwort/cli/cli.rb', line 110

def server
  require 'antwort'
  Antwort::Server.run!(port: options[:port])
end

#upload(email_id) ⇒ Object



66
67
68
69
# File 'lib/antwort/cli/cli.rb', line 66

def upload(email_id)
  require 'antwort/cli/upload'
  Upload.new(email_id).upload
end

#versionObject



194
195
196
# File 'lib/antwort/cli/cli.rb', line 194

def version
  puts "Version: #{Antwort::VERSION}" if options[:version]
end