metamodel 0.0.3 → 0.0.4

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
  SHA1:
3
- metadata.gz: 5027faa28bcf3e7d87ba3e152f2f812562237c49
4
- data.tar.gz: b78d7293ab4a90fdc831f6e7b94b2d802d306f9a
3
+ metadata.gz: a0ac592ba54f109f9c4dd66e14386c35651c7fe5
4
+ data.tar.gz: 428fc1d8078aec4812f2b8053757a5a730f8a01f
5
5
  SHA512:
6
- metadata.gz: c4f4929a6cebae8736d7783a493312251ea668942ab6689f09ad032669f2bce5432ed985402af02e3ed4a27669502c85e6eb3934b515616d2d3a1f47f982bbfe
7
- data.tar.gz: 24de521af1ada8393bb874aab884be227cdbee438c0984a403535b311131011175340d0e0d78426672c719b866e710aa917009522b9834999494596e1872b1d8
6
+ metadata.gz: b0a5581fb5a1551cca3ed945943cfcf53f7489f3417d1711dd7091aaa01c0d6841331915915a0d3ef327a8bc15f4f4a464923188bf4278a17e9959a488372b9a
7
+ data.tar.gz: d67365c7b4b34688c787d5bdf86ea0eab19256c7d34ea875d46686051de1b3d5b7754e54ba7a5aee7fc152c21c1497c8e6c0b1bea50beae99075e010ae4a8b3d
data/README.md CHANGED
@@ -87,21 +87,24 @@ Edit meta file using vim, Emacs or other editor and run `meta build`.
87
87
  ```shell
88
88
  $ meta build
89
89
 
90
- Building MetaModel project
91
-
92
- Cloning MetaModel project into `./MetaModel` folder
93
- Using `./MetaModel/MetaModel.xcodeproj` to build module
90
+ Building MetaModel.framework in project
91
+ Existing project `./metamodel/MetaModel.xcodeproj`
94
92
 
95
93
  Analyzing meta files
96
- -> Resolving `user.rb`
94
+ -> Resolving `user.rb`
97
95
 
98
96
  Generating model files
99
- -> Using User.swift file
97
+ -> Using User.swift file
98
+
99
+ Generating MetaModel.framework
100
+ -> MetaModel.framework located in current folder
101
+
102
+ [!] Please drag MetaModel.framework into Linked Frameworks and Libraries section
100
103
  ```
101
104
 
102
- This command create a brand new xcode project in `./MetaModel` folder, just add the `MetaModel.project` into your project or workspace. And add `MetaModel.framework` to **Linked frameworks and Libraries** phrase which located in `General` tab.
105
+ This command build a `MetaModel.framework` in project root folder, you need to add this framework to **Linked frameworks and Libraries** phrase which located in `General` tab.
103
106
 
104
- ![add-metamodel-project-demo](images/add-metamodel-project-demo.png)
107
+ ![integrate-metamodel-framework](images/integrate-metamodel-framework.png)
105
108
 
106
109
  Add this line of code in your project.
107
110
 
@@ -18,21 +18,23 @@ module MetaModel
18
18
  end
19
19
 
20
20
  def run
21
- UI.section "Building MetaModel project" do
21
+ UI.section "Building MetaModel.framework in project" do
22
22
  clone_project
23
23
  parse_template
24
24
  render_model_files
25
25
  update_initialize_method
26
+ build_metamodel_framework
26
27
  end
28
+ UI.notice "Please drag MetaModel.framework into Linked Frameworks and Libraries phrase.\n"
27
29
  end
28
30
 
29
31
  def clone_project
30
32
  if File.exist? config.metamodel_xcode_project
31
33
  UI.message "Existing project `#{config.metamodel_xcode_project}`"
32
34
  else
33
- UI.section "Cloning MetaModel project into `./MetaModel` folder" do
35
+ UI.section "Cloning MetaModel project into `./metamodel` folder" do
34
36
  Git.clone(config.metamodel_template_uri, 'MetaModel')
35
- UI.message "Using `./MetaModel/MetaModel.xcodeproj` to build module"
37
+ UI.message "Using `./metamodel/MetaModel.xcodeproj` to build module"
36
38
  end
37
39
  end
38
40
  end
@@ -47,14 +49,24 @@ module MetaModel
47
49
  Renderer.render(@models)
48
50
  end
49
51
  end
50
-
51
52
  def update_initialize_method
52
53
  template = File.read File.expand_path(File.join(File.dirname(__FILE__), "../template/metamodel.swift.erb"))
