hemera 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: baf1a3a3123879e22a825e49f7fab56f100229e42567f46a9b3f532f6d4e5fd7
4
- data.tar.gz: 576e0d305f9f3c1ae265cb73ead49146eee13e0e453df15e9eb2886f988c29c7
3
+ metadata.gz: f672cbb8d185ddc997c9ae2be5147abbceb5fb57995e03212741902ca703606f
4
+ data.tar.gz: 1328988b2462e8376f74e877c8579aa85efe33ab4684da8e9222cab334b4e080
5
5
  SHA512:
6
- metadata.gz: 3a009ec19c167c4087ecfc3ebaad7623d6e64153edf7c65125c51f89892833eae5ad262b2e620e634e427fdb3c7787486d8fff2579661a28470b46086eb8cd8c
7
- data.tar.gz: 2e0d21dac330bd29b36258e0034c0df52e9cc432adc54c67fa059478aa0432b06e7a0f36ecb4a5da6be6688e43722f832adc085c35fb3d1444a0be30a6a2fac1
6
+ metadata.gz: 002f1b2303b4010c399b06ada618f07f6d77bab8e2a1ddad5f6efd6aa93d0992f60068995bd52e868ea5604a6cf9ef00f00d24afb894091faa2404b13df1fb9a
7
+ data.tar.gz: f9594ca651300bbe80e2fb0a5f2193caabf93ddd01477d26bed0002b5769539ba03622fc742b1ba15401704171b7c7d4724e22d1ce49026b120242186a1e750c
data/README.md CHANGED
@@ -12,10 +12,63 @@ gem install Hemera
12
12
 
13
13
  ## Usage
14
14
 
15
+ use help to see details
16
+
17
+ ```
18
+ hm help
19
+
20
+ NAME
21
+ hm - Hemera, a command line tool for development
22
+
23
+ SYNOPSIS
24
+ hm [global options] command [command options] [arguments...]
25
+
26
+ VERSION
27
+ 0.1.1
28
+
29
+ GLOBAL OPTIONS
30
+ --help - Show this message
31
+ --version - Display the program version
32
+
33
+ COMMANDS
34
+ help - Shows a list of commands or help for one command
35
+ meta, m - metaprogramming
36
+ pod, p - cocoapods
37
+ xcode, x - Xcode
38
+ ```
39
+ use meta to generate code in future, not support for the time being.
40
+ ```
41
+ hm meta
42
+
43
+ NAME
44
+ meta - metaprogramming
45
+
46
+ SYNOPSIS
47
+ hm [global options] meta img
48
+
49
+ COMMANDS
50
+ img, i - generate img code
51
+ ```
52
+
53
+ use xcode subcommand can open/clean workspace
54
+
15
55
  ```
16
- # some usage
56
+ # Clean DerivedData, support custom path
57
+ hm xcode clean # also hm x c
58
+
59
+ # Open Xcode Workspace, support xcodeproj and xcworkspace
60
+ hm xcode open # also hm x o
17
61
  ```
18
62
 
63
+ use pod can create/install with cocoapods
64
+
65
+ ```
66
+ # create a pod
67
+ hm pod create YourPodsName # also hm p c YourPodsName
68
+
69
+ # force install podfile when pod install error
70
+ hm pod install # also hm p i
71
+ ```
19
72
 
20
73
  ## License
21
74
 
data/hemera.gemspec CHANGED
@@ -22,7 +22,7 @@ Gem::Specification.new do |spec|
22
22
  spec.require_paths = ['lib']
23
23
 
24
24
  spec.add_development_dependency 'bundler', '~> 1.16'
25
- spec.add_development_dependency 'cocoapods', '~> 1.5.0'
25
+ spec.add_development_dependency 'cocoapods', '~> 1.5', '>= 1.5.0'
26
26
  spec.add_development_dependency 'rake', '~> 10.0'
27
27
  spec.add_development_dependency 'rspec', '~> 3.0'
28
28
 
