Class: LaneKit::Generate

Inherits:
Thor
  • Object
show all
Includes:
Thor::Actions
Defined in:
lib/lanekit/generate.rb,
lib/lanekit/generate/model.rb,
lib/lanekit/generate/provider.rb,
lib/lanekit/generate/urbanairship.rb,
lib/lanekit/generate/tableviewcontroller.rb

Constant Summary collapse

@@lanekit_version =
LaneKit::VERSION
@@generate_date =
Date.today.to_s
@@template_opts =
{
  :command => LaneKit::CLI.command,
  :generate_date => @@generate_date,
  :lanekit_version => @@lanekit_version
}

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.source_rootObject



6
7
8
# File 'lib/lanekit/generate.rb', line 6

def self.source_root
  File.dirname('./')
end

Instance Method Details

#model(model_name, *attributes) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/lanekit/generate/model.rb', line 14

def model(model_name, *attributes)
  @using_core_data = options[:use_core_data]
  @model_name = LaneKit.derive_model_name(model_name)
  @model_file_name = LaneKit.derive_file_name(@model_name)
  @model_fixtures_file_name = "#{@model_file_name}Fixtures"
  @model_tests_file_name = "#{@model_file_name}Test"

  @class_name = LaneKit.derive_class_name(@model_name)
  
  @attributes = []
  @any_relationships = false
  @first_string_attribute = nil
  
  attributes.each {|attribute|
    name, type, relationship = attribute.split(":")
    objective_c_type = LaneKit.objective_c_type(type)
    @attributes << {
      :type => type,
      :name => name,
      :objective_c_type => objective_c_type,
      :relationship => relationship,
      :relationship_fixtures_file_name => "#{relationship}Fixtures",
      :fixture_json => LaneKit.objective_c_type_fixture_json(type),
      :fixture_value => LaneKit.objective_c_type_fixture_value(type),
      :unit_test_assert => LaneKit.objective_c_type_unit_test_assert(@model_name, name, type)
    }
    @any_relationships = relationship ? true : @any_relationships
    @first_string_attribute = name if !@first_string_attribute && type == 'string'
  }
  
  @lanefile = LaneKit::Lanefile.new
  lanefile_error = LaneKit.validate_lanefile(@lanefile)
  if lanefile_error
    say lanefile_error, :red
    return
  end
  @app_project_path = @lanefile.app_project_path

  self.initialize_model
  self.create_model_folders
  self.create_model_files
end

#pod(pod_name) ⇒ Object



11
12
13
14
15
16
17
18
19
20
# File 'lib/lanekit/generate.rb', line 11

def pod(pod_name)
  pod_name = pod_name.strip
  validate_message = LaneKit.validate_pod_name(pod_name)
  if validate_message
    puts "***error: #{validate_message}"
    return
  end
  
  LaneKit.add_pod_to_podfile(pod_name)
end

#provider(name, model_name, url = nil) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/lanekit/generate/provider.rb', line 14

def provider(name, model_name, url=nil)
  @using_core_data = options[:use_core_data]
  #puts " using Core Data: #{@using_core_data}"
  #puts "            name: #{name}"        
  #puts "      model_name: #{model_name}"        
  #puts "             url: #{url}"

  @provider_name = "#{LaneKit.derive_class_name(name)}Provider"
  @model_name = LaneKit.derive_model_name(model_name)
  @model_class_name = LaneKit.derive_class_name(@model_name)
  @model_file_name = LaneKit.derive_file_name(@model_name)
  @provider_url = url

  @lanefile = LaneKit::Lanefile.new
  lanefile_error = LaneKit.validate_lanefile(@lanefile)
  if lanefile_error
    say lanefile_error, :red
    return
  end
  @app_project_path = @lanefile.app_project_path

  self.initialize_provider
  self.create_provider_folders
  self.create_provider_files
end

#tableviewcontroller(model_name) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/lanekit/generate/tableviewcontroller.rb', line 13

def tableviewcontroller(model_name)
  @using_core_data = options[:use_core_data]
  @register_class = options[:register]
  
  error = self.validate_register_class(@register_class)
  if error
    say error, :red
    return
  end

  @model_name = LaneKit.derive_model_name(model_name)
  @lanefile = LaneKit::Lanefile.new
  lanefile_error = LaneKit.validate_lanefile(@lanefile)
  if lanefile_error
    say lanefile_error, :red
    return
  end
  @app_project_path = @lanefile.app_project_path

  self.initialize_tvc
  self.create_tvc_files
  self.create_register_files
end

#urbanairshipObject



5
6
7
# File 'lib/lanekit/generate/urbanairship.rb', line 5

def urbanairship()
  LaneKit.add_pod_to_podfile('UrbanAirship-iOS-SDK')
end