yptools 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/bin/yptools +4 -0
- data/lib/yptools/help/yp_help.rb +16 -0
- data/lib/yptools/install/mvvm/install-template.sh +15 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/NSObjectObjective-C/___FILEBASENAME___.h +11 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/NSObjectObjective-C/___FILEBASENAME___.m +7 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/NSObjectSwift/___FILEBASENAME___.swift +7 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/TemplateIcon.png +0 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/TemplateIcon@2x.png +0 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/TemplateInfo.plist +224 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UICollectionReusableViewObjective-C/___FILEBASENAME___.h +11 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UICollectionReusableViewObjective-C/___FILEBASENAME___.m +7 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UICollectionReusableViewSwift/___FILEBASENAME___.swift +7 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UICollectionReusableViewXIBObjective-C/___FILEBASENAME___.h +11 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UICollectionReusableViewXIBObjective-C/___FILEBASENAME___.m +12 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UICollectionReusableViewXIBObjective-C/___FILEBASENAME___.xib +17 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UICollectionReusableViewXIBSwift/___FILEBASENAME___.swift +12 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UICollectionReusableViewXIBSwift/___FILEBASENAME___.xib +17 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UICollectionViewCellObjective-C/___FILEBASENAME___.h +11 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UICollectionViewCellObjective-C/___FILEBASENAME___.m +7 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UICollectionViewCellSwift/___FILEBASENAME___.swift +7 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UICollectionViewCellXIBObjective-C/___FILEBASENAME___.h +11 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UICollectionViewCellXIBObjective-C/___FILEBASENAME___.m +12 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UICollectionViewCellXIBObjective-C/___FILEBASENAME___.xib +21 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UICollectionViewCellXIBSwift/___FILEBASENAME___.swift +12 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UICollectionViewCellXIBSwift/___FILEBASENAME___.xib +21 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___.h +11 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___.m +87 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UICollectionViewControllerSwift/___FILEBASENAME___.swift +83 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UICollectionViewControllerXIBObjective-C/___FILEBASENAME___.h +11 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UICollectionViewControllerXIBObjective-C/___FILEBASENAME___.m +87 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UICollectionViewControllerXIBObjective-C/___FILEBASENAME___.xib +31 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UICollectionViewControllerXIBSwift/___FILEBASENAME___.swift +83 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UICollectionViewControllerXIBSwift/___FILEBASENAME___.xib +31 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UITableViewCellObjective-C/___FILEBASENAME___.h +11 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UITableViewCellObjective-C/___FILEBASENAME___.m +26 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UITableViewCellSwift/___FILEBASENAME___.swift +18 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UITableViewCellXIBObjective-C/___FILEBASENAME___.h +11 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UITableViewCellXIBObjective-C/___FILEBASENAME___.m +18 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UITableViewCellXIBObjective-C/___FILEBASENAME___.xib +21 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UITableViewCellXIBSwift/___FILEBASENAME___.swift +18 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UITableViewCellXIBSwift/___FILEBASENAME___.xib +21 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___.h +11 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___.m +87 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UITableViewControllerSwift/___FILEBASENAME___.swift +84 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UITableViewControllerXIBObjective-C/___FILEBASENAME___.h +11 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UITableViewControllerXIBObjective-C/___FILEBASENAME___.m +103 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UITableViewControllerXIBObjective-C/___FILEBASENAME___.xib +26 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UITableViewControllerXIBSwift/___FILEBASENAME___.swift +84 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UITableViewControllerXIBSwift/___FILEBASENAME___.xib +26 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___.h +11 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___.m +94 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UIViewControllerObjective-C/___VARIABLE_Proxy___.h +15 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UIViewControllerObjective-C/___VARIABLE_Proxy___.m +39 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UIViewControllerObjective-C/___VARIABLE_TableViewCell___.h +11 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UIViewControllerObjective-C/___VARIABLE_TableViewCell___.m +30 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UIViewControllerObjective-C/___VARIABLE_ViewModel___.h +24 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UIViewControllerObjective-C/___VARIABLE_ViewModel___.m +51 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UIViewControllerSwift/___FILEBASENAME___.swift +24 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UIViewControllerXIBObjective-C/___FILEBASENAME___.h +9 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UIViewControllerXIBObjective-C/___FILEBASENAME___.m +61 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UIViewControllerXIBObjective-C/___FILEBASENAME___.xib +43 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UIViewControllerXIBSwift/___FILEBASENAME___.swift +24 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UIViewControllerXIBSwift/___FILEBASENAME___.xib +22 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UIViewObjective-C/___FILEBASENAME___.h +11 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UIViewObjective-C/___FILEBASENAME___.m +26 -0
- data/lib/yptools/install/mvvm/kMVVM.xctemplate/UIViewSwift/___FILEBASENAME___.swift +15 -0
- data/lib/yptools/install/yp_install.rb +40 -0
- data/lib/yptools/log/yp_log.rb +11 -0
- data/lib/yptools/mgc/yp_makegarbagecode.rb +278 -0
- data/lib/yptools.rb +68 -0
- metadata +156 -0
data/lib/yptools/install/mvvm/kMVVM.xctemplate/UIViewControllerXIBObjective-C/___FILEBASENAME___.m
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
//___FILEHEADER___
|
2
|
+
|
3
|
+
#import "___FILEBASENAME___.h"
|
4
|
+
#import "KKLabelModel.h"
|
5
|
+
#import "KKLabelTableViewCell.h"
|
6
|
+
|
7
|
+
@interface ___FILEBASENAMEASIDENTIFIER___ ()
|
8
|
+
@property (strong, nonatomic) NSMutableArray <KKLabelModel *> *datas;
|
9
|
+
@property (weak , nonatomic) IBOutlet UITableView *tableView;
|
10
|
+
|
11
|
+
@end
|
12
|
+
|
13
|
+
@implementation ___FILEBASENAMEASIDENTIFIER___
|
14
|
+
|
15
|
+
- (void)viewDidLoad {
|
16
|
+
[super viewDidLoad];
|
17
|
+
// Do any additional setup after loading the view from its nib.
|
18
|
+
self.title = @"kk";
|
19
|
+
[self setupSubviews];
|
20
|
+
//异步处理消耗内存操作
|
21
|
+
[self reloadDatas];
|
22
|
+
}
|
23
|
+
- (void)setupSubviews{
|
24
|
+
[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"UITableViewCell"];
|
25
|
+
[self.tableView registerNib:[UINib nibWithNibName:@"KKLabelTableViewCell" bundle:nil] forCellReuseIdentifier:@"KKLabelTableViewCell"];
|
26
|
+
}
|
27
|
+
- (void)reloadDatas{
|
28
|
+
[self.datas removeAllObjects];
|
29
|
+
//构造cell
|
30
|
+
NSArray *items = [UIFont familyNames];
|
31
|
+
for (NSString *item in items) {
|
32
|
+
KKLabelModel *element = [[KKLabelModel alloc] initWithTitle:item value:nil];
|
33
|
+
[self.datas addObject:element];
|
34
|
+
}
|
35
|
+
[self.tableView reloadData];
|
36
|
+
}
|
37
|
+
#pragma mark - lazy load
|
38
|
+
- (NSMutableArray<KKLabelModel *> *)datas{
|
39
|
+
if (!_datas) {
|
40
|
+
_datas = [[NSMutableArray alloc] init];
|
41
|
+
}
|
42
|
+
return _datas;
|
43
|
+
}
|
44
|
+
#pragma mark - UITableViewDelegate,UITableViewDataSource
|
45
|
+
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
|
46
|
+
KKLabelModel *cellModel = self.datas[indexPath.row];
|
47
|
+
KKLabelTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"KKLabelTableViewCell"];
|
48
|
+
cell.cellModel = cellModel;
|
49
|
+
return cell;
|
50
|
+
}
|
51
|
+
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
|
52
|
+
return self.datas.count;
|
53
|
+
}
|
54
|
+
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
|
55
|
+
return AdaptedWidth(44.f);
|
56
|
+
}
|
57
|
+
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
|
58
|
+
//to do
|
59
|
+
}
|
60
|
+
#pragma mark - aciton
|
61
|
+
@end
|
data/lib/yptools/install/mvvm/kMVVM.xctemplate/UIViewControllerXIBObjective-C/___FILEBASENAME___.xib
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
3
|
+
<device id="retina6_1" orientation="portrait">
|
4
|
+
<adaptation id="fullscreen"/>
|
5
|
+
</device>
|
6
|
+
<dependencies>
|
7
|
+
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14490.49"/>
|
8
|
+
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
9
|
+
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
10
|
+
</dependencies>
|
11
|
+
<objects>
|
12
|
+
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="___FILEBASENAMEASIDENTIFIER___">
|
13
|
+
<connections>
|
14
|
+
<outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
|
15
|
+
<outlet property="tableView" destination="RgW-br-jlM" id="JSc-pB-5nQ"/>
|
16
|
+
</connections>
|
17
|
+
</placeholder>
|
18
|
+
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
19
|
+
<view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
|
20
|
+
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
21
|
+
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
22
|
+
<subviews>
|
23
|
+
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="RgW-br-jlM">
|
24
|
+
<rect key="frame" x="0.0" y="44" width="414" height="818"/>
|
25
|
+
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
26
|
+
<connections>
|
27
|
+
<outlet property="dataSource" destination="-1" id="idZ-U9-ceJ"/>
|
28
|
+
<outlet property="delegate" destination="-1" id="Y8b-7l-54f"/>
|
29
|
+
</connections>
|
30
|
+
</tableView>
|
31
|
+
</subviews>
|
32
|
+
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
33
|
+
<constraints>
|
34
|
+
<constraint firstItem="RgW-br-jlM" firstAttribute="leading" secondItem="Q5M-cg-NOt" secondAttribute="leading" id="3vA-A9-GH5"/>
|
35
|
+
<constraint firstItem="RgW-br-jlM" firstAttribute="trailing" secondItem="Q5M-cg-NOt" secondAttribute="trailing" id="Jc6-5c-lfV"/>
|
36
|
+
<constraint firstItem="RgW-br-jlM" firstAttribute="bottom" secondItem="Q5M-cg-NOt" secondAttribute="bottom" id="Y6T-Nt-a38"/>
|
37
|
+
<constraint firstItem="RgW-br-jlM" firstAttribute="top" secondItem="Q5M-cg-NOt" secondAttribute="top" id="Zel-fQ-otC"/>
|
38
|
+
</constraints>
|
39
|
+
<viewLayoutGuide key="safeArea" id="Q5M-cg-NOt"/>
|
40
|
+
<point key="canvasLocation" x="-174" y="96"/>
|
41
|
+
</view>
|
42
|
+
</objects>
|
43
|
+
</document>
|
data/lib/yptools/install/mvvm/kMVVM.xctemplate/UIViewControllerXIBSwift/___FILEBASENAME___.swift
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
//___FILEHEADER___
|
2
|
+
|
3
|
+
import UIKit
|
4
|
+
|
5
|
+
class ___FILEBASENAMEASIDENTIFIER___: ___VARIABLE_cocoaTouchSubclass___ {
|
6
|
+
|
7
|
+
override func viewDidLoad() {
|
8
|
+
super.viewDidLoad()
|
9
|
+
|
10
|
+
// Do any additional setup after loading the view.
|
11
|
+
}
|
12
|
+
|
13
|
+
|
14
|
+
/*
|
15
|
+
// MARK: - Navigation
|
16
|
+
|
17
|
+
// In a storyboard-based application, you will often want to do a little preparation before navigation
|
18
|
+
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
|
19
|
+
// Get the new view controller using segue.destination.
|
20
|
+
// Pass the selected object to the new view controller.
|
21
|
+
}
|
22
|
+
*/
|
23
|
+
|
24
|
+
}
|
data/lib/yptools/install/mvvm/kMVVM.xctemplate/UIViewControllerXIBSwift/___FILEBASENAME___.xib
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
2
|
+
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13142" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
3
|
+
<dependencies>
|
4
|
+
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12042"/>
|
5
|
+
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
6
|
+
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
7
|
+
</dependencies>
|
8
|
+
<objects>
|
9
|
+
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="___FILEBASENAMEASIDENTIFIER___" customModuleProvider="target">
|
10
|
+
<connections>
|
11
|
+
<outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
|
12
|
+
</connections>
|
13
|
+
</placeholder>
|
14
|
+
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
15
|
+
<view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
|
16
|
+
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
17
|
+
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
18
|
+
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
19
|
+
<viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/>
|
20
|
+
</view>
|
21
|
+
</objects>
|
22
|
+
</document>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
//___FILEHEADER___
|
2
|
+
|
3
|
+
#import "___FILEBASENAME___.h"
|
4
|
+
|
5
|
+
@interface ___FILEBASENAMEASIDENTIFIER___ ()
|
6
|
+
|
7
|
+
@end
|
8
|
+
|
9
|
+
@implementation ___FILEBASENAMEASIDENTIFIER___
|
10
|
+
|
11
|
+
- (instancetype)init{
|
12
|
+
if (self = [super init]) {
|
13
|
+
[self setupSubviews];
|
14
|
+
}
|
15
|
+
return self;
|
16
|
+
}
|
17
|
+
|
18
|
+
- (void)setupSubviews{
|
19
|
+
//to do
|
20
|
+
}
|
21
|
+
|
22
|
+
- (void)layoutSubviews{
|
23
|
+
[super layoutSubviews];
|
24
|
+
}
|
25
|
+
|
26
|
+
@end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
//___FILEHEADER___
|
2
|
+
|
3
|
+
import UIKit
|
4
|
+
|
5
|
+
class ___FILEBASENAMEASIDENTIFIER___: ___VARIABLE_cocoaTouchSubclass___ {
|
6
|
+
|
7
|
+
/*
|
8
|
+
// Only override draw() if you perform custom drawing.
|
9
|
+
// An empty implementation adversely affects performance during animation.
|
10
|
+
override func draw(_ rect: CGRect) {
|
11
|
+
// Drawing code
|
12
|
+
}
|
13
|
+
*/
|
14
|
+
|
15
|
+
}
|
@@ -0,0 +1,40 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
require 'pathname'
|
3
|
+
require 'fileutils'
|
4
|
+
require 'colored'
|
5
|
+
require_relative '../mgc/yp_makegarbagecode'
|
6
|
+
|
7
|
+
class YPInstall
|
8
|
+
|
9
|
+
def self.install(name)
|
10
|
+
|
11
|
+
templates_url = "git@github.com:HansenCCC/kMVVM.git"
|
12
|
+
templates_path = Dir.pwd
|
13
|
+
templates_name = "kMVVM"
|
14
|
+
|
15
|
+
templates_path = templates_path + "/#{templates_name}"
|
16
|
+
yp_log_doing "生成临时文件#{templates_path}"
|
17
|
+
|
18
|
+
# 删除旧库
|
19
|
+
yp_method_rmdir templates_path
|
20
|
+
|
21
|
+
system("git clone #{templates_url}")
|
22
|
+
FileUtils.cd 'kMVVM'
|
23
|
+
system("sh install-template.sh")
|
24
|
+
FileUtils.cd '..'
|
25
|
+
|
26
|
+
# 删除缓存
|
27
|
+
yp_method_rmdir templates_path
|
28
|
+
yp_log_doing "移除临时文件#{templates_path}"
|
29
|
+
yp_log_success "安装#{templates_url}完成,重新打开Xcode才能生效"
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
#mkdir -p ~/Library/Developer/Xcode/Templates/Source/
|
37
|
+
#
|
38
|
+
#rm -rf dir ~/Library/Developer/Xcode/Templates/Source/kMVVM.xctemplate
|
39
|
+
#
|
40
|
+
#cp -R kMVVM.xctemplate ~/Library/Developer/Xcode/Templates/Source/kMVVM.xctemplate
|
@@ -0,0 +1,278 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
require 'pathname'
|
3
|
+
require 'colored'
|
4
|
+
require_relative '../log/yp_log'
|
5
|
+
|
6
|
+
## 需要忽略的文件或者文件夹
|
7
|
+
def yp_method_ignoringFiles
|
8
|
+
return ".", "..", ".DS_Store", "Pods", "LocalPods", "main.m", "doc"
|
9
|
+
end
|
10
|
+
|
11
|
+
# 正则查询文件列表,path:传路径 script:正则表达式 ignoringFiles:忽略的文件或者文件夹 retun [{文件名:文件路径},{文件名2:文件路径2}]
|
12
|
+
def yp_method_fileList (path,script,ignoringFiles)
|
13
|
+
|
14
|
+
unless File.directory?(path)
|
15
|
+
return
|
16
|
+
end
|
17
|
+
|
18
|
+
unless path =~ /(\/$)/
|
19
|
+
path = path + "/"
|
20
|
+
end
|
21
|
+
|
22
|
+
fileList = Array.new
|
23
|
+
Dir.entries(path).each do |sub|
|
24
|
+
unless ignoringFiles.include?(sub)
|
25
|
+
subPath = path + sub;
|
26
|
+
if File.directory?(subPath)
|
27
|
+
subFileList = yp_method_fileList subPath, script, ignoringFiles
|
28
|
+
fileList = fileList + subFileList;
|
29
|
+
else
|
30
|
+
if subPath =~ script
|
31
|
+
obj = Hash.new
|
32
|
+
obj[sub] = subPath
|
33
|
+
fileList.push(obj)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
return fileList
|
41
|
+
end
|
42
|
+
|
43
|
+
# 删除文件夹(包括文件夹下面的文件)
|
44
|
+
def yp_method_rmdir (path)
|
45
|
+
if File.exists?(path)
|
46
|
+
if File.directory?(path)
|
47
|
+
Dir.foreach(path) do |subPath|
|
48
|
+
if subPath != '.' and subPath != '..'
|
49
|
+
tempSubPath = File.join(path, subPath)
|
50
|
+
yp_method_rmdir(tempSubPath)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
Dir.rmdir(path)
|
54
|
+
else
|
55
|
+
File.delete(path)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
# 创建文件夹
|
61
|
+
def yp_method_mkdir (path)
|
62
|
+
Dir.mkdir(path)
|
63
|
+
end
|
64
|
+
|
65
|
+
|
66
|
+
|
67
|
+
# 根据.m文件创建垃圾代码
|
68
|
+
def yp_method_ceateGarbageCodeByObjC_m(path,outPath,suffix)
|
69
|
+
|
70
|
+
pathFile = File.open(path, "r")
|
71
|
+
|
72
|
+
maxLineThreshold = 10000
|
73
|
+
fileLine = 0
|
74
|
+
|
75
|
+
fileName = File.basename(path,".*")
|
76
|
+
|
77
|
+
mainStringH = "@interface " + fileName + " (#{suffix})"
|
78
|
+
mainStringM = "@implementation " + fileName + " (#{suffix})"
|
79
|
+
|
80
|
+
importStringsH = Array.new
|
81
|
+
importStringsM = Array.new
|
82
|
+
|
83
|
+
methodStringsH = Array.new
|
84
|
+
methodStringsM = Array.new
|
85
|
+
|
86
|
+
pathFileStrings = Array.new
|
87
|
+
|
88
|
+
isClass = 0
|
89
|
+
|
90
|
+
while textLine = pathFile.gets
|
91
|
+
fileLine += 1
|
92
|
+
|
93
|
+
if pathFileStrings.include?(textLine)
|
94
|
+
next
|
95
|
+
end
|
96
|
+
|
97
|
+
if textLine.include?("@implementation #{fileName}")
|
98
|
+
isClass = 1
|
99
|
+
end
|
100
|
+
|
101
|
+
pathFileStrings.push(textLine)
|
102
|
+
|
103
|
+
if textLine.include?("#import")
|
104
|
+
importStringsH.push(textLine)
|
105
|
+
elsif textLine.start_with?("-(") | textLine.start_with?("- (")
|
106
|
+
|
107
|
+
if textLine.include?("API_AVAILABLE")
|
108
|
+
next
|
109
|
+
end
|
110
|
+
|
111
|
+
textLine = textLine.sub(" \{","\{")
|
112
|
+
textLine = textLine.sub("\n","")
|
113
|
+
|
114
|
+
unless textLine.include?("{")
|
115
|
+
textLine = textLine + "{"
|
116
|
+
end
|
117
|
+
|
118
|
+
returnStringM = ""
|
119
|
+
if textLine.include?("-(void") | textLine.include?("- (void")
|
120
|
+
returnStringM = " return;"
|
121
|
+
elsif textLine.include?("- (IBAction") | textLine.include?("-(IBAction")
|
122
|
+
returnStringM = " return;"
|
123
|
+
elsif textLine.include?("- (CGFloat") | textLine.include?("-(CGFloat")
|
124
|
+
returnStringM = " return 0.f;"
|
125
|
+
elsif textLine.include?("- (CGRect") | textLine.include?("-(CGRect")
|
126
|
+
returnStringM = " return CGRectZero;"
|
127
|
+
elsif textLine.include?("- (CGSize") | textLine.include?("-(CGSize")
|
128
|
+
returnStringM = " return CGSizeZero;"
|
129
|
+
elsif textLine.include?("- (UIEdgeInsets") | textLine.include?("-(UIEdgeInsets")
|
130
|
+
returnStringM = " return UIEdgeInsetsZero;"
|
131
|
+
else
|
132
|
+
next
|
133
|
+
end
|
134
|
+
|
135
|
+
# .h 文件生成
|
136
|
+
replaceStringH = ""
|
137
|
+
if textLine.include?(":")
|
138
|
+
replaceStringH = " " + suffix + ":(NSString *)" + suffix + ";"
|
139
|
+
else
|
140
|
+
replaceStringH = suffix + ":(NSString *)" + suffix + ";"
|
141
|
+
end
|
142
|
+
|
143
|
+
tempTextLineH = textLine.sub("\{",replaceStringH)
|
144
|
+
methodStringsH.push("/// " + suffix)
|
145
|
+
methodStringsH.push("\n")
|
146
|
+
methodStringsH.push(tempTextLineH)
|
147
|
+
methodStringsH.push("\n")
|
148
|
+
methodStringsH.push("\n")
|
149
|
+
|
150
|
+
# .m 文件生成
|
151
|
+
replaceStringM = ""
|
152
|
+
if textLine.include?(":")
|
153
|
+
replaceStringM = " " + suffix + ":(NSString *)" + suffix + "\ {"
|
154
|
+
else
|
155
|
+
replaceStringM = suffix + ":(NSString *)" + suffix + "\ {"
|
156
|
+
end
|
157
|
+
|
158
|
+
tempTextLineM = textLine.sub("\{",replaceStringM)
|
159
|
+
methodStringsM.push("/// " + suffix)
|
160
|
+
methodStringsM.push("\n")
|
161
|
+
methodStringsM.push(tempTextLineM)
|
162
|
+
methodStringsM.push("\n")
|
163
|
+
methodStringsM.push(" NSLog(@\"%@\",#{suffix});")
|
164
|
+
methodStringsM.push("\n")
|
165
|
+
methodStringsM.push(returnStringM)
|
166
|
+
methodStringsM.push("\n")
|
167
|
+
methodStringsM.push("}")
|
168
|
+
methodStringsM.push("\n")
|
169
|
+
methodStringsM.push("\n")
|
170
|
+
end
|
171
|
+
|
172
|
+
end
|
173
|
+
|
174
|
+
if isClass != 1
|
175
|
+
return
|
176
|
+
end
|
177
|
+
|
178
|
+
importStringsH.push("\n")
|
179
|
+
importStringsH.push(mainStringH)
|
180
|
+
importStringsH.push("\n")
|
181
|
+
importStringsH.push("\n")
|
182
|
+
methodStringsH.push("@end")
|
183
|
+
|
184
|
+
file_h = importStringsH + methodStringsH
|
185
|
+
|
186
|
+
|
187
|
+
importStringsM.push("#import \"#{fileName}+#{suffix}.h\"")
|
188
|
+
importStringsM.push("\n")
|
189
|
+
importStringsM.push("\n")
|
190
|
+
importStringsM.push(mainStringM)
|
191
|
+
importStringsM.push("\n")
|
192
|
+
importStringsM.push("\n")
|
193
|
+
methodStringsM.push("@end")
|
194
|
+
|
195
|
+
file_m = importStringsM + methodStringsM
|
196
|
+
|
197
|
+
unless outPath =~ /(\/$)/
|
198
|
+
outPath = outPath + "/"
|
199
|
+
end
|
200
|
+
|
201
|
+
filePathH = outPath + fileName + "+#{suffix}.h"
|
202
|
+
filePathM = outPath + fileName + "+#{suffix}.m"
|
203
|
+
|
204
|
+
createFileH = File.new(filePathH,"w+")
|
205
|
+
file_h.each {|lineTest|
|
206
|
+
createFileH.syswrite(lineTest)
|
207
|
+
}
|
208
|
+
|
209
|
+
createFileM = File.new(filePathM,"w+")
|
210
|
+
file_m.each {|lineTest|
|
211
|
+
createFileM.syswrite(lineTest)
|
212
|
+
}
|
213
|
+
|
214
|
+
pathFile.close
|
215
|
+
end
|
216
|
+
|
217
|
+
# 生成垃圾数据
|
218
|
+
def yp_method_makeGarbage (path, outPath, suffix)
|
219
|
+
# 筛选文件的正则
|
220
|
+
script = /^(?!.*(\+)).*.(\.m)$/
|
221
|
+
# 配置忽略文件
|
222
|
+
ignoringFiles = yp_method_ignoringFiles
|
223
|
+
# 获取符合条件的文件列表
|
224
|
+
fileList = yp_method_fileList path, script, ignoringFiles
|
225
|
+
|
226
|
+
fileList.each { |fileDic|
|
227
|
+
fileDic.each { |key, value|
|
228
|
+
createTime = Time.new
|
229
|
+
fileName = File.basename(value,".*")
|
230
|
+
filePathH = fileName + "+#{suffix}.h"
|
231
|
+
filePathM = fileName + "+#{suffix}.m"
|
232
|
+
yp_log_success createTime.inspect + " 生成 " + filePathH + "、" + filePathM + " 完成"
|
233
|
+
|
234
|
+
yp_method_ceateGarbageCodeByObjC_m(value,outPath,suffix)
|
235
|
+
}
|
236
|
+
}
|
237
|
+
end
|
238
|
+
|
239
|
+
|
240
|
+
# 生成垃圾数据
|
241
|
+
def yp_tools_method_makeGarbage (suffix)
|
242
|
+
|
243
|
+
yp_log_doing "🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀";
|
244
|
+
|
245
|
+
yp_path = `pwd`
|
246
|
+
yp_path = yp_path.sub("\n","")
|
247
|
+
yp_outPath = "#{yp_path}/" + suffix
|
248
|
+
|
249
|
+
yp_log_doing "当前目录 #{yp_path}"
|
250
|
+
yp_log_doing "垃圾代码生成目录 #{yp_outPath}"
|
251
|
+
yp_log_doing "后缀 #{suffix}"
|
252
|
+
|
253
|
+
if suffix.length == 0
|
254
|
+
yp_log_fail "后缀不能为空"
|
255
|
+
return
|
256
|
+
end
|
257
|
+
|
258
|
+
yp_isTruePath = 0
|
259
|
+
Dir.entries(yp_path).each do |subFile|
|
260
|
+
if subFile.include?(".xcodeproj") | subFile.include?(".xcworkspace")
|
261
|
+
yp_isTruePath = 1
|
262
|
+
break
|
263
|
+
end
|
264
|
+
end
|
265
|
+
|
266
|
+
if yp_isTruePath == 0
|
267
|
+
yp_log_fail "#{yp_path} " + "此目录没有工程,请切换到项目目录下再执行 'yptools mgc ..' 命令"
|
268
|
+
return
|
269
|
+
end
|
270
|
+
|
271
|
+
yp_method_rmdir yp_outPath
|
272
|
+
yp_method_mkdir yp_outPath
|
273
|
+
yp_method_makeGarbage yp_path, yp_outPath, suffix
|
274
|
+
|
275
|
+
yp_log_doing "🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀";
|
276
|
+
end
|
277
|
+
|
278
|
+
#yp_tools_method_makeGarbage "suffix"
|
data/lib/yptools.rb
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
require_relative 'yptools/mgc/yp_makegarbagecode'
|
2
|
+
require_relative 'yptools/help/yp_help'
|
3
|
+
require_relative 'yptools/log/yp_log'
|
4
|
+
require_relative 'yptools/install/yp_install'
|
5
|
+
|
6
|
+
class YPTools
|
7
|
+
|
8
|
+
def self.cmd_dispatch(argvs)
|
9
|
+
cmd = argvs[0]
|
10
|
+
case cmd
|
11
|
+
when 'help'
|
12
|
+
YPTools.help
|
13
|
+
when 'mgc'
|
14
|
+
if argvs.size > 1
|
15
|
+
suffix = argvs[1]
|
16
|
+
YPTools.mgc suffix
|
17
|
+
else
|
18
|
+
yp_log_fail "'yptools mgc ..' 参数缺失"
|
19
|
+
self.help
|
20
|
+
end
|
21
|
+
when 'install'
|
22
|
+
if argvs.size > 1
|
23
|
+
name = argvs[1]
|
24
|
+
YPTools.install name
|
25
|
+
else
|
26
|
+
yp_log_fail "'yptools install ..' 参数缺失"
|
27
|
+
self.help
|
28
|
+
end
|
29
|
+
when 'mvvm'
|
30
|
+
YPTools.mvvm
|
31
|
+
else
|
32
|
+
YPTools.help
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.help
|
38
|
+
YPHelp.message
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.mgc(suffix)
|
42
|
+
yp_tools_method_makeGarbage suffix
|
43
|
+
end
|
44
|
+
|
45
|
+
def self.install(name)
|
46
|
+
YPInstall.install(name)
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
#puts "🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀";
|
52
|
+
#
|
53
|
+
#path = "/Users/Hansen/Desktop/QMKKXProduct"
|
54
|
+
#outPath = "/Users/Hansen/Desktop/QMKKXProduct/CHS"
|
55
|
+
#suffix = "YPYP"
|
56
|
+
#
|
57
|
+
#yp_method_rmdir outPath
|
58
|
+
#yp_method_mkdir outPath
|
59
|
+
#yp_method_makeGarbage path, outPath, suffix
|
60
|
+
#
|
61
|
+
#puts "🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀";
|
62
|
+
|
63
|
+
#yptools = YPTools.new
|
64
|
+
#
|
65
|
+
|
66
|
+
|
67
|
+
#YPTools.cmd_dispatch(ARGV)
|
68
|
+
|