mvcgen 0.1.14 → 0.1.18
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/mvcgen/filemanager.rb +1 -1
- data/lib/mvcgen/generator.rb +36 -33
- data/lib/mvcgen/version.rb +1 -1
- data/lib/templates/default/mvcspec.yml +1 -1
- data/lib/templates/default/podfile/Podfile +73 -0
- data/lib/templates/default/swift/AppDelegate.swift +181 -0
- data/lib/templates/default/swift/Assets.xcassets/AppIcon.appiconset/Contents.json +133 -0
- data/lib/templates/default/swift/Assets.xcassets/Back.imageset/Contents.json +21 -0
- data/lib/templates/default/swift/Assets.xcassets/Back.imageset/icons8-back-filled-100-2.png +0 -0
- data/lib/templates/default/swift/Assets.xcassets/Contents.json +6 -0
- data/lib/templates/default/swift/Assets.xcassets/Down.imageset/Contents.json +21 -0
- data/lib/templates/default/swift/Assets.xcassets/Down.imageset/icons8-expand-arrow-filled-100.png +0 -0
- data/lib/templates/default/swift/Assets.xcassets/Forward.imageset/Contents.json +21 -0
- data/lib/templates/default/swift/Assets.xcassets/Forward.imageset/icons8-forward-filled-100.png +0 -0
- data/lib/templates/default/swift/Assets.xcassets/Key.imageset/Contents.json +1 -0
- data/lib/templates/default/swift/Assets.xcassets/Key.imageset/universal_Key.pdf +0 -0
- data/lib/templates/default/swift/Assets.xcassets/Shopping-cart.imageset/Contents.json +1 -0
- data/lib/templates/default/swift/Assets.xcassets/Shopping-cart.imageset/universal_Shopping-cart.pdf +0 -0
- data/lib/templates/default/swift/Assets.xcassets/Tick.imageset/Contents.json +21 -0
- data/lib/templates/default/swift/Assets.xcassets/Tick.imageset/icons8-Checkmark-96 (1).png +0 -0
- data/lib/templates/default/swift/Assets.xcassets/Up.imageset/Contents.json +22 -0
- data/lib/templates/default/swift/Assets.xcassets/Up.imageset/icons8-collapse-arrow-100.png +0 -0
- data/lib/templates/default/swift/Assets.xcassets/Up.imageset/icons8-collapse-arrow-50.png +0 -0
- data/lib/templates/default/swift/Assets.xcassets/Uruguay.imageset/Contents.json +21 -0
- data/lib/templates/default/swift/Assets.xcassets/Uruguay.imageset/icons8-uruguay-40.png +0 -0
- data/lib/templates/default/swift/Assets.xcassets/Wallet.imageset/Contents.json +1 -0
- data/lib/templates/default/swift/Assets.xcassets/Wallet.imageset/universal_Wallet.pdf +0 -0
- data/lib/templates/default/swift/Assets.xcassets/Welcome_001.imageset/Contents.json +12 -0
- data/lib/templates/default/swift/Assets.xcassets/Welcome_001.imageset/Icons_NotATour_Welcome_001.pdf +0 -0
- data/lib/templates/default/swift/Assets.xcassets/Welcome_002.imageset/Contents.json +12 -0
- data/lib/templates/default/swift/Assets.xcassets/Welcome_002.imageset/Icons_NotATour_Welcome_002.pdf +0 -0
- data/lib/templates/default/swift/Assets.xcassets/Welcome_003.imageset/Contents.json +12 -0
- data/lib/templates/default/swift/Assets.xcassets/Welcome_003.imageset/Icons_NotATour_Welcome_003.pdf +0 -0
- data/lib/templates/default/swift/Assets.xcassets/Welcome_004.imageset/Contents.json +12 -0
- data/lib/templates/default/swift/Assets.xcassets/Welcome_004.imageset/Icons_NotATour_Welcome_004.pdf +0 -0
- data/lib/templates/default/swift/Assets.xcassets/alert_beach.imageset/Contents.json +21 -0
- data/lib/templates/default/swift/Assets.xcassets/alert_beach.imageset/icons8-beach-64.png +0 -0
- data/lib/templates/default/swift/Assets.xcassets/alert_nobaggage.imageset/Contents.json +21 -0
- data/lib/templates/default/swift/Assets.xcassets/alert_nobaggage.imageset/icons8-no-baggage-100.png +0 -0
- data/lib/templates/default/swift/Assets.xcassets/alert_signpost.imageset/Contents.json +21 -0
- data/lib/templates/default/swift/Assets.xcassets/alert_signpost.imageset/icons8-signpost-64.png +0 -0
- data/lib/templates/default/swift/Assets.xcassets/alert_sunbed.imageset/Contents.json +21 -0
- data/lib/templates/default/swift/Assets.xcassets/alert_sunbed.imageset/sunbed.png +0 -0
- data/lib/templates/default/swift/Assets.xcassets/arrow.imageset/Contents.json +21 -0
- data/lib/templates/default/swift/Assets.xcassets/arrow.imageset/arrow.pdf +0 -0
- data/lib/templates/default/swift/Assets.xcassets/baggage.imageset/Contents.json +22 -0
- data/lib/templates/default/swift/Assets.xcassets/baggage.imageset/baggage.png +0 -0
- data/lib/templates/default/swift/Assets.xcassets/baggage.imageset/baggage@2x.png +0 -0
- data/lib/templates/default/swift/Assets.xcassets/burger.imageset/Contents.json +21 -0
- data/lib/templates/default/swift/Assets.xcassets/burger.imageset/burger.pdf +0 -0
- data/lib/templates/default/swift/Assets.xcassets/calendar-white.imageset/Contents.json +12 -0
- data/lib/templates/default/swift/Assets.xcassets/calendar-white.imageset/icons8-calendar.pdf +70 -0
- data/lib/templates/default/swift/Assets.xcassets/calendar.imageset/Contents.json +12 -0
- data/lib/templates/default/swift/Assets.xcassets/calendar.imageset/calendar.pdf +0 -0
- data/lib/templates/default/swift/Assets.xcassets/dots.imageset/Contents.json +24 -0
- data/lib/templates/default/swift/Assets.xcassets/dots.imageset/dots.pdf +0 -0
- data/lib/templates/default/swift/Assets.xcassets/edit.imageset/Contents.json +12 -0
- data/lib/templates/default/swift/Assets.xcassets/edit.imageset/edit.pdf +0 -0
- data/lib/templates/default/swift/Assets.xcassets/emptylogin.imageset/Contents.json +12 -0
- data/lib/templates/default/swift/Assets.xcassets/emptylogin.imageset/empty state loging.pdf +0 -0
- data/lib/templates/default/swift/Assets.xcassets/envelope.imageset/Contents.json +12 -0
- data/lib/templates/default/swift/Assets.xcassets/envelope.imageset/icons8-envelope.pdf +70 -0
- data/lib/templates/default/swift/Assets.xcassets/expandSection.imageset/Contents.json +22 -0
- data/lib/templates/default/swift/Assets.xcassets/expandSection.imageset/icons8-expand-arrow-100.png +0 -0
- data/lib/templates/default/swift/Assets.xcassets/expandSection.imageset/icons8-expand-arrow-50.png +0 -0
- data/lib/templates/default/swift/Assets.xcassets/facebook.imageset/Contents.json +24 -0
- data/lib/templates/default/swift/Assets.xcassets/facebook.imageset/icons8-facebook-f.pdf +68 -0
- data/lib/templates/default/swift/Assets.xcassets/filter-white.imageset/Contents.json +12 -0
- data/lib/templates/default/swift/Assets.xcassets/filter-white.imageset/icons8-adjust (3).pdf +0 -0
- data/lib/templates/default/swift/Assets.xcassets/filter.imageset/Contents.json +15 -0
- data/lib/templates/default/swift/Assets.xcassets/filter.imageset/filter.pdf +0 -0
- data/lib/templates/default/swift/Assets.xcassets/food.imageset/Contents.json +21 -0
- data/lib/templates/default/swift/Assets.xcassets/food.imageset/food.png +0 -0
- data/lib/templates/default/swift/Assets.xcassets/forgot-password.imageset/Contents.json +23 -0
- data/lib/templates/default/swift/Assets.xcassets/forgot-password.imageset/page-1.png +0 -0
- data/lib/templates/default/swift/Assets.xcassets/forgot-password.imageset/page-1@2x.png +0 -0
- data/lib/templates/default/swift/Assets.xcassets/forgot-password.imageset/page-1@3x.png +0 -0
- data/lib/templates/default/swift/Assets.xcassets/heart-active.imageset/Contents.json +12 -0
- data/lib/templates/default/swift/Assets.xcassets/heart-active.imageset/favortio activo.pdf +0 -0
- data/lib/templates/default/swift/Assets.xcassets/heart.imageset/Contents.json +12 -0
- data/lib/templates/default/swift/Assets.xcassets/heart.imageset/favorito inactivo.pdf +0 -0
- data/lib/templates/default/swift/Assets.xcassets/icons8-delete.imageset/Contents.json +12 -0
- data/lib/templates/default/swift/Assets.xcassets/icons8-delete.imageset/icons8-delete (3).pdf +69 -0
- data/lib/templates/default/swift/Assets.xcassets/lock.imageset/Contents.json +12 -0
- data/lib/templates/default/swift/Assets.xcassets/lock.imageset/icons8-lock.pdf +69 -0
- data/lib/templates/default/swift/Assets.xcassets/man-avatar.imageset/Contents.json +12 -0
- data/lib/templates/default/swift/Assets.xcassets/man-avatar.imageset/man-avatar.pdf +1149 -1
- data/lib/templates/default/swift/Assets.xcassets/new-notification.imageset/Contents.json +21 -0
- data/lib/templates/default/swift/Assets.xcassets/new-notification.imageset/icons8-filled-circle-filled-100.png +0 -0
- data/lib/templates/default/swift/Assets.xcassets/no-fav.imageset/Contents.json +21 -0
- data/lib/templates/default/swift/Assets.xcassets/no-fav.imageset/page-1@2x.png +0 -0
- data/lib/templates/default/swift/Assets.xcassets/notificaciones.imageset/Contents.json +12 -0
- data/lib/templates/default/swift/Assets.xcassets/notificaciones.imageset/notificaciones.pdf +0 -0
- data/lib/templates/default/swift/Assets.xcassets/notification.imageset/Contents.json +21 -0
- data/lib/templates/default/swift/Assets.xcassets/notification.imageset/icons8-notification-100.png +0 -0
- data/lib/templates/default/swift/Assets.xcassets/other.imageset/Contents.json +21 -0
- data/lib/templates/default/swift/Assets.xcassets/other.imageset/other.png +0 -0
- data/lib/templates/default/swift/Assets.xcassets/page-1.imageset/Contents.json +21 -0
- data/lib/templates/default/swift/Assets.xcassets/page-1.imageset/page-1@2x.png +0 -0
- data/lib/templates/default/swift/Assets.xcassets/page-3.imageset/Contents.json +21 -0
- data/lib/templates/default/swift/Assets.xcassets/page-3.imageset/page-1@2x.png +0 -0
- data/lib/templates/default/swift/Assets.xcassets/photo.imageset/Contents.json +24 -0
- data/lib/templates/default/swift/Assets.xcassets/photo.imageset/photo.pdf +0 -0
- data/lib/templates/default/swift/Assets.xcassets/plus-white.imageset/Contents.json +21 -0
- data/lib/templates/default/swift/Assets.xcassets/plus-white.imageset/icons8-plus-math-26.png +0 -0
- data/lib/templates/default/swift/Assets.xcassets/plus.imageset/+.pdf +0 -0
- data/lib/templates/default/swift/Assets.xcassets/plus.imageset/Contents.json +12 -0
- data/lib/templates/default/swift/Assets.xcassets/register.imageset/Contents.json +12 -0
- data/lib/templates/default/swift/Assets.xcassets/register.imageset/registro.pdf +0 -0
- data/lib/templates/default/swift/Assets.xcassets/search.imageset/Contents.json +15 -0
- data/lib/templates/default/swift/Assets.xcassets/search.imageset/search.pdf +0 -0
- data/lib/templates/default/swift/Assets.xcassets/settings.imageset/Contents.json +23 -0
- data/lib/templates/default/swift/Assets.xcassets/settings.imageset/icons8-settings-100.png +0 -0
- data/lib/templates/default/swift/Assets.xcassets/settings.imageset/icons8-settings-50.png +0 -0
- data/lib/templates/default/swift/Assets.xcassets/settings.imageset/icons8-settings-500.png +0 -0
- data/lib/templates/default/swift/Assets.xcassets/shape.imageset/Contents.json +23 -0
- data/lib/templates/default/swift/Assets.xcassets/shape.imageset/shape.png +0 -0
- data/lib/templates/default/swift/Assets.xcassets/shape.imageset/shape@2x.png +0 -0
- data/lib/templates/default/swift/Assets.xcassets/shape.imageset/shape@3x.png +0 -0
- data/lib/templates/default/swift/Assets.xcassets/signpost.imageset/Contents.json +21 -0
- data/lib/templates/default/swift/Assets.xcassets/signpost.imageset/icons8-signpost-50.png +0 -0
- data/lib/templates/default/swift/Assets.xcassets/stars.imageset/Contents.json +24 -0
- data/lib/templates/default/swift/Assets.xcassets/stars.imageset/stars.pdf +0 -0
- data/lib/templates/default/swift/Assets.xcassets/terms.imageset/Contents.json +12 -0
- data/lib/templates/default/swift/Assets.xcassets/terms.imageset/terminos y condiciones.pdf +0 -0
- data/lib/templates/default/swift/Assets.xcassets/tickets.imageset/Contents.json +12 -0
- data/lib/templates/default/swift/Assets.xcassets/tickets.imageset/tickets.pdf +0 -0
- data/lib/templates/default/swift/Assets.xcassets/user.imageset/Contents.json +22 -0
- data/lib/templates/default/swift/Assets.xcassets/user.imageset/icons8-account-100.png +0 -0
- data/lib/templates/default/swift/Assets.xcassets/user.imageset/icons8-account-50.png +0 -0
- data/lib/templates/default/swift/Assets.xcassets/visa.imageset/Contents.json +21 -0
- data/lib/templates/default/swift/Assets.xcassets/visa.imageset/visa.png +0 -0
- data/lib/templates/default/swift/Config/Config.swift +1 -1
- data/lib/templates/default/swift/Controllers/Login/ForgetPasswordVC.swift +125 -0
- data/lib/templates/default/swift/Controllers/Login/LoginVC.swift +244 -0
- data/lib/templates/default/swift/Controllers/Login/RegisterVC.swift +213 -0
- data/lib/templates/default/swift/Controllers/Notifications/Cells/NotificationCell.swift +51 -0
- data/lib/templates/default/swift/Controllers/Notifications/NotificationsVC.swift +164 -0
- data/lib/templates/default/swift/Controllers/OtherLogin/ForgetPasswordTVC.swift +98 -0
- data/lib/templates/default/swift/Controllers/OtherLogin/LoginTVC.swift +245 -0
- data/lib/templates/default/swift/Controllers/OtherLogin/OtherRegisterVC.swift +299 -0
- data/lib/templates/default/swift/Controllers/OtherLogin/SelectLanguageCell.swift +17 -0
- data/lib/templates/default/swift/Controllers/OtherLogin/SelectLanguageVC.swift +116 -0
- data/lib/templates/default/swift/Controllers/OtherLogin/TermsAndConditionsVC.swift +76 -0
- data/lib/templates/default/swift/Controllers/Profile/AboutUsVC.swift +93 -0
- data/lib/templates/default/swift/Controllers/Profile/Cells/AboutUsImageCell.swift +66 -0
- data/lib/templates/default/swift/Controllers/Profile/Cells/DescriptionCell.swift +16 -0
- data/lib/templates/default/swift/Controllers/Profile/Cells/DestinationCell.swift +35 -0
- data/lib/templates/default/swift/Controllers/Profile/Cells/DestinationCellView.xib +84 -0
- data/lib/templates/default/swift/Controllers/Profile/Cells/FavoriteCollectionCell.swift +24 -0
- data/lib/templates/default/swift/Controllers/Profile/Cells/ImagesCollectionViewCell.swift +15 -0
- data/lib/templates/default/swift/Controllers/Profile/ProfileContainerVC.swift +72 -0
- data/lib/templates/default/swift/Controllers/Profile/ProfileTVC.swift +581 -0
- data/lib/templates/default/swift/Controllers/Tutorial/TutorialVC.swift +121 -0
- data/lib/templates/default/swift/Extensions/ArrayDuplicates.swift +35 -0
- data/lib/templates/default/swift/Extensions/Buttons.swift +1 -1
- data/lib/templates/default/swift/Extensions/CustomCamera.swift +65 -0
- data/lib/templates/default/swift/Extensions/GradientView.swift +121 -0
- data/lib/templates/default/swift/Extensions/HideKeyboard.swift +22 -0
- data/lib/templates/default/swift/Extensions/Images.swift +82 -0
- data/lib/templates/default/swift/Extensions/InnerShadowExtension.swift +83 -0
- data/lib/templates/default/swift/Extensions/TableViewEmptyView.swift +30 -0
- data/lib/templates/default/swift/Extensions/TapEffectExtension.swift +48 -0
- data/lib/templates/default/swift/Extensions/{ColorHex.swift → UIColorExtensions.swift} +2 -2
- data/lib/templates/default/swift/Extensions/UnderlinedTextView.swift +61 -0
- data/lib/templates/default/swift/Extensions/UnderlinedWithIconTextField.swift +55 -0
- data/lib/templates/default/swift/Helper/APIHelper.swift +4 -4
- data/lib/templates/default/swift/Helper/APIManager.swift +81 -14
- data/lib/templates/default/swift/Helper/APIRequestBody.swift +1 -1
- data/lib/templates/default/swift/Helper/AWSManager.swift +1 -1
- data/lib/templates/default/swift/Helper/FilesManager.swift +1 -1
- data/lib/templates/default/swift/Helper/S3Manager.swift +1 -1
- data/lib/templates/default/swift/Helper/Utils.swift +3 -1
- data/lib/templates/default/swift/Info.plist +53 -0
- data/lib/templates/default/swift/Models/Country.swift +28 -0
- data/lib/templates/default/swift/Models/Managers/UserManager.swift +1 -1
- data/lib/templates/default/swift/Models/Notif.swift +71 -0
- data/lib/templates/default/swift/Models/Responses/BaseResponse.swift +1 -1
- data/lib/templates/default/swift/Models/Responses/NotificationResponse.swift +24 -0
- data/lib/templates/default/swift/Models/Responses/UserResponse.swift +1 -1
- data/lib/templates/default/swift/Models/Responses/UserSingupResponse.swift +1 -1
- data/lib/templates/default/swift/Models/User.swift +2 -2
- data/lib/templates/default/swift/UI/Storyboards/Home.storyboard +2113 -0
- data/lib/templates/default/swift/UI/Storyboards/Login.storyboard +814 -0
- data/lib/templates/default/swift/UI/Storyboards/OtherLogin.storyboard +1031 -0
- data/lib/templates/default/swift/UI/Views/EmptyTableView/EmptyTableLabelView.swift +18 -0
- data/lib/templates/default/swift/UI/Views/EmptyTableView/NoNotificationView.swift +16 -0
- data/lib/templates/default/swift/UI/Views/EmptyTableView/Xibs/EmptyTableLabelView.xib +72 -0
- data/lib/templates/default/swift/UI/Views/EmptyTableView/Xibs/NoNotificationsView.xib +61 -0
- metadata +176 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 527aae911488c059b370377b568eb048100bef88
|
4
|
+
data.tar.gz: 20d4c574b8e76bbabd3bb910f3fc87de6b2022f0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1e39f86088333a7f5293c923c330f3dfc12fce17677cabb026d832ee1d6b3098988d5d43b3b2c0fcc60af4f356c18a250b828ccefc717e88c2aadd2ea9dbb441
|
7
|
+
data.tar.gz: e5678b20e1f644360626037b64c0a18168f35953bb92e9a7fc1dfb6f5a6b76328e8357c705cc6e15679baf6a3f1a1aa6de52d53630fa92ad3a7e1b6a3ce1da0e
|
data/lib/mvcgen/filemanager.rb
CHANGED
@@ -39,7 +39,7 @@ module MVCgen
|
|
39
39
|
to_expand_path = File.expand_path(to)
|
40
40
|
from_expand_path = File.expand_path(from)
|
41
41
|
FileUtils.mkdir_p (to_expand_path)
|
42
|
-
FileUtils.copy_entry(from_expand_path, to_expand_path)
|
42
|
+
FileUtils.copy_entry(from_expand_path, to_expand_path, remove_destination = true)
|
43
43
|
end
|
44
44
|
|
45
45
|
# Move a system item to another place
|
data/lib/mvcgen/generator.rb
CHANGED
@@ -5,30 +5,23 @@ module MVCgen
|
|
5
5
|
# Cosntants
|
6
6
|
class Generator
|
7
7
|
# Constants
|
8
|
-
LANGUAGES = ["swift"]
|
9
|
-
REPLACEMENT_KEY = "
|
8
|
+
LANGUAGES = ["swift", "podfile"]
|
9
|
+
REPLACEMENT_KEY = "MVCGEN"
|
10
10
|
|
11
|
-
def self.
|
12
|
-
puts "
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
# header_ref = proj.main_group.new_file('./Class.h')
|
20
|
-
# implm_ref = proj.main_group.new_file('./Class.m')
|
21
|
-
basefiles_path = "#{Gem.dir}/gems/#{MVCgen::NAME}-#{MVCgen::VERSION}/lib/basexcodetemplate"
|
22
|
-
to_path = "#{path}/#{name}"
|
23
|
-
MVCgen::FileManager.copy(basefiles_path, to_path)
|
24
|
-
files = MVCgen::FileManager.files_in_path(to_path)
|
25
|
-
self.addxcodefiles(to_path,proj.main_group,app_target)
|
26
|
-
# app_target.add_file_references([files])
|
27
|
-
proj.save
|
28
|
-
# podfile_path = "#{Gem.dir}/gems/#{MVCgen::NAME}-#{MVCgen::VERSION}/lib/podfile/Podfile"
|
29
|
-
# to_path = "#{path}/#{name}"
|
11
|
+
def self.add_to_xcode(path, name, filespath)
|
12
|
+
puts "Adding files to xcode project..."
|
13
|
+
# proj = Xcodeproj::Project.new("#{path}/#{name}.xcodeproj")
|
14
|
+
# app_target_dev = proj.new_target(:application, "#{name} - Development", :ios, '10.0')
|
15
|
+
# header_ref = proj.main_group.new_file('./Class.swift')
|
16
|
+
|
17
|
+
project_file = "#{path}/#{name}.xcodeproj"
|
18
|
+
proj = Xcodeproj::Project.open(project_file)
|
30
19
|
|
31
|
-
#
|
20
|
+
# TODO: view this to improve path files: allowable_project_paths
|
21
|
+
self.addxcodefiles(filespath,proj.main_group,proj.targets.first)
|
22
|
+
|
23
|
+
proj.save
|
24
|
+
puts "Finish adding files"
|
32
25
|
end
|
33
26
|
|
34
27
|
def self.addxcodefiles(direc, current_group, main_target)
|
@@ -38,9 +31,9 @@ module MVCgen
|
|
38
31
|
new_folder = File.basename(item)
|
39
32
|
created_group = current_group.new_group(new_folder)
|
40
33
|
self.addxcodefiles("#{item}/*", created_group, main_target)
|
41
|
-
|
42
|
-
|
43
|
-
|
34
|
+
elsif item == "Assets.xcassets"
|
35
|
+
main_target.add_frameworks_bundles([item])
|
36
|
+
break
|
44
37
|
else
|
45
38
|
i = current_group.new_file(item)
|
46
39
|
main_target.add_file_references([i])
|
@@ -51,17 +44,26 @@ module MVCgen
|
|
51
44
|
# Main method that generate the MVC files structure
|
52
45
|
def self.generate_mvc(template, language, name, path)
|
53
46
|
|
54
|
-
self.create_xcode_project(template, language, name, path)
|
55
47
|
puts "Generating MVC-Module"
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
48
|
+
puts "Template: #{template}"
|
49
|
+
puts "Language: #{language}"
|
50
|
+
puts "Name: #{name}"
|
51
|
+
puts "Path: #{path}"
|
52
|
+
|
53
|
+
# Copy language files to project folder
|
60
54
|
path_from = MVCgen::FileManager.path_from(template, language)
|
61
55
|
path_to = MVCgen::FileManager.destination_mvc_path(path, name)
|
62
56
|
MVCgen::FileManager.copy(path_from, path_to)
|
63
|
-
|
57
|
+
|
58
|
+
# Copy podfile to project folder
|
59
|
+
podfile_path = MVCgen::FileManager.path_from(template, "podfile")
|
60
|
+
expand_path = File.expand_path(path)
|
61
|
+
MVCgen::FileManager.copy(podfile_path, expand_path)
|
62
|
+
|
63
|
+
# TODO: later if needed
|
64
|
+
files = MVCgen::FileManager.files_in_path(expand_path)
|
64
65
|
rename_files(files,name)
|
66
|
+
self.add_to_xcode(path, name, path_to)
|
65
67
|
end
|
66
68
|
|
67
69
|
# Rename all the files in the files array
|
@@ -69,8 +71,9 @@ module MVCgen
|
|
69
71
|
# - It renames the content of the file
|
70
72
|
def self.rename_files(files, name)
|
71
73
|
files.each do |file|
|
72
|
-
|
73
|
-
|
74
|
+
if file.include? (MVCgen::Generator::REPLACEMENT_KEY)
|
75
|
+
rename_file(file, name)
|
76
|
+
end
|
74
77
|
end
|
75
78
|
end
|
76
79
|
|
data/lib/mvcgen/version.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
1
|
author: daniel
|
2
2
|
author_email: daniel.martinezcg@gmail.com
|
3
|
-
template_description: Default template with the simplest structure using MVC
|
3
|
+
template_description: Default template with the simplest structure to startup a project in xcode, using MVC
|
4
4
|
updated_at: 2018-07-23
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# Uncomment the next line to define a global platform for your project
|
2
|
+
platform :ios, '10.0'
|
3
|
+
|
4
|
+
def commom_pods
|
5
|
+
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
|
6
|
+
use_frameworks!
|
7
|
+
|
8
|
+
# Pods for NotATour
|
9
|
+
pod 'CryptoSwift'
|
10
|
+
pod 'SwiftyJSON'
|
11
|
+
pod 'TextFieldEffects'
|
12
|
+
pod 'NotificationBannerSwift'
|
13
|
+
pod 'RAMAnimatedTabBarController'
|
14
|
+
pod 'ObjectMapper', '~> 3.1'
|
15
|
+
pod 'DKImagePickerController'
|
16
|
+
pod 'SwiftDate', '~> 4.5.1'
|
17
|
+
pod 'NVActivityIndicatorView'
|
18
|
+
pod 'Kingfisher', '~> 4.0'
|
19
|
+
pod 'PMAlertController'
|
20
|
+
pod 'ActionSheetPicker-3.0', '~> 2.3.0'
|
21
|
+
pod 'Kingfisher', '~> 4.0'
|
22
|
+
pod 'paper-onboarding', '~> 4.0.2'
|
23
|
+
pod 'Pastel'
|
24
|
+
|
25
|
+
# Alamofire
|
26
|
+
pod 'Alamofire', '~> 4.4'
|
27
|
+
pod 'AlamofireObjectMapper', '~> 5.0'
|
28
|
+
|
29
|
+
|
30
|
+
# AWS
|
31
|
+
pod 'AWSCognito'
|
32
|
+
pod 'AWSCognitoIdentityProvider'
|
33
|
+
pod 'AWSS3'
|
34
|
+
|
35
|
+
|
36
|
+
# AlamofireNetworkActivityLogger
|
37
|
+
pod 'AlamofireNetworkActivityLogger', '~> 2.0'
|
38
|
+
|
39
|
+
# Facebook
|
40
|
+
pod 'FacebookCore'
|
41
|
+
pod 'FacebookLogin'
|
42
|
+
|
43
|
+
# OneSignal
|
44
|
+
pod 'OneSignal'
|
45
|
+
|
46
|
+
# Fabric
|
47
|
+
pod 'Fabric'
|
48
|
+
pod 'Crashlytics'
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
target 'MVCGEN' do
|
53
|
+
use_frameworks!
|
54
|
+
commom_pods
|
55
|
+
end
|
56
|
+
|
57
|
+
# target 'MVCGENTest' do
|
58
|
+
# inherit! :search_paths
|
59
|
+
# # Pods for testing
|
60
|
+
# end
|
61
|
+
|
62
|
+
# target 'MVCGENUITests' do
|
63
|
+
# inherit! :search_paths
|
64
|
+
# # Pods for testing
|
65
|
+
# end
|
66
|
+
|
67
|
+
# target 'OneSignalNotificationServiceExtension' do
|
68
|
+
# use_frameworks!
|
69
|
+
# pod 'OneSignal'
|
70
|
+
# end
|
71
|
+
|
72
|
+
|
73
|
+
|
@@ -0,0 +1,181 @@
|
|
1
|
+
//
|
2
|
+
// AppDelegate.swift
|
3
|
+
// MVCGEN
|
4
|
+
//
|
5
|
+
// Created by Daniel Martinez on 23/7/18.
|
6
|
+
// Copyright © 2018 Houlak. All rights reserved.
|
7
|
+
//
|
8
|
+
|
9
|
+
import UIKit
|
10
|
+
import CoreData
|
11
|
+
import FBSDKCoreKit
|
12
|
+
import FBSDKLoginKit
|
13
|
+
import FacebookCore
|
14
|
+
import FBSDKCoreKit
|
15
|
+
import FBSDKLoginKit
|
16
|
+
import Alamofire
|
17
|
+
import OneSignal
|
18
|
+
import Fabric
|
19
|
+
import Crashlytics
|
20
|
+
import FBSDKLoginKit
|
21
|
+
import RAMAnimatedTabBarController
|
22
|
+
|
23
|
+
@UIApplicationMain
|
24
|
+
class AppDelegate: UIResponder, UIApplicationDelegate {
|
25
|
+
|
26
|
+
var window: UIWindow?
|
27
|
+
private let homeStoryboard = UIStoryboard(name: "Home", bundle: Bundle.main)
|
28
|
+
private let loginStoryboard = UIStoryboard(name: "Login", bundle: Bundle.main)
|
29
|
+
|
30
|
+
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
|
31
|
+
// Override point for customization after application launch.
|
32
|
+
|
33
|
+
UIApplication.shared.statusBarStyle = .lightContent
|
34
|
+
|
35
|
+
// TODO: enable after setting script in build phases and appid
|
36
|
+
// self.setupFabric()
|
37
|
+
|
38
|
+
self.setupOneSignal(launchOptions)
|
39
|
+
|
40
|
+
// Call the 'activate' method to log an app event for use
|
41
|
+
// in analytics and advertising reporting.
|
42
|
+
AppEventsLogger.activate(application)
|
43
|
+
|
44
|
+
self.checkUserLoggedIn()
|
45
|
+
|
46
|
+
self.setupAWS()
|
47
|
+
|
48
|
+
return true
|
49
|
+
}
|
50
|
+
|
51
|
+
func setupFabric() {
|
52
|
+
Fabric.with([Crashlytics.self])
|
53
|
+
}
|
54
|
+
|
55
|
+
func setupOneSignal(_ launchOptions: [UIApplicationLaunchOptionsKey: Any]?){
|
56
|
+
let onesignalInitSettings = [kOSSettingsKeyAutoPrompt: false]
|
57
|
+
// Replace 'YOUR_APP_ID' with your OneSignal App ID.
|
58
|
+
OneSignal.initWithLaunchOptions(launchOptions,
|
59
|
+
appId: Config.sharedInstance.oneSignalAppId(),
|
60
|
+
handleNotificationReceived: {
|
61
|
+
notification in
|
62
|
+
|
63
|
+
if let notification = notification {
|
64
|
+
self.handleNotification(notification: notification)
|
65
|
+
}
|
66
|
+
|
67
|
+
},
|
68
|
+
handleNotificationAction: {
|
69
|
+
result in
|
70
|
+
|
71
|
+
if let notification = result?.notification {
|
72
|
+
self.handleNotification(notification: notification)
|
73
|
+
}
|
74
|
+
|
75
|
+
// TODO: Set new notification icon active in profilevc
|
76
|
+
if let tabController = self.window!.rootViewController as? RAMAnimatedTabBarController {
|
77
|
+
tabController.setSelectIndex(from: tabController.selectedIndex, to: 3)
|
78
|
+
}
|
79
|
+
},
|
80
|
+
settings: onesignalInitSettings)
|
81
|
+
|
82
|
+
OneSignal.inFocusDisplayType = OSNotificationDisplayType.notification;
|
83
|
+
|
84
|
+
// TODO
|
85
|
+
// Recommend moving the below line to prompt for push after informing the user about
|
86
|
+
// how your app will use them.
|
87
|
+
OneSignal.promptForPushNotifications(userResponse: { accepted in
|
88
|
+
print("User accepted notifications: \(accepted)")
|
89
|
+
})
|
90
|
+
|
91
|
+
// Sync hashed email if you have a login system or collect it.
|
92
|
+
// Will be used to reach the user at the most optimal time of day.
|
93
|
+
// OneSignal.syncHashedEmail(userEmail)
|
94
|
+
|
95
|
+
// Print OneSignal Player ID
|
96
|
+
let status: OSPermissionSubscriptionState = OneSignal.getPermissionSubscriptionState()
|
97
|
+
let userID = status.subscriptionStatus.userId
|
98
|
+
print("OneSignal User ID = \(userID ?? "")")
|
99
|
+
}
|
100
|
+
|
101
|
+
func handleNotification(notification: OSNotification){
|
102
|
+
// TODO set new notification badge
|
103
|
+
|
104
|
+
}
|
105
|
+
|
106
|
+
func checkUserLoggedIn() {
|
107
|
+
|
108
|
+
if let _ = UserDefaults.standard.value(forKey: UserDefaultsConstants.userAuthTokenKey) as? String, let _ = UserDefaults.standard.value(forKey: UserDefaultsConstants.savedUserKey) as? String {
|
109
|
+
// Token stored in NSUserDefaults. Log in user
|
110
|
+
|
111
|
+
// TODO: need to check if user ha ve accepted terms & conditions
|
112
|
+
|
113
|
+
let rootController = self.homeStoryboard.instantiateViewController(withIdentifier: "HomeNav")
|
114
|
+
self.window?.rootViewController = rootController
|
115
|
+
|
116
|
+
}
|
117
|
+
}
|
118
|
+
|
119
|
+
// Facebook login
|
120
|
+
|
121
|
+
// func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
|
122
|
+
// return FBSDKApplicationDelegate.sharedInstance().application(app, open: url, options: options)
|
123
|
+
// }
|
124
|
+
|
125
|
+
func logout() {
|
126
|
+
|
127
|
+
Alamofire.SessionManager.default.session.getTasksWithCompletionHandler {
|
128
|
+
dataTasks, uploadTasks, downloadTasks in dataTasks.forEach {
|
129
|
+
$0.cancel()
|
130
|
+
}
|
131
|
+
uploadTasks.forEach {
|
132
|
+
$0.cancel()
|
133
|
+
}
|
134
|
+
downloadTasks.forEach {
|
135
|
+
$0.cancel()
|
136
|
+
}
|
137
|
+
}
|
138
|
+
|
139
|
+
FilesManager.sharedInstance.removeAllAppLocalFiles()
|
140
|
+
|
141
|
+
// Facebook logout
|
142
|
+
let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager()
|
143
|
+
fbLoginManager.logOut()
|
144
|
+
|
145
|
+
for view in self.window!.subviews {
|
146
|
+
view.removeFromSuperview()
|
147
|
+
}
|
148
|
+
|
149
|
+
let rootController = self.loginStoryboard.instantiateViewController(withIdentifier: "LoginVC")
|
150
|
+
self.window?.rootViewController = rootController
|
151
|
+
}
|
152
|
+
|
153
|
+
func applicationWillResignActive(_ application: UIApplication) {
|
154
|
+
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
|
155
|
+
// Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
|
156
|
+
}
|
157
|
+
|
158
|
+
func applicationDidEnterBackground(_ application: UIApplication) {
|
159
|
+
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
|
160
|
+
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
|
161
|
+
}
|
162
|
+
|
163
|
+
func applicationWillEnterForeground(_ application: UIApplication) {
|
164
|
+
// Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
|
165
|
+
}
|
166
|
+
|
167
|
+
func applicationDidBecomeActive(_ application: UIApplication) {
|
168
|
+
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
|
169
|
+
}
|
170
|
+
|
171
|
+
func applicationWillTerminate(_ application: UIApplication) {
|
172
|
+
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
|
173
|
+
|
174
|
+
}
|
175
|
+
|
176
|
+
func setupAWS() {
|
177
|
+
let _ = AWSManager.sharedInstance
|
178
|
+
}
|
179
|
+
|
180
|
+
}
|
181
|
+
|
@@ -0,0 +1,133 @@
|
|
1
|
+
{
|
2
|
+
"images" : [
|
3
|
+
{
|
4
|
+
"idiom" : "iphone",
|
5
|
+
"size" : "20x20",
|
6
|
+
"scale" : "2x"
|
7
|
+
},
|
8
|
+
{
|
9
|
+
"idiom" : "iphone",
|
10
|
+
"size" : "20x20",
|
11
|
+
"scale" : "3x"
|
12
|
+
},
|
13
|
+
{
|
14
|
+
"idiom" : "iphone",
|
15
|
+
"size" : "29x29",
|
16
|
+
"scale" : "1x"
|
17
|
+
},
|
18
|
+
{
|
19
|
+
"idiom" : "iphone",
|
20
|
+
"size" : "29x29",
|
21
|
+
"scale" : "2x"
|
22
|
+
},
|
23
|
+
{
|
24
|
+
"idiom" : "iphone",
|
25
|
+
"size" : "29x29",
|
26
|
+
"scale" : "3x"
|
27
|
+
},
|
28
|
+
{
|
29
|
+
"idiom" : "iphone",
|
30
|
+
"size" : "40x40",
|
31
|
+
"scale" : "2x"
|
32
|
+
},
|
33
|
+
{
|
34
|
+
"idiom" : "iphone",
|
35
|
+
"size" : "40x40",
|
36
|
+
"scale" : "3x"
|
37
|
+
},
|
38
|
+
{
|
39
|
+
"idiom" : "iphone",
|
40
|
+
"size" : "57x57",
|
41
|
+
"scale" : "1x"
|
42
|
+
},
|
43
|
+
{
|
44
|
+
"idiom" : "iphone",
|
45
|
+
"size" : "57x57",
|
46
|
+
"scale" : "2x"
|
47
|
+
},
|
48
|
+
{
|
49
|
+
"idiom" : "iphone",
|
50
|
+
"size" : "60x60",
|
51
|
+
"scale" : "2x"
|
52
|
+
},
|
53
|
+
{
|
54
|
+
"idiom" : "iphone",
|
55
|
+
"size" : "60x60",
|
56
|
+
"scale" : "3x"
|
57
|
+
},
|
58
|
+
{
|
59
|
+
"idiom" : "ipad",
|
60
|
+
"size" : "20x20",
|
61
|
+
"scale" : "1x"
|
62
|
+
},
|
63
|
+
{
|
64
|
+
"idiom" : "ipad",
|
65
|
+
"size" : "20x20",
|
66
|
+
"scale" : "2x"
|
67
|
+
},
|
68
|
+
{
|
69
|
+
"idiom" : "ipad",
|
70
|
+
"size" : "29x29",
|
71
|
+
"scale" : "1x"
|
72
|
+
},
|
73
|
+
{
|
74
|
+
"idiom" : "ipad",
|
75
|
+
"size" : "29x29",
|
76
|
+
"scale" : "2x"
|
77
|
+
},
|
78
|
+
{
|
79
|
+
"idiom" : "ipad",
|
80
|
+
"size" : "40x40",
|
81
|
+
"scale" : "1x"
|
82
|
+
},
|
83
|
+
{
|
84
|
+
"idiom" : "ipad",
|
85
|
+
"size" : "40x40",
|
86
|
+
"scale" : "2x"
|
87
|
+
},
|
88
|
+
{
|
89
|
+
"idiom" : "ipad",
|
90
|
+
"size" : "50x50",
|
91
|
+
"scale" : "1x"
|
92
|
+
},
|
93
|
+
{
|
94
|
+
"idiom" : "ipad",
|
95
|
+
"size" : "50x50",
|
96
|
+
"scale" : "2x"
|
97
|
+
},
|
98
|
+
{
|
99
|
+
"idiom" : "ipad",
|
100
|
+
"size" : "72x72",
|
101
|
+
"scale" : "1x"
|
102
|
+
},
|
103
|
+
{
|
104
|
+
"idiom" : "ipad",
|
105
|
+
"size" : "72x72",
|
106
|
+
"scale" : "2x"
|
107
|
+
},
|
108
|
+
{
|
109
|
+
"idiom" : "ipad",
|
110
|
+
"size" : "76x76",
|
111
|
+
"scale" : "1x"
|
112
|
+
},
|
113
|
+
{
|
114
|
+
"idiom" : "ipad",
|
115
|
+
"size" : "76x76",
|
116
|
+
"scale" : "2x"
|
117
|
+
},
|
118
|
+
{
|
119
|
+
"idiom" : "ipad",
|
120
|
+
"size" : "83.5x83.5",
|
121
|
+
"scale" : "2x"
|
122
|
+
},
|
123
|
+
{
|
124
|
+
"idiom" : "ios-marketing",
|
125
|
+
"size" : "1024x1024",
|
126
|
+
"scale" : "1x"
|
127
|
+
}
|
128
|
+
],
|
129
|
+
"info" : {
|
130
|
+
"version" : 1,
|
131
|
+
"author" : "xcode"
|
132
|
+
}
|
133
|
+
}
|