yk_command 0.3.5 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.idea/yk_command.iml +70 -61
- data/Gemfile.lock +33 -1
- data/README.html +109 -0
- data/README.md +44 -9
- data/images/Xnip2022-04-26_17-25-30.jpg +0 -0
- data/images/Xnip2022-04-26_17-27-32.jpg +0 -0
- data/images/Xnip2022-04-26_17-30-36.jpg +0 -0
- data/lib/yk_command/analyze.rb +129 -0
- data/lib/yk_command/commands.rb +108 -23
- data/lib/yk_command/dependency_handler.rb +6 -0
- data/lib/yk_command/request.rb +19 -0
- data/lib/yk_command/template/objc/CategoryHeader.h +1 -1
- data/lib/yk_command/template/objc/RouterRegister.m +4 -5
- data/lib/yk_command/template/objc/ServiceRegister.m +1 -1
- data/lib/yk_command/version.rb +1 -1
- data/lib/yk_command/yk_module.rb +0 -0
- data/lib/yk_command.rb +0 -1
- data/yk_command.gemspec +7 -1
- data//345/275/222/346/241/243.zip +0 -0
- metadata +109 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a9f809a06f1a6edfb4851536bc0234ccb9a3639d5ec8263d9f9842fe0d200711
|
|
4
|
+
data.tar.gz: 207110a66f02a958d2a5cecd52d48568e6e11634eeae328c6c00d2730df3b6f0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 40614da31702f52801e7ee75daa11737de69b25bc58b47b677502eec51651fa0c608912b26055993a9d234703dd2a6dbc36e1c7c1045758f9f9a5f2ce73ab217
|
|
7
|
+
data.tar.gz: 5a12da7c3578a35cf01d44d737f3bd780aaf651ed63c65be542ea55596fbf81f8b51fb2fca5e364e97f5d88904b201a114cd500a1ed17489d8e4b3377bad9e5e
|
data/.idea/yk_command.iml
CHANGED
|
@@ -9,83 +9,92 @@
|
|
|
9
9
|
<sourceFolder url="file://$MODULE_DIR$/spec" isTestSource="true" />
|
|
10
10
|
<sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
|
|
11
11
|
</content>
|
|
12
|
-
<orderEntry type="
|
|
12
|
+
<orderEntry type="jdk" jdkName="RVM: ruby-2.7.2 [tom]" jdkType="RUBY_SDK" />
|
|
13
13
|
<orderEntry type="sourceFolder" forTests="false" />
|
|
14
|
-
<orderEntry type="library" scope="PROVIDED" name="CFPropertyList (v3.0.5, RVM: ruby-2.7.2) [gem]" level="application" />
|
|
15
|
-
<orderEntry type="library" scope="PROVIDED" name="activesupport (v5.2.7, RVM: ruby-2.7.2) [gem]" level="application" />
|
|
16
|
-
<orderEntry type="library" scope="PROVIDED" name="addressable (v2.8.0, RVM: ruby-2.7.2) [gem]" level="application" />
|
|
17
|
-
<orderEntry type="library" scope="PROVIDED" name="algoliasearch (v1.27.5, RVM: ruby-2.7.2) [gem]" level="application" />
|
|
18
|
-
<orderEntry type="library" scope="PROVIDED" name="ast (v2.4.2, RVM: ruby-2.7.2) [gem]" level="application" />
|
|
19
|
-
<orderEntry type="library" scope="PROVIDED" name="atomos (v0.1.3, RVM: ruby-2.7.2) [gem]" level="application" />
|
|
20
|
-
<orderEntry type="library" scope="PROVIDED" name="bundler (v2.2.33, RVM: ruby-2.7.2) [gem]" level="application" />
|
|
21
|
-
<orderEntry type="library" scope="PROVIDED" name="claide (v1.1.0, RVM: ruby-2.7.2) [gem]" level="application" />
|
|
22
|
-
<orderEntry type="library" scope="PROVIDED" name="cocoapods (v1.11.3, RVM: ruby-2.7.2) [gem]" level="application" />
|
|
23
|
-
<orderEntry type="library" scope="PROVIDED" name="cocoapods-core (v1.11.3, RVM: ruby-2.7.2) [gem]" level="application" />
|
|
24
|
-
<orderEntry type="library" scope="PROVIDED" name="cocoapods-deintegrate (v1.0.5, RVM: ruby-2.7.2) [gem]" level="application" />
|
|
25
|
-
<orderEntry type="library" scope="PROVIDED" name="cocoapods-downloader (v1.6.1, RVM: ruby-2.7.2) [gem]" level="application" />
|
|
26
|
-
<orderEntry type="library" scope="PROVIDED" name="cocoapods-plugins (v1.0.0, RVM: ruby-2.7.2) [gem]" level="application" />
|
|
27
|
-
<orderEntry type="library" scope="PROVIDED" name="cocoapods-search (v1.0.1, RVM: ruby-2.7.2) [gem]" level="application" />
|
|
28
|
-
<orderEntry type="library" scope="PROVIDED" name="cocoapods-trunk (v1.6.0, RVM: ruby-2.7.2) [gem]" level="application" />
|
|
29
|
-
<orderEntry type="library" scope="PROVIDED" name="cocoapods-try (v1.2.0, RVM: ruby-2.7.2) [gem]" level="application" />
|
|
30
|
-
<orderEntry type="library" scope="PROVIDED" name="colored (v1.2, RVM: ruby-2.7.2) [gem]" level="application" />
|
|
31
|
-
<orderEntry type="library" scope="PROVIDED" name="colored2 (v3.1.2, RVM: ruby-2.7.2) [gem]" level="application" />
|
|
32
|
-
<orderEntry type="library" scope="PROVIDED" name="concurrent-ruby (v1.1.10, RVM: ruby-2.7.2) [gem]" level="application" />
|
|
33
|
-
<orderEntry type="library" scope="PROVIDED" name="diff-lcs (v1.5.0, RVM: ruby-2.7.2) [gem]" level="application" />
|
|
34
|
-
<orderEntry type="library" scope="PROVIDED" name="escape (v0.0.4, RVM: ruby-2.7.2) [gem]" level="application" />
|
|
35
|
-
<orderEntry type="library" scope="PROVIDED" name="ethon (v0.15.0, RVM: ruby-2.7.2) [gem]" level="application" />
|
|
36
|
-
<orderEntry type="library" scope="PROVIDED" name="ffi (v1.15.5, RVM: ruby-2.7.2) [gem]" level="application" />
|
|
37
|
-
<orderEntry type="library" scope="PROVIDED" name="fourflusher (v2.3.1, RVM: ruby-2.7.2) [gem]" level="application" />
|
|
38
|
-
<orderEntry type="library" scope="PROVIDED" name="fuzzy_match (v2.0.4, RVM: ruby-2.7.2) [gem]" level="application" />
|
|
39
|
-
<orderEntry type="library" scope="PROVIDED" name="gh_inspector (v1.1.3, RVM: ruby-2.7.2) [gem]" level="application" />
|
|
40
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
|
41
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
|
42
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
|
43
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
|
44
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
|
45
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
|
46
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
|
47
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
|
48
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
|
49
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
|
50
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
|
51
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
|
52
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
|
53
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
|
54
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
|
55
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
|
56
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
|
57
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
|
58
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
|
59
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
|
60
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
|
61
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
|
62
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
|
63
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
|
64
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
|
65
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
|
66
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
|
67
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
|
68
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
|
14
|
+
<orderEntry type="library" scope="PROVIDED" name="CFPropertyList (v3.0.5, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
15
|
+
<orderEntry type="library" scope="PROVIDED" name="activesupport (v5.2.7, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
16
|
+
<orderEntry type="library" scope="PROVIDED" name="addressable (v2.8.0, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
17
|
+
<orderEntry type="library" scope="PROVIDED" name="algoliasearch (v1.27.5, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
18
|
+
<orderEntry type="library" scope="PROVIDED" name="ast (v2.4.2, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
19
|
+
<orderEntry type="library" scope="PROVIDED" name="atomos (v0.1.3, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
20
|
+
<orderEntry type="library" scope="PROVIDED" name="bundler (v2.2.33, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
21
|
+
<orderEntry type="library" scope="PROVIDED" name="claide (v1.1.0, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
22
|
+
<orderEntry type="library" scope="PROVIDED" name="cocoapods (v1.11.3, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
23
|
+
<orderEntry type="library" scope="PROVIDED" name="cocoapods-core (v1.11.3, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
24
|
+
<orderEntry type="library" scope="PROVIDED" name="cocoapods-deintegrate (v1.0.5, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
25
|
+
<orderEntry type="library" scope="PROVIDED" name="cocoapods-downloader (v1.6.1, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
26
|
+
<orderEntry type="library" scope="PROVIDED" name="cocoapods-plugins (v1.0.0, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
27
|
+
<orderEntry type="library" scope="PROVIDED" name="cocoapods-search (v1.0.1, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
28
|
+
<orderEntry type="library" scope="PROVIDED" name="cocoapods-trunk (v1.6.0, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
29
|
+
<orderEntry type="library" scope="PROVIDED" name="cocoapods-try (v1.2.0, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
30
|
+
<orderEntry type="library" scope="PROVIDED" name="colored (v1.2, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
31
|
+
<orderEntry type="library" scope="PROVIDED" name="colored2 (v3.1.2, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
32
|
+
<orderEntry type="library" scope="PROVIDED" name="concurrent-ruby (v1.1.10, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
33
|
+
<orderEntry type="library" scope="PROVIDED" name="diff-lcs (v1.5.0, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
34
|
+
<orderEntry type="library" scope="PROVIDED" name="escape (v0.0.4, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
35
|
+
<orderEntry type="library" scope="PROVIDED" name="ethon (v0.15.0, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
36
|
+
<orderEntry type="library" scope="PROVIDED" name="ffi (v1.15.5, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
37
|
+
<orderEntry type="library" scope="PROVIDED" name="fourflusher (v2.3.1, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
38
|
+
<orderEntry type="library" scope="PROVIDED" name="fuzzy_match (v2.0.4, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
39
|
+
<orderEntry type="library" scope="PROVIDED" name="gh_inspector (v1.1.3, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
40
|
+
<orderEntry type="library" scope="PROVIDED" name="git (v1.10.2, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
41
|
+
<orderEntry type="library" scope="PROVIDED" name="gitlab (v4.18.0, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
42
|
+
<orderEntry type="library" scope="PROVIDED" name="httparty (v0.20.0, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
43
|
+
<orderEntry type="library" scope="PROVIDED" name="httpclient (v2.8.3, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
44
|
+
<orderEntry type="library" scope="PROVIDED" name="i18n (v1.10.0, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
45
|
+
<orderEntry type="library" scope="PROVIDED" name="json (v2.6.1, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
46
|
+
<orderEntry type="library" scope="PROVIDED" name="mime-types (v3.4.1, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
47
|
+
<orderEntry type="library" scope="PROVIDED" name="mime-types-data (v3.2022.0105, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
48
|
+
<orderEntry type="library" scope="PROVIDED" name="minitest (v5.15.0, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
49
|
+
<orderEntry type="library" scope="PROVIDED" name="molinillo (v0.8.0, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
50
|
+
<orderEntry type="library" scope="PROVIDED" name="multi_xml (v0.6.0, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
51
|
+
<orderEntry type="library" scope="PROVIDED" name="nanaimo (v0.3.0, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
52
|
+
<orderEntry type="library" scope="PROVIDED" name="nap (v1.1.0, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
53
|
+
<orderEntry type="library" scope="PROVIDED" name="netrc (v0.11.0, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
54
|
+
<orderEntry type="library" scope="PROVIDED" name="parallel (v1.21.0, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
55
|
+
<orderEntry type="library" scope="PROVIDED" name="parser (v2.7.2.0, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
56
|
+
<orderEntry type="library" scope="PROVIDED" name="pathname (v0.2.0, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
57
|
+
<orderEntry type="library" scope="PROVIDED" name="powerpack (v0.1.3, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
58
|
+
<orderEntry type="library" scope="PROVIDED" name="public_suffix (v4.0.6, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
59
|
+
<orderEntry type="library" scope="PROVIDED" name="rainbow (v2.2.2, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
60
|
+
<orderEntry type="library" scope="PROVIDED" name="rake (v13.0.6, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
61
|
+
<orderEntry type="library" scope="PROVIDED" name="rchardet (v1.8.0, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
62
|
+
<orderEntry type="library" scope="PROVIDED" name="rexml (v3.2.5, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
63
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec (v3.11.0, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
64
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec-core (v3.11.0, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
65
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec-expectations (v3.11.0, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
66
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec-mocks (v3.11.0, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
67
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec-support (v3.11.0, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
68
|
+
<orderEntry type="library" scope="PROVIDED" name="rubocop (v0.50.0, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
69
|
+
<orderEntry type="library" scope="PROVIDED" name="ruby-macho (v2.5.1, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
70
|
+
<orderEntry type="library" scope="PROVIDED" name="ruby-progressbar (v1.11.0, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
71
|
+
<orderEntry type="library" scope="PROVIDED" name="terminal-table (v3.0.2, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
72
|
+
<orderEntry type="library" scope="PROVIDED" name="thor (v1.2.1, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
73
|
+
<orderEntry type="library" scope="PROVIDED" name="thread_safe (v0.3.6, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
74
|
+
<orderEntry type="library" scope="PROVIDED" name="typhoeus (v1.4.0, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
75
|
+
<orderEntry type="library" scope="PROVIDED" name="tzinfo (v1.2.9, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
76
|
+
<orderEntry type="library" scope="PROVIDED" name="unicode-display_width (v1.8.0, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
77
|
+
<orderEntry type="library" scope="PROVIDED" name="xcodeproj (v1.21.0, RVM: ruby-2.7.2 [tom]) [gem]" level="application" />
|
|
69
78
|
</component>
|
|
70
79
|
<component name="RakeTasksCache">
|
|
71
80
|
<option name="myRootTask">
|
|
72
81
|
<RakeTaskImpl id="rake">
|
|
73
82
|
<subtasks>
|
|
74
|
-
<RakeTaskImpl description="Build yk_command-0.
|
|
83
|
+
<RakeTaskImpl description="Build yk_command-0.3.6.gem into the pkg directory" fullCommand="build" id="build" />
|
|
75
84
|
<RakeTaskImpl id="build">
|
|
76
85
|
<subtasks>
|
|
77
|
-
<RakeTaskImpl description="Generate SHA512 checksum if yk_command-0.
|
|
86
|
+
<RakeTaskImpl description="Generate SHA512 checksum if yk_command-0.3.6.gem into the checksums directory" fullCommand="build:checksum" id="checksum" />
|
|
78
87
|
</subtasks>
|
|
79
88
|
</RakeTaskImpl>
|
|
80
89
|
<RakeTaskImpl description="Remove any temporary products" fullCommand="clean" id="clean" />
|
|
81
90
|
<RakeTaskImpl description="Remove any generated files" fullCommand="clobber" id="clobber" />
|
|
82
|
-
<RakeTaskImpl description="Build and install yk_command-0.
|
|
91
|
+
<RakeTaskImpl description="Build and install yk_command-0.3.6.gem into system gems" fullCommand="install" id="install" />
|
|
83
92
|
<RakeTaskImpl id="install">
|
|
84
93
|
<subtasks>
|
|
85
|
-
<RakeTaskImpl description="Build and install yk_command-0.
|
|
94
|
+
<RakeTaskImpl description="Build and install yk_command-0.3.6.gem into system gems without network access" fullCommand="install:local" id="local" />
|
|
86
95
|
</subtasks>
|
|
87
96
|
</RakeTaskImpl>
|
|
88
|
-
<RakeTaskImpl description="Create tag v0.
|
|
97
|
+
<RakeTaskImpl description="Create tag v0.3.6 and build and push yk_command-0.3.6.gem to rubygems.org" fullCommand="release[remote]" id="release[remote]" />
|
|
89
98
|
<RakeTaskImpl description="" fullCommand="default" id="default" />
|
|
90
99
|
<RakeTaskImpl description="" fullCommand="release" id="release" />
|
|
91
100
|
<RakeTaskImpl id="release">
|
data/Gemfile.lock
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
yk_command (0.
|
|
4
|
+
yk_command (0.4.0)
|
|
5
|
+
async
|
|
5
6
|
bundler
|
|
6
7
|
colored
|
|
8
|
+
git
|
|
9
|
+
gitlab
|
|
10
|
+
httparty
|
|
11
|
+
pathname
|
|
7
12
|
thor
|
|
8
13
|
xcodeproj
|
|
9
14
|
|
|
@@ -23,6 +28,10 @@ GEM
|
|
|
23
28
|
httpclient (~> 2.8, >= 2.8.3)
|
|
24
29
|
json (>= 1.5.1)
|
|
25
30
|
ast (2.4.2)
|
|
31
|
+
async (1.30.2)
|
|
32
|
+
console (~> 1.10)
|
|
33
|
+
nio4r (~> 2.3)
|
|
34
|
+
timers (~> 4.1)
|
|
26
35
|
atomos (0.1.3)
|
|
27
36
|
claide (1.1.0)
|
|
28
37
|
cocoapods (1.11.3)
|
|
@@ -65,31 +74,49 @@ GEM
|
|
|
65
74
|
colored (1.2)
|
|
66
75
|
colored2 (3.1.2)
|
|
67
76
|
concurrent-ruby (1.1.10)
|
|
77
|
+
console (1.15.0)
|
|
78
|
+
fiber-local
|
|
68
79
|
diff-lcs (1.5.0)
|
|
69
80
|
escape (0.0.4)
|
|
70
81
|
ethon (0.15.0)
|
|
71
82
|
ffi (>= 1.15.0)
|
|
72
83
|
ffi (1.15.5)
|
|
84
|
+
fiber-local (1.0.0)
|
|
73
85
|
fourflusher (2.3.1)
|
|
74
86
|
fuzzy_match (2.0.4)
|
|
75
87
|
gh_inspector (1.1.3)
|
|
88
|
+
git (1.10.2)
|
|
89
|
+
rchardet (~> 1.8)
|
|
90
|
+
gitlab (4.18.0)
|
|
91
|
+
httparty (~> 0.18)
|
|
92
|
+
terminal-table (>= 1.5.1)
|
|
93
|
+
httparty (0.20.0)
|
|
94
|
+
mime-types (~> 3.0)
|
|
95
|
+
multi_xml (>= 0.5.2)
|
|
76
96
|
httpclient (2.8.3)
|
|
77
97
|
i18n (1.10.0)
|
|
78
98
|
concurrent-ruby (~> 1.0)
|
|
79
99
|
json (2.6.1)
|
|
100
|
+
mime-types (3.4.1)
|
|
101
|
+
mime-types-data (~> 3.2015)
|
|
102
|
+
mime-types-data (3.2022.0105)
|
|
80
103
|
minitest (5.15.0)
|
|
81
104
|
molinillo (0.8.0)
|
|
105
|
+
multi_xml (0.6.0)
|
|
82
106
|
nanaimo (0.3.0)
|
|
83
107
|
nap (1.1.0)
|
|
84
108
|
netrc (0.11.0)
|
|
109
|
+
nio4r (2.5.8)
|
|
85
110
|
parallel (1.21.0)
|
|
86
111
|
parser (2.7.2.0)
|
|
87
112
|
ast (~> 2.4.1)
|
|
113
|
+
pathname (0.2.0)
|
|
88
114
|
powerpack (0.1.3)
|
|
89
115
|
public_suffix (4.0.6)
|
|
90
116
|
rainbow (2.2.2)
|
|
91
117
|
rake
|
|
92
118
|
rake (13.0.6)
|
|
119
|
+
rchardet (1.8.0)
|
|
93
120
|
rexml (3.2.5)
|
|
94
121
|
rspec (3.11.0)
|
|
95
122
|
rspec-core (~> 3.11.0)
|
|
@@ -113,8 +140,11 @@ GEM
|
|
|
113
140
|
unicode-display_width (~> 1.0, >= 1.0.1)
|
|
114
141
|
ruby-macho (2.5.1)
|
|
115
142
|
ruby-progressbar (1.11.0)
|
|
143
|
+
terminal-table (3.0.2)
|
|
144
|
+
unicode-display_width (>= 1.1.1, < 3)
|
|
116
145
|
thor (1.2.1)
|
|
117
146
|
thread_safe (0.3.6)
|
|
147
|
+
timers (4.3.3)
|
|
118
148
|
typhoeus (1.4.0)
|
|
119
149
|
ethon (>= 0.9.0)
|
|
120
150
|
tzinfo (1.2.9)
|
|
@@ -137,6 +167,8 @@ DEPENDENCIES
|
|
|
137
167
|
cocoapods-core
|
|
138
168
|
colored
|
|
139
169
|
colored2
|
|
170
|
+
gitlab
|
|
171
|
+
httparty
|
|
140
172
|
rake (~> 13.0)
|
|
141
173
|
rspec (~> 3.2)
|
|
142
174
|
rubocop
|
data/README.html
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<title>YkCommand</title>
|
|
6
|
+
<style>
|
|
7
|
+
/* From extension vscode.github */
|
|
8
|
+
/*---------------------------------------------------------------------------------------------
|
|
9
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
10
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
11
|
+
*--------------------------------------------------------------------------------------------*/
|
|
12
|
+
|
|
13
|
+
.vscode-dark img[src$=\#gh-light-mode-only],
|
|
14
|
+
.vscode-light img[src$=\#gh-dark-mode-only] {
|
|
15
|
+
display: none;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/* From extension vscode.markdown-math */
|
|
19
|
+
@font-face{font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(fonts/KaTeX_AMS-Regular.woff) format("woff"),url(fonts/KaTeX_AMS-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(fonts/KaTeX_Fraktur-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(fonts/KaTeX_Fraktur-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(fonts/KaTeX_Main-Bold.woff) format("woff"),url(fonts/KaTeX_Main-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Main-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(fonts/KaTeX_Main-Italic.woff) format("woff"),url(fonts/KaTeX_Main-Italic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(fonts/KaTeX_Main-Regular.woff) format("woff"),url(fonts/KaTeX_Main-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Math-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(fonts/KaTeX_Math-Italic.woff) format("woff"),url(fonts/KaTeX_Math-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:700;src:url(fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(fonts/KaTeX_SansSerif-Bold.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:italic;font-weight:400;src:url(fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(fonts/KaTeX_SansSerif-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:400;src:url(fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(fonts/KaTeX_SansSerif-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(fonts/KaTeX_Script-Regular.woff) format("woff"),url(fonts/KaTeX_Script-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size1-Regular.woff) format("woff"),url(fonts/KaTeX_Size1-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size2-Regular.woff) format("woff"),url(fonts/KaTeX_Size2-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size3-Regular.woff) format("woff"),url(fonts/KaTeX_Size3-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size4-Regular.woff) format("woff"),url(fonts/KaTeX_Size4-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(fonts/KaTeX_Typewriter-Regular.ttf) format("truetype")}.katex{text-rendering:auto;font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.13.24"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}
|
|
20
|
+
|
|
21
|
+
/*---------------------------------------------------------------------------------------------
|
|
22
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
23
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
24
|
+
*--------------------------------------------------------------------------------------------*/
|
|
25
|
+
|
|
26
|
+
.katex-error {
|
|
27
|
+
color: var(--vscode-editorError-foreground);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
</style>
|
|
31
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.10.2/dist/katex.min.css" integrity="sha384-yFRtMMDnQtDRO8rLpMIKrtPCD5jdktao2TV19YiZYWMDkUR5GQZR/NOVTdquEx1j" crossorigin="anonymous">
|
|
32
|
+
<link href="https://cdn.jsdelivr.net/npm/katex-copytex@latest/dist/katex-copytex.min.css" rel="stylesheet" type="text/css">
|
|
33
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/Microsoft/vscode/extensions/markdown-language-features/media/markdown.css">
|
|
34
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/Microsoft/vscode/extensions/markdown-language-features/media/highlight.css">
|
|
35
|
+
<style>
|
|
36
|
+
body {
|
|
37
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe WPC', 'Segoe UI', system-ui, 'Ubuntu', 'Droid Sans', sans-serif;
|
|
38
|
+
font-size: 14px;
|
|
39
|
+
line-height: 1.6;
|
|
40
|
+
}
|
|
41
|
+
</style>
|
|
42
|
+
<style>
|
|
43
|
+
.task-list-item { list-style-type: none; } .task-list-item-checkbox { margin-left: -20px; vertical-align: middle; }
|
|
44
|
+
</style>
|
|
45
|
+
|
|
46
|
+
</head>
|
|
47
|
+
<body class="vscode-body vscode-light">
|
|
48
|
+
<h1 id="ykcommand">YkCommand</h1>
|
|
49
|
+
<h2 id="主要功能">主要功能</h2>
|
|
50
|
+
<p>1.交互式创建标准业务组件</p>
|
|
51
|
+
<p>2.命令式直接创建业务组件</p>
|
|
52
|
+
<h2 id="业务组件初始化功能">业务组件初始化功能</h2>
|
|
53
|
+
<p>1.自动依赖 三大核心组件和基础组件</p>
|
|
54
|
+
<p>2.拥有标准的工程目录和export文件和auto-import文件</p>
|
|
55
|
+
<p>3.拥有规范的podspec文件,和部分强制性的字段</p>
|
|
56
|
+
<p>4.带有一个 starter demo ,熟悉的人可以自行删除</p>
|
|
57
|
+
<p>5.创建后可编译通过并运行</p>
|
|
58
|
+
<h2 id="运行截图">运行截图</h2>
|
|
59
|
+
<p><img src="file:////images/Xnip2022-04-26_17-25-30.jpg" alt="使用"></p>
|
|
60
|
+
<h2 id="标准目录">标准目录</h2>
|
|
61
|
+
<p><img src="file:////images/Xnip2022-04-26_17-27-32.jpg" alt="使用"></p>
|
|
62
|
+
<h2 id="demo">Demo</h2>
|
|
63
|
+
<p><img src="file:////images/Xnip2022-04-26_17-30-36.jpg" alt="使用"></p>
|
|
64
|
+
<h2 id="环境准备">环境准备</h2>
|
|
65
|
+
<p>准备好Ruby环境 ,依赖于RVM做ruby环境管理</p>
|
|
66
|
+
<pre><code class="language-shell"><div>\curl -sSL https://get.rvm.io | bash -s stable
|
|
67
|
+
</div></code></pre>
|
|
68
|
+
<pre><code class="language-shell"><div>source ~/.zshrc
|
|
69
|
+
</div></code></pre>
|
|
70
|
+
<pre><code class="language-shell"><div>rvm install 2.7.2
|
|
71
|
+
</div></code></pre>
|
|
72
|
+
<pre><code class="language-shell"><div>rvm gemset create 2.7.2@tom
|
|
73
|
+
</div></code></pre>
|
|
74
|
+
<pre><code class="language-shell"><div> rvm use 2.7.2@tom
|
|
75
|
+
</div></code></pre>
|
|
76
|
+
<h2 id="安装">安装</h2>
|
|
77
|
+
<p>手动处理依赖,新版本跳过这一步骤</p>
|
|
78
|
+
<pre><code>$ gem install cocoapods thor colored2
|
|
79
|
+
</code></pre>
|
|
80
|
+
<p>install it yourself as:</p>
|
|
81
|
+
<pre><code>$ gem install yk_command
|
|
82
|
+
</code></pre>
|
|
83
|
+
<p>Or Add this line to your application's Gemfile:</p>
|
|
84
|
+
<pre><code class="language-ruby"><div>gem <span class="hljs-string">'yk_command'</span>
|
|
85
|
+
</div></code></pre>
|
|
86
|
+
<p>And then execute:</p>
|
|
87
|
+
<pre><code>$ bundle install
|
|
88
|
+
</code></pre>
|
|
89
|
+
<h2 id="使用">使用</h2>
|
|
90
|
+
<pre><code class="language-shell"><div>cd < you folder >
|
|
91
|
+
</div></code></pre>
|
|
92
|
+
<p>查看帮助</p>
|
|
93
|
+
<pre><code class="language-shell"><div>yk_command -h
|
|
94
|
+
</div></code></pre>
|
|
95
|
+
<pre><code class="language-shell"><div>yk_command create
|
|
96
|
+
|
|
97
|
+
</div></code></pre>
|
|
98
|
+
<h2 id="开发介绍">开发介绍</h2>
|
|
99
|
+
<p>依赖的 'gem rake'</p>
|
|
100
|
+
<pre><code class="language-shell"><div><span class="hljs-meta">$</span><span class="bash"> rake build</span>
|
|
101
|
+
<span class="hljs-meta">
|
|
102
|
+
$</span><span class="bash"> rake release</span>
|
|
103
|
+
|
|
104
|
+
</div></code></pre>
|
|
105
|
+
|
|
106
|
+
<script async src="https://cdn.jsdelivr.net/npm/katex-copytex@latest/dist/katex-copytex.min.js"></script>
|
|
107
|
+
|
|
108
|
+
</body>
|
|
109
|
+
</html>
|
data/README.md
CHANGED
|
@@ -1,6 +1,36 @@
|
|
|
1
1
|
# YkCommand
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## 主要功能
|
|
4
|
+
|
|
5
|
+
1.交互式创建标准业务组件
|
|
6
|
+
|
|
7
|
+
2.命令式直接创建业务组件
|
|
8
|
+
|
|
9
|
+
## 业务组件初始化功能
|
|
10
|
+
|
|
11
|
+
1.自动依赖 三大核心组件和基础组件
|
|
12
|
+
|
|
13
|
+
2.拥有标准的工程目录和export文件和auto-import文件
|
|
14
|
+
|
|
15
|
+
3.拥有规范的podspec文件,和部分强制性的字段
|
|
16
|
+
|
|
17
|
+
4.带有一个 starter demo ,熟悉的人可以自行删除
|
|
18
|
+
|
|
19
|
+
5.创建后可编译通过并运行
|
|
20
|
+
|
|
21
|
+
## 运行截图
|
|
22
|
+
|
|
23
|
+

|
|
24
|
+
|
|
25
|
+
## 标准目录
|
|
26
|
+
|
|
27
|
+

|
|
28
|
+
|
|
29
|
+
## Demo
|
|
30
|
+
|
|
31
|
+

|
|
32
|
+
|
|
33
|
+
## 环境准备
|
|
4
34
|
|
|
5
35
|
准备好Ruby环境 ,依赖于RVM做ruby环境管理
|
|
6
36
|
|
|
@@ -25,7 +55,9 @@ rvm gemset create 2.7.2@tom
|
|
|
25
55
|
```
|
|
26
56
|
|
|
27
57
|
|
|
28
|
-
##
|
|
58
|
+
## 安装
|
|
59
|
+
|
|
60
|
+
手动处理依赖,新版本跳过这一步骤
|
|
29
61
|
|
|
30
62
|
$ gem install cocoapods thor colored2
|
|
31
63
|
|
|
@@ -43,27 +75,30 @@ And then execute:
|
|
|
43
75
|
|
|
44
76
|
$ bundle install
|
|
45
77
|
|
|
46
|
-
|
|
47
|
-
## Usage
|
|
78
|
+
## 使用
|
|
48
79
|
|
|
49
80
|
```shell
|
|
50
81
|
cd < you folder >
|
|
51
82
|
```
|
|
83
|
+
查看帮助
|
|
52
84
|
|
|
53
85
|
```shell
|
|
54
|
-
yk_command
|
|
86
|
+
yk_command -h
|
|
55
87
|
```
|
|
56
88
|
|
|
89
|
+
```shell
|
|
90
|
+
yk_command create
|
|
57
91
|
|
|
58
|
-
|
|
92
|
+
```
|
|
59
93
|
|
|
60
|
-
|
|
94
|
+
## 开发介绍
|
|
61
95
|
|
|
62
|
-
|
|
96
|
+
依赖的 'gem rake'
|
|
63
97
|
|
|
64
98
|
```shell
|
|
65
99
|
$ rake build
|
|
66
100
|
|
|
67
101
|
$ rake release
|
|
68
102
|
|
|
69
|
-
```
|
|
103
|
+
```
|
|
104
|
+
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
require 'cocoapods'
|
|
2
|
+
require 'pathname'
|
|
3
|
+
|
|
4
|
+
require 'pp'
|
|
5
|
+
|
|
6
|
+
require 'tmpdir'
|
|
7
|
+
require 'json'
|
|
8
|
+
require 'colored2'
|
|
9
|
+
module YkCommand
|
|
10
|
+
#
|
|
11
|
+
# Analyze the project using cocoapods
|
|
12
|
+
#
|
|
13
|
+
class Analyzer
|
|
14
|
+
|
|
15
|
+
def analyze(podfile_dir_path)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@path = Pathname.new(podfile_dir_path)
|
|
20
|
+
@podFile = Pod::Podfile.from_file(@path + 'Podfile')
|
|
21
|
+
@podLock = Pod::Lockfile.from_file(@path + 'Podfile.lock')
|
|
22
|
+
|
|
23
|
+
raise 'absolute path is needed' unless @path.absolute?
|
|
24
|
+
|
|
25
|
+
Dir.chdir(podfile_dir_path) do
|
|
26
|
+
Pod::Config.instance.installation_root = @path;
|
|
27
|
+
analyze_with_podfile
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def analyze_with_podfile
|
|
36
|
+
sandbox = Dir.pwd + '/Pods'
|
|
37
|
+
# if @path
|
|
38
|
+
# sandbox = Dir.mktmpdir
|
|
39
|
+
# else
|
|
40
|
+
# end
|
|
41
|
+
|
|
42
|
+
analyzer = Pod::Installer::Analyzer.new(
|
|
43
|
+
Pod::Sandbox.new(sandbox),
|
|
44
|
+
@podFile,
|
|
45
|
+
@podLock
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
specifications = analyzer.analyze.specifications.map(&:root).uniq
|
|
49
|
+
podfile_dependency = podfile_dependencies(@podFile)
|
|
50
|
+
|
|
51
|
+
map = {}
|
|
52
|
+
specifications.each do |s|
|
|
53
|
+
map[s.name] = if s.default_subspecs.count > 0
|
|
54
|
+
subspecs_with_name(s, s.default_subspecs) + s.dependencies
|
|
55
|
+
else
|
|
56
|
+
s.subspecs + s.dependencies
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
subspecs_in_podfile = podfile_dependency.select { |pd|
|
|
60
|
+
pd.split('/')[0] == s.name
|
|
61
|
+
}
|
|
62
|
+
sp = subspecs_in_podfile.map { |sip|
|
|
63
|
+
s.subspecs.find { |ss|
|
|
64
|
+
ss.name == sip
|
|
65
|
+
}
|
|
66
|
+
}.compact
|
|
67
|
+
|
|
68
|
+
map[s.name] = sp if sp.count != 0
|
|
69
|
+
s.subspecs.each do |ss|
|
|
70
|
+
map[ss.name] = ss.dependencies
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# for performance
|
|
76
|
+
dependencies_map = {}
|
|
77
|
+
specifications.each do |s|
|
|
78
|
+
dependencies_map[s.name] = s
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
new_map = {}
|
|
82
|
+
specifications.each do |s|
|
|
83
|
+
new_map[s.name] = find_dependencies(s.name, map, [], dependencies_map, s.name).uniq.sort
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
new_map
|
|
87
|
+
specifications.to_json
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def podfile_dependencies(podfile)
|
|
91
|
+
res = []
|
|
92
|
+
podfile.root_target_definitions.each do |td|
|
|
93
|
+
children_definitions = td.recursive_children
|
|
94
|
+
children_definitions.each do |cd|
|
|
95
|
+
dependencies_hash_array = cd.send(:get_hash_value, 'dependencies')
|
|
96
|
+
next if dependencies_hash_array.nil? || dependencies_hash_array.count.zero?
|
|
97
|
+
|
|
98
|
+
dependencies_hash_array.each do |item|
|
|
99
|
+
next if item.class.name != 'Hash'
|
|
100
|
+
|
|
101
|
+
item.each do |name, _|
|
|
102
|
+
res.push name
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
res
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
def find_dependencies(name, map, res, dependencies_map, root_name)
|
|
111
|
+
return unless map[name]
|
|
112
|
+
|
|
113
|
+
map[name].each do |k|
|
|
114
|
+
find_dependencies(k.name, map, res, dependencies_map, root_name)
|
|
115
|
+
dependency = dependencies_map[k.name.split('/')[0]]
|
|
116
|
+
res.push dependency.name if dependency && dependency.name != root_name
|
|
117
|
+
end
|
|
118
|
+
res
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def subspecs_with_name(spec, subspecs_short_names)
|
|
122
|
+
subspecs_short_names.map do |name|
|
|
123
|
+
spec.subspecs.find { |ss| ss.name.include? name }
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
end
|
|
129
|
+
end
|
data/lib/yk_command/commands.rb
CHANGED
|
@@ -3,6 +3,9 @@ require 'thor'
|
|
|
3
3
|
require 'fileutils'
|
|
4
4
|
require 'psych'
|
|
5
5
|
require 'yaml'
|
|
6
|
+
require 'yk_command/analyze'
|
|
7
|
+
require 'yk_command/request'
|
|
8
|
+
require 'git'
|
|
6
9
|
|
|
7
10
|
module YkCommand
|
|
8
11
|
class CLI < Thor
|
|
@@ -12,7 +15,8 @@ module YkCommand
|
|
|
12
15
|
|
|
13
16
|
desc 'generate <Path> <Module Name> <Language> <Prefix - 前缀> <Author - 作者>', '直接生成项目 例子: yk_command generate . HomeModule oc MT Tom.Liu '
|
|
14
17
|
method_option :generate, aliases: '-g'
|
|
15
|
-
|
|
18
|
+
|
|
19
|
+
def generate(path = nil, name, lang, class_prefix, author)
|
|
16
20
|
@name = name
|
|
17
21
|
@module = @name
|
|
18
22
|
@lang = lang
|
|
@@ -39,6 +43,7 @@ module YkCommand
|
|
|
39
43
|
|
|
40
44
|
desc 'create <Path>', '在某个路径下交互式生成项目'
|
|
41
45
|
method_option :create, aliases: '-c'
|
|
46
|
+
|
|
42
47
|
def create(path = nil)
|
|
43
48
|
path = Dir.pwd if path.nil?
|
|
44
49
|
|
|
@@ -91,10 +96,10 @@ module YkCommand
|
|
|
91
96
|
say '文件作者:', :green
|
|
92
97
|
author = ask("Author [#{config[:author]}] ?")
|
|
93
98
|
|
|
94
|
-
config[:project]
|
|
95
|
-
config[:language]
|
|
99
|
+
config[:project] = project.empty? ? config[:project] || '' : project
|
|
100
|
+
config[:language] = language.empty? ? config[:language] || 'objc' : language
|
|
96
101
|
config[:class_prefix] = class_prefix.empty? ? config[:class_prefix] || '' : class_prefix
|
|
97
|
-
config[:author]
|
|
102
|
+
config[:author] = author.empty? ? config[:author] || '' : author
|
|
98
103
|
|
|
99
104
|
File.open(config_file_path, 'w') do |f|
|
|
100
105
|
f.write config.to_yaml
|
|
@@ -104,9 +109,9 @@ module YkCommand
|
|
|
104
109
|
@module = @name
|
|
105
110
|
@class_prefix = config[:class_prefix]
|
|
106
111
|
@prefixed_module = config[:class_prefix] + @module
|
|
107
|
-
@project
|
|
108
|
-
@author
|
|
109
|
-
@date
|
|
112
|
+
@project = config[:project]
|
|
113
|
+
@author = config[:author]
|
|
114
|
+
@date = Time.now.strftime('%d/%m/%y')
|
|
110
115
|
@lang = config[:language]
|
|
111
116
|
end
|
|
112
117
|
|
|
@@ -139,8 +144,6 @@ module YkCommand
|
|
|
139
144
|
empty_directory path
|
|
140
145
|
end
|
|
141
146
|
|
|
142
|
-
|
|
143
|
-
|
|
144
147
|
private_level_folders.each do |folder|
|
|
145
148
|
path = "#{class_folder_path}/Private/#{folder}"
|
|
146
149
|
empty_directory path
|
|
@@ -152,10 +155,10 @@ module YkCommand
|
|
|
152
155
|
def yk_template_files
|
|
153
156
|
register_path = "#{@final_path}/#{@name}/Classes/Private/Register"
|
|
154
157
|
registger = {
|
|
155
|
-
'RouterRegister.h'
|
|
156
|
-
'RouterRegister.m'
|
|
157
|
-
'ServiceRegister.h'
|
|
158
|
-
'ServiceRegister.m'
|
|
158
|
+
'RouterRegister.h' => 'RouterRegister',
|
|
159
|
+
'RouterRegister.m' => 'RouterRegister',
|
|
160
|
+
'ServiceRegister.h' => 'ServiceRegister',
|
|
161
|
+
'ServiceRegister.m' => 'ServiceRegister'
|
|
159
162
|
}
|
|
160
163
|
|
|
161
164
|
registger.each do |file_name, _folder|
|
|
@@ -165,7 +168,7 @@ module YkCommand
|
|
|
165
168
|
|
|
166
169
|
public_folder_path = "#{@final_path}/#{@name}/Classes/Public"
|
|
167
170
|
|
|
168
|
-
template_code_filename = ['ServiceProtocol.h','RouterDefine.h']
|
|
171
|
+
template_code_filename = ['ServiceProtocol.h', 'RouterDefine.h']
|
|
169
172
|
template_code_filename.each do |file_name|
|
|
170
173
|
final_file = "#{public_folder_path}/#{@prefixed_module}#{file_name}"
|
|
171
174
|
source = "#{__dir__}/template/objc/#{file_name}"
|
|
@@ -179,8 +182,6 @@ module YkCommand
|
|
|
179
182
|
template source, final_file
|
|
180
183
|
end
|
|
181
184
|
|
|
182
|
-
|
|
183
|
-
|
|
184
185
|
private_folder_path = "#{@final_path}/#{@name}/Classes/Private"
|
|
185
186
|
#pch file
|
|
186
187
|
# pch_file_name = "PrefixHeader.pch"
|
|
@@ -189,10 +190,10 @@ module YkCommand
|
|
|
189
190
|
# template source, final_file
|
|
190
191
|
|
|
191
192
|
private_level_folder_files = {
|
|
192
|
-
'PrefixHeader.pch'
|
|
193
|
-
'CategoryHeader.h'
|
|
194
|
-
'ToolsHeader.h'
|
|
195
|
-
'vendorHeader.h'
|
|
193
|
+
'PrefixHeader.pch' => 'Business',
|
|
194
|
+
'CategoryHeader.h' => 'Category',
|
|
195
|
+
'ToolsHeader.h' => 'Tools',
|
|
196
|
+
'vendorHeader.h' => 'Vendor'
|
|
196
197
|
}
|
|
197
198
|
|
|
198
199
|
private_level_folder_files.each do |file_name, folder|
|
|
@@ -207,15 +208,13 @@ module YkCommand
|
|
|
207
208
|
end
|
|
208
209
|
|
|
209
210
|
business_demo_path = "#{@final_path}/#{@name}/Classes/Private/Business"
|
|
210
|
-
demo_replace_file = ['DemoViewController.h','DemoViewController.m','DemoViewModel.h','DemoViewModel.m']
|
|
211
|
+
demo_replace_file = ['DemoViewController.h', 'DemoViewController.m', 'DemoViewModel.h', 'DemoViewModel.m']
|
|
211
212
|
demo_replace_file.each do |file_name|
|
|
212
213
|
final_file = "#{business_demo_path}/Demo/#{@prefixed_module}#{file_name}"
|
|
213
214
|
source = "#{__dir__}/template/objc/demo/#{file_name}"
|
|
214
215
|
template source, final_file
|
|
215
216
|
end
|
|
216
217
|
|
|
217
|
-
|
|
218
|
-
|
|
219
218
|
Dir.chdir("#{@final_path}/Example") do
|
|
220
219
|
system 'pod install'
|
|
221
220
|
system "open './#{@name}.xcworkspace'"
|
|
@@ -224,6 +223,92 @@ module YkCommand
|
|
|
224
223
|
|
|
225
224
|
end
|
|
226
225
|
|
|
226
|
+
require 'gitlab'
|
|
227
|
+
require 'gitlab/paginated_response'
|
|
228
|
+
|
|
229
|
+
include Gitlab
|
|
230
|
+
desc 'dependency <Podfile.lock Path>', '解析Podfile.lock'
|
|
231
|
+
method_option :dependency, aliases: '-d'
|
|
232
|
+
|
|
233
|
+
def dependency(path = nil)
|
|
234
|
+
say "\ncurrent working folder: #{path}\n"
|
|
235
|
+
project_path =''
|
|
236
|
+
project_name =''
|
|
237
|
+
begin
|
|
238
|
+
g = Git.open(path,)
|
|
239
|
+
project_path = Pathname.new(g.lib.git_work_dir)
|
|
240
|
+
project_name = project_path.split[1]
|
|
241
|
+
rescue
|
|
242
|
+
say "No .git folder find in #{path} ,skip folder ... ", :yellow
|
|
243
|
+
say "\n<--\n", :yellow
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
unless project_name.empty?
|
|
247
|
+
podfiles = Dir.glob("#{path}/**/Podfile")
|
|
248
|
+
if !podfiles.empty?
|
|
249
|
+
begin
|
|
250
|
+
#开始
|
|
251
|
+
project_path = podfiles[podfiles.length - 1]
|
|
252
|
+
podfile_dir = "#{Pathname.new(project_path).dirname}"
|
|
253
|
+
say "start analyze... path contain [Podfile ,Pods/ ,Podfile.lock] is #{podfile_dir}", :green
|
|
254
|
+
|
|
255
|
+
result = Analyzer.new.analyze(podfile_dir)
|
|
256
|
+
|
|
257
|
+
app_info = Request.new.get_project_info(project_name)
|
|
258
|
+
|
|
259
|
+
if app_info["id"]
|
|
260
|
+
say "uploading dependencies for project #{project_name} ..."
|
|
261
|
+
upload_res = Request.new.upload_app_dependency(app_info["id"], result)
|
|
262
|
+
if upload_res["code"] == 0
|
|
263
|
+
say "uploaded , Finished ", :green
|
|
264
|
+
say "\n<-- \n"
|
|
265
|
+
else
|
|
266
|
+
say "Error :upload dependencies for project #{project_name} - #{app_info["id"]} failed ", :red
|
|
267
|
+
say "\n<-- \n"
|
|
268
|
+
end
|
|
269
|
+
|
|
270
|
+
else
|
|
271
|
+
say "Error :Get App project ID failed , #{project_name}", :red
|
|
272
|
+
say "\n<-- \n"
|
|
273
|
+
end
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
rescue
|
|
277
|
+
say "Error : #{$!.to_s}", :red
|
|
278
|
+
# say "Error : #{ $@.to_s}", :red
|
|
279
|
+
say "Skip folder : #{podfile_dir} ", :red
|
|
280
|
+
say "\n<-- \n"
|
|
281
|
+
end #结束
|
|
282
|
+
|
|
283
|
+
else
|
|
284
|
+
say "No podfile find ,Skip folder : #{project_name} ", :yellow
|
|
285
|
+
say "\n<-- \n"
|
|
286
|
+
end
|
|
287
|
+
|
|
288
|
+
end
|
|
289
|
+
|
|
290
|
+
end
|
|
291
|
+
|
|
292
|
+
require 'async'
|
|
293
|
+
|
|
294
|
+
desc 'workspace_analyze <AppHost Path>', '遍历项目目录 批量上传项目依赖信息'
|
|
295
|
+
method_option :workspace_analyze, aliases: '-w'
|
|
296
|
+
|
|
297
|
+
def workspace_analyze(path = nil)
|
|
298
|
+
Dir.chdir(path)
|
|
299
|
+
subdir_list = Dir["*"].reject { |o| not File.directory?(o) }
|
|
300
|
+
say "Start in Workspace : #{path} ...", :yellow
|
|
301
|
+
subdir_list.each do |project_dir|
|
|
302
|
+
say "\n#{Pathname.new(project_dir).split[1]} ", :yellow
|
|
303
|
+
end
|
|
304
|
+
say "\n ... start scanning to analyze ...\n\n"
|
|
305
|
+
|
|
306
|
+
subdir_list.each { |project_dir|
|
|
307
|
+
project_path = "#{path}/#{project_dir}"
|
|
308
|
+
dependency project_path
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
end
|
|
227
312
|
|
|
228
313
|
end
|
|
229
314
|
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require 'httparty'
|
|
2
|
+
module YkCommand
|
|
3
|
+
class Request
|
|
4
|
+
include HTTParty
|
|
5
|
+
base_uri 'http://127.0.0.1:9988/'
|
|
6
|
+
headers 'Content-Type' => 'application/json'
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def upload_app_dependency(project_id,data)
|
|
11
|
+
self.class.post('/dependency/addDependency', query: { "projectId" => project_id },body: data)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def get_project_info(app_project_name)
|
|
15
|
+
self.class.get('/project/projectByName', query: { "name" => app_project_name } )
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -9,6 +9,6 @@
|
|
|
9
9
|
#ifndef <%= @prefixed_module %>CategoryHeader_h
|
|
10
10
|
#define <%= @prefixed_module %>CategoryHeader_h
|
|
11
11
|
|
|
12
|
-
#import <
|
|
12
|
+
#import <MTCategoryComponent/MTCategoryComponentHeader.h>
|
|
13
13
|
|
|
14
14
|
#endif /* <%= @prefixed_module %>CategoryHeader_h */
|
|
@@ -8,9 +8,8 @@
|
|
|
8
8
|
|
|
9
9
|
#import "<%= @prefixed_module %>RouterRegister.h"
|
|
10
10
|
|
|
11
|
-
#import <
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
#import <MTBaseKit/MTBaseKitHeader.h>
|
|
12
|
+
`
|
|
14
13
|
#import "<%= @prefixed_module %>RouterDefine.h"
|
|
15
14
|
|
|
16
15
|
#import "<%= @prefixed_module %>DemoViewController.h"
|
|
@@ -21,10 +20,10 @@
|
|
|
21
20
|
|
|
22
21
|
@YKRouterRegister() {
|
|
23
22
|
|
|
24
|
-
[[
|
|
23
|
+
[[MTRouterComponent shareInstance] registerUrlPartterns:kDemoRouterString error:nil action:^(MTRouterUrlRequest * _Nonnull urlRequest, MTRouterUrlCompletion _Nonnull completetion) {
|
|
25
24
|
|
|
26
25
|
<%= @prefixed_module %>DemoViewController *vc = [[<%= @prefixed_module %>DemoViewController alloc] init];
|
|
27
|
-
[[UIViewController
|
|
26
|
+
[[UIViewController mt_topViewController].navigationController pushViewController:vc animated:YES];
|
|
28
27
|
|
|
29
28
|
}];
|
|
30
29
|
|
data/lib/yk_command/version.rb
CHANGED
|
File without changes
|
data/lib/yk_command.rb
CHANGED
data/yk_command.gemspec
CHANGED
|
@@ -40,12 +40,18 @@ Gem::Specification.new do |spec|
|
|
|
40
40
|
spec.add_development_dependency 'xcodeproj'
|
|
41
41
|
spec.add_development_dependency 'cocoapods'
|
|
42
42
|
spec.add_development_dependency 'cocoapods-core'
|
|
43
|
+
spec.add_development_dependency 'httparty'
|
|
44
|
+
spec.add_development_dependency 'gitlab'
|
|
43
45
|
|
|
46
|
+
spec.add_dependency 'git'
|
|
44
47
|
spec.add_dependency 'bundler'
|
|
45
48
|
spec.add_dependency 'thor'
|
|
46
49
|
spec.add_dependency 'xcodeproj'
|
|
47
50
|
spec.add_dependency 'colored'
|
|
48
|
-
|
|
51
|
+
spec.add_dependency 'pathname'
|
|
52
|
+
spec.add_dependency 'httparty'
|
|
53
|
+
spec.add_dependency 'gitlab'
|
|
54
|
+
spec.add_dependency 'async'
|
|
49
55
|
# For more information and examples about making a new gem, checkout our
|
|
50
56
|
# guide at: https://bundler.io/guides/creating_gem.html
|
|
51
57
|
end
|
|
Binary file
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: yk_command
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Major Tom
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2022-
|
|
11
|
+
date: 2022-05-11 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -122,6 +122,48 @@ dependencies:
|
|
|
122
122
|
- - ">="
|
|
123
123
|
- !ruby/object:Gem::Version
|
|
124
124
|
version: '0'
|
|
125
|
+
- !ruby/object:Gem::Dependency
|
|
126
|
+
name: httparty
|
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
|
128
|
+
requirements:
|
|
129
|
+
- - ">="
|
|
130
|
+
- !ruby/object:Gem::Version
|
|
131
|
+
version: '0'
|
|
132
|
+
type: :development
|
|
133
|
+
prerelease: false
|
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
135
|
+
requirements:
|
|
136
|
+
- - ">="
|
|
137
|
+
- !ruby/object:Gem::Version
|
|
138
|
+
version: '0'
|
|
139
|
+
- !ruby/object:Gem::Dependency
|
|
140
|
+
name: gitlab
|
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
|
142
|
+
requirements:
|
|
143
|
+
- - ">="
|
|
144
|
+
- !ruby/object:Gem::Version
|
|
145
|
+
version: '0'
|
|
146
|
+
type: :development
|
|
147
|
+
prerelease: false
|
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
149
|
+
requirements:
|
|
150
|
+
- - ">="
|
|
151
|
+
- !ruby/object:Gem::Version
|
|
152
|
+
version: '0'
|
|
153
|
+
- !ruby/object:Gem::Dependency
|
|
154
|
+
name: git
|
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
|
156
|
+
requirements:
|
|
157
|
+
- - ">="
|
|
158
|
+
- !ruby/object:Gem::Version
|
|
159
|
+
version: '0'
|
|
160
|
+
type: :runtime
|
|
161
|
+
prerelease: false
|
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
163
|
+
requirements:
|
|
164
|
+
- - ">="
|
|
165
|
+
- !ruby/object:Gem::Version
|
|
166
|
+
version: '0'
|
|
125
167
|
- !ruby/object:Gem::Dependency
|
|
126
168
|
name: bundler
|
|
127
169
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -178,6 +220,62 @@ dependencies:
|
|
|
178
220
|
- - ">="
|
|
179
221
|
- !ruby/object:Gem::Version
|
|
180
222
|
version: '0'
|
|
223
|
+
- !ruby/object:Gem::Dependency
|
|
224
|
+
name: pathname
|
|
225
|
+
requirement: !ruby/object:Gem::Requirement
|
|
226
|
+
requirements:
|
|
227
|
+
- - ">="
|
|
228
|
+
- !ruby/object:Gem::Version
|
|
229
|
+
version: '0'
|
|
230
|
+
type: :runtime
|
|
231
|
+
prerelease: false
|
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
233
|
+
requirements:
|
|
234
|
+
- - ">="
|
|
235
|
+
- !ruby/object:Gem::Version
|
|
236
|
+
version: '0'
|
|
237
|
+
- !ruby/object:Gem::Dependency
|
|
238
|
+
name: httparty
|
|
239
|
+
requirement: !ruby/object:Gem::Requirement
|
|
240
|
+
requirements:
|
|
241
|
+
- - ">="
|
|
242
|
+
- !ruby/object:Gem::Version
|
|
243
|
+
version: '0'
|
|
244
|
+
type: :runtime
|
|
245
|
+
prerelease: false
|
|
246
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
247
|
+
requirements:
|
|
248
|
+
- - ">="
|
|
249
|
+
- !ruby/object:Gem::Version
|
|
250
|
+
version: '0'
|
|
251
|
+
- !ruby/object:Gem::Dependency
|
|
252
|
+
name: gitlab
|
|
253
|
+
requirement: !ruby/object:Gem::Requirement
|
|
254
|
+
requirements:
|
|
255
|
+
- - ">="
|
|
256
|
+
- !ruby/object:Gem::Version
|
|
257
|
+
version: '0'
|
|
258
|
+
type: :runtime
|
|
259
|
+
prerelease: false
|
|
260
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
261
|
+
requirements:
|
|
262
|
+
- - ">="
|
|
263
|
+
- !ruby/object:Gem::Version
|
|
264
|
+
version: '0'
|
|
265
|
+
- !ruby/object:Gem::Dependency
|
|
266
|
+
name: async
|
|
267
|
+
requirement: !ruby/object:Gem::Requirement
|
|
268
|
+
requirements:
|
|
269
|
+
- - ">="
|
|
270
|
+
- !ruby/object:Gem::Version
|
|
271
|
+
version: '0'
|
|
272
|
+
type: :runtime
|
|
273
|
+
prerelease: false
|
|
274
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
275
|
+
requirements:
|
|
276
|
+
- - ">="
|
|
277
|
+
- !ruby/object:Gem::Version
|
|
278
|
+
version: '0'
|
|
181
279
|
description: a longer description or delete this line.
|
|
182
280
|
email:
|
|
183
281
|
- v2top1@163.com
|
|
@@ -196,13 +294,20 @@ files:
|
|
|
196
294
|
- ".idea/yk_command.iml"
|
|
197
295
|
- Gemfile
|
|
198
296
|
- Gemfile.lock
|
|
297
|
+
- README.html
|
|
199
298
|
- README.md
|
|
200
299
|
- Rakefile
|
|
201
300
|
- bin/console
|
|
202
301
|
- bin/setup
|
|
203
302
|
- bin/yk_command
|
|
303
|
+
- images/Xnip2022-04-26_17-25-30.jpg
|
|
304
|
+
- images/Xnip2022-04-26_17-27-32.jpg
|
|
305
|
+
- images/Xnip2022-04-26_17-30-36.jpg
|
|
204
306
|
- lib/yk_command.rb
|
|
307
|
+
- lib/yk_command/analyze.rb
|
|
205
308
|
- lib/yk_command/commands.rb
|
|
309
|
+
- lib/yk_command/dependency_handler.rb
|
|
310
|
+
- lib/yk_command/request.rb
|
|
206
311
|
- lib/yk_command/template/objc/CategoryHeader.h
|
|
207
312
|
- lib/yk_command/template/objc/PrefixHeader.pch
|
|
208
313
|
- lib/yk_command/template/objc/RouterDefine.h
|
|
@@ -219,8 +324,10 @@ files:
|
|
|
219
324
|
- lib/yk_command/template/objc/demo/DemoViewModel.m
|
|
220
325
|
- lib/yk_command/template/swift/RouterDefine.swift
|
|
221
326
|
- lib/yk_command/version.rb
|
|
327
|
+
- lib/yk_command/yk_module.rb
|
|
222
328
|
- sig/yk_command.rbs
|
|
223
329
|
- yk_command.gemspec
|
|
330
|
+
- 归档.zip
|
|
224
331
|
homepage: https://github.com/lyleLH
|
|
225
332
|
licenses: []
|
|
226
333
|
metadata:
|