metamodel 0.0.3 → 0.0.4

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
  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: {}