@@ -0,0 +1,88 @@
1
+ require 'erb'
2
+ require 'pathname'
3
+ module Hemera
4
+ module Generator
5
+ class ImageModel
6
+ attr_reader :name
7
+ attr_reader :name_light
8
+ attr_reader :name_dark
9
+ def initialize(name, name_light, name_dark)
10
+ @name = name
11
+ @name_light = name_light
12
+ @name_dark = name_dark
13
+ end
14
+
15
+ def to_s
16
+ @name + "\t" + @name_light + "\t" + @name_dark
17
+ end
18
+ end
19
+ class ImageGenerator
20
+ def initialize(output_file_name, path)
21
+ @class_name = output_file_name
22
+ @path = path
23
+ @images = image_model_of_names
24
+ end
25
+
26
+ def find_paths_of_png(path = @path)
27
+ Dir.glob(path + '/**/*.png')
28
+ end
29
+
30
+ def names_of_image_paths(paths = find_paths_of_png)
31
+ paths.map do |path|
32
+ path.split('/').last[0..-('.png'.length + 1)].split('@').first
33
+ end
34
+ end
35
+
36
+ def image_model_of_names(names = names_of_image_paths)
37
+ lights = []
38
+ darks = []
39
+ names.each do |name|
40
+ if name =~ /^night_(.*)/
41
+ darks << name.gsub('night_', '')
42
+ else
43
+ lights << name
44
+ end
45
+ end
46
+ lights.uniq.map do |name|
47
+ field_name = name.gsub(/[\s.-]/, '_')
48
+ light = name
49
+ dark = darks.include?(name) ? 'night_' + name : name
50
+ ImageModel.new(field_name, light, dark)
51
+ end
52
+ end
53
+
54
+ def interface_file
55
+ ERB.new(File.read(File.expand_path('template/image.h.erb', __dir__))).result(binding)
56
+ end
57
+
58
+ def implementent_file
59
+ ERB.new(File.read(File.expand_path('template/image.m.erb', __dir__))).result(binding)
60
+ end
61
+
62
+ def generate # (is_swift)
63
+ # if is_swift
64
+ # puts is_swift
65
+ # else
66
+ # end
67
+
68
+ puts 'generating 😊'
69
+
70
+ interface_file_path = @path + '/' + @class_name + '.h'
71
+ implementent_file_path = @path + '/' + @class_name + '.m'
72
+
73
+ File.open(interface_file_path, 'w') do |f|
74
+ f.puts interface_file
75
+ end
76
+
77
+ File.open(implementent_file_path, 'w') do |f|
78
+ f.puts implementent_file
79
+ end
80
+
81
+ puts 'generating done! 🎉'
82
+ end
83
+ end
84
+ end
85
+ end
86
+
87
+
88
+
@@ -0,0 +1,18 @@
1
+ /**
2
+ * generate from Hemera
3
+ * https://github.com/JianweiWangs/Hemera.git
4
+ * JianweiWangs
5
+ * <%=@class_name%>.h
6
+ */
7
+
8
+ #import <UIKit/UIKit.h>
9
+
10
+ @interface <%=@class_name%> : NSObject
11
+
12
+ @property (nonatomic, readonly) UIImage *light;
13
+
14
+ @property (nonatomic, readonly) UIImage *dark;
15
+ <% for @image in @images %>
16
+ <%= "@property (class, nonatomic, readonly) #{@class_name} *#{@image.name};" %>
17
+ <% end %>
18
+ @end
@@ -0,0 +1,28 @@
1
+ /**
2
+ * generate from Hemera
3
+ * https://github.com/JianweiWangs/Hemera.git
4
+ * JianweiWangs
5
+ * <%=@class_name%>.h
6
+ */
7
+
8
+ <%= "#import \"#{@class_name}.h\"" %>
9
+
10
+ <%= "@interface #{@class_name} ()" %>
11
+
12
+ @property (nonatomic, readwrite) UIImage *light;
13
+
14
+ @property (nonatomic, readwrite) UIImage *dark;
15
+
16
+ @end
17
+
18
+ <%= "@implementation #{@class_name}" %>
19
+ <% for @image in @images %>
20
+ <%= "+ (#{@class_name} *)#{@image.name} {"%>
21
+ <%= "\t#{@class_name} *model = [#{@class_name} new];" %>
22
+ <%= "\tmodel.light = [UIImage imageNamed:@\"#{@image.name_light}\"];" %>
23
+ <%= "\tmodel.dark = [UIImage imageNamed:@\"#{@image.name_dark}\"];" %>
24
+ <%= "\treturn model;" %>
25
+ <%= "}" %>
26
+ <% end %>
27
+ @end
28
+
@@ -1,4 +1,4 @@
1
- require 'hemera/source/meta/image/image'
1
+ require 'hemera/source/meta/image/image_generator'
2
2
  module Hemera
3
3
  module Meta
4
4
  class << self
@@ -1,3 +1,3 @@
1
1
  module Hemera
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hemera
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - JianweiWangs
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-11-02 00:00:00.000000000 Z
11
+ date: 2018-11-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -29,6 +29,9 @@ dependencies:
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.5'
34
+ - - ">="
32
35
  - !ruby/object:Gem::Version
33
36
  version: 1.5.0
34
37
  type: :development
@@ -36,6 +39,9 @@ dependencies:
36
39
  version_requirements: !ruby/object:Gem::Requirement
37
40
  requirements:
38
41
  - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '1.5'
44
+ - - ">="
39
45
  - !ruby/object:Gem::Version
40
46
  version: 1.5.0
41
47
  - !ruby/object:Gem::Dependency
@@ -104,9 +110,11 @@ files:
104
110
  - lib/hemera/command/pod.rb
105
111
  - lib/hemera/command/xcode.rb
106
112
  - lib/hemera/source/meta.rb
107
- - lib/hemera/source/meta/image/image.rb
113
+ - lib/hemera/source/meta/image/image_generator.rb
108
114
  - lib/hemera/source/meta/image/objc.rb
109
115
  - lib/hemera/source/meta/image/swift.rb
116
+ - lib/hemera/source/meta/image/template/image.h.erb
117
+ - lib/hemera/source/meta/image/template/image.m.erb
110
118
  - lib/hemera/source/pod.rb
111
119
  - lib/hemera/source/xcode.rb
112
120
  - lib/hemera/tool/log.rb
@@ -1,24 +0,0 @@
1
-
2
- module Hemera
3
- module Generator
4
- class ImageGenerator
5
- # attr_reader :output_file_name
6
-
7
- def initialize(output_file_name, path)
8
- @output_file_name = output_file_name
9
- @path = path
10
- end
11
-
12
- def generate(is_swift)
13
- if is_swift
14
- puts is_swift
15
- else
16
-
17
- end
18
- end
19
- end
20
- end
21
- end
22
-
23
-
24
-