53
54
  result = ErbalT::render_from_hash(template, { :models => @models })
54
- model_path = Pathname.new("./MetaModel/MetaModel/MetaModel.swift")
55
+ model_path = Pathname.new("./metamodel/MetaModel/MetaModel.swift")
55
56
  File.write model_path, result
56
57
  end
57
58
 
59
+ def build_metamodel_framework
60
+ UI.section "Generating MetaModel.framework" do
61
+ command = "xcodebuild -project metamodel/MetaModel.xcodeproj -scheme MetaModel > /dev/null 2>&1"
62
+ result = system command
63
+ raise Informative, 'Building framework failed.' unless result
64
+ result = system "cp -rf MetaModel/Build/Products/Debug-iphoneos/MetaModel.framework #{config.installation_root}"
65
+ raise Informative, 'Copy framework to current folder failed.' unless result
66
+ UI.message "-> ".green + "MetaModel.framework located in current folder"
67
+ end
68
+ end
69
+
58
70
  def validate!
59
71
  super
60
72
  raise Informative, 'No meta folder in directory' unless config.meta_path_in_dir(Pathname.pwd)
@@ -45,7 +45,7 @@ module MetaModel
45
45
  result = templates.map { |template|
46
46
  ErbalT::render_from_hash(template, { :model => model })
47
47
  }.join("\n")
48
- model_path = Pathname.new("./MetaModel/MetaModel/#{model.name}.swift")
48
+ model_path = Pathname.new("./metamodel/MetaModel/#{model.name}.swift")
49
49
  File.write model_path, result
50
50
 
51
51
  file_refs << models_group.new_reference(Pathname.new("MetaModel/#{model.name}.swift"))
@@ -74,7 +74,7 @@ module MetaModel
74
74
  # @return [String]
75
75
  #
76
76
  def metamodel_xcode_project
77
- "./MetaModel/MetaModel.xcodeproj"
77
+ "./metamodel/MetaModel.xcodeproj"
78
78
  end
79
79
 
80
80
  # Returns whether or not meta folder is in current project.
@@ -21,7 +21,7 @@ module MetaModel
21
21
  end
22
22
 
23
23
  def type_without_optional
24
- return type.to_s[0..-2] if key.to_s.end_with? "?"
24
+ return type.to_s[0..-2] if type.to_s.end_with? "?"
25
25
  type
26
26
  end
27
27
 
@@ -19,18 +19,14 @@ public extension <%= model.name %> {
19
19
 
20
20
  columnsSQL.append(.id)
21
21
  valuesSQL.append(id)
22
-
23
22
  <% model.properties_exclude_id.each do |property| %><% if property.is_optional? %>
24
23
  <%= """if let #{property.key} = #{property.key} {
25
24
  columnsSQL.append(.#{property.key})
26
25
  valuesSQL.append(#{property.key})
27
- }
28
- """ %>
29
- <% else %>
26
+ }""" %><% else %>
30
27
  <%= """columnsSQL.append(.#{property.key})
31
- valuesSQL.append(#{property.key})
32
- """ %>
33
- <% end %><% end %>
28
+ valuesSQL.append(#{property.key})
29
+ """ %><% end %><% end %>
34
30
 
35
31
  let insertSQL = "INSERT INTO \(tableName.unwrapped) (\(columnsSQL.map { $0.rawValue }.joinWithSeparator(", "))) VALUES (\(valuesSQL.map { $0.unwrapped }.joinWithSeparator(", ")))"
36
32
  guard let _ = executeSQL(insertSQL) else { return nil }
@@ -1,5 +1,5 @@
1
1
  module MetaModel
2
2
  # The version of the MetaModel command line tool.
3
3
  #
4
- VERSION = '0.0.3'.freeze unless defined? MetaModel::MetaModel
4
+ VERSION = '0.0.4'.freeze unless defined? MetaModel::MetaModel
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metamodel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Draveness Zuo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-05 00:00:00.000000000 Z
11
+ date: 2016-09-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: claide
@@ -163,7 +163,7 @@ files:
163
163
  - lib/metamodel/template/static_methods.swift.erb
164
164
  - lib/metamodel/user_interface.rb
165
165
  - lib/metamodel/version.rb
166
- homepage: https://github.com/Draveness/MetaModel
166
+ homepage: https://github.com/MModel/MetaModel
167
167
  licenses:
168
168
  - MIT
169
169
  metadata: {}