hemera 0.1.1 → 0.2.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 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
-