liftoffcli / liftoff Goto Github PK
View Code? Open in Web Editor NEWCLI for creating and configuring new Xcode projects
License: MIT License
CLI for creating and configuring new Xcode projects
License: MIT License
When creating a new project using liftoff, it doesn't tell the project what to do with the Images.xcassets
folder and shows the warning in the Build logs (in the log navigator). Looking at other projects it seems that you will have to generate a Copy Bundle Resources
Build Phase that includes that directory.
Right now we're just making an ugly gitconfig. I'd like to change that.
Ideally, we'd read the current .gitconfig (if it exists), then append each line in the template .gitconfig unless the line already exists or the line is whitespace. That way we keep our formatting without overwriting the existing ignore file.
Right now it's a heredoc, which is a little gross: https://github.com/thoughtbot/liftoff/blob/master/lib/liftoff/xcodeproj_helper.rb
I think it'd probably be useful to have some negative flags in addition to the positive ones. That way users can do something like liftoff --no-git
to run all commands except creating the git files.
My project directory may be a bit different, but it would be nice if liftoff supported workspaces.
For example, my project directory is:
Project.xcworkspace
Project-iOS/iOS.xcodeproj
Project-Mac/Mac.xcodeproj
Not sure what this would look like whether it ran on all projects or gave options, but it could be a nice enhancement
I did this in our blog by pulling from /etc/passwd
: https://github.com/thoughtbot/robots.thoughtbot.com/pull/153
Might not make sense in this project, so close this if it's crazy.
AFNetworking and Kiwi (bonus points for configuring a new target for this)
Currently liftoff sets the base SDK on the target and not on the project level. Creating a new project using Xcode does the inverse, setting the base SDK on the project and letting the targets inherit. This should be mirrored in liftoff.
liftoff
Project name? testproj
Company name? company
Company identifier? |com.company| com.company
Prefix? ANS
/Users/andrewstephenson/.rvm/gems/ruby-2.0.0-p0/gems/xcodeproj-0.14.1/ext/xcodeproj/xcodeproj_ext.bundle: [BUG] Segmentation fault
ruby 2.0.0p247 (2013-06-27 revision 41674) [universal.x86_64-darwin13]
-- Crash Report log information --------------------------------------------
See Crash Report log file under the one of following:
* ~/Library/Logs/CrashReporter
* /Library/Logs/CrashReporter
* ~/Library/Logs/DiagnosticReports
* /Library/Logs/DiagnosticReports
the more detail of.
-- Control frame information -----------------------------------------------
c:0023 p:-17569994155918 s:0095 e:000094 TOP [FINISH]
c:0022 p:---- s:0093 e:000092 CFUNC :require
c:0021 p:0059 s:0089 e:000088 BLOCK /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:110
c:0020 p:0286 s:0086 e:000085 METHOD /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:35
c:0019 p:0009 s:0076 e:000075 TOP /usr/local/Cellar/liftoff/1.1/vendor/gems/xcodeproj-0.14.1/lib/xcodeproj/ext.rb:4 [FINISH]
c:0018 p:---- s:0074 e:000073 CFUNC :require
c:0017 p:0073 s:0070 e:000069 METHOD /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45
c:0016 p:0023 s:0060 e:000059 TOP /usr/local/Cellar/liftoff/1.1/vendor/gems/xcodeproj-0.14.1/lib/xcodeproj/project.rb:4 [FINISH]
c:0015 p:0048 s:0058 e:000057 METHOD /usr/local/Cellar/liftoff/1.1/rubylib/liftoff/project.rb:81
c:0014 p:0008 s:0054 e:000052 METHOD /usr/local/Cellar/liftoff/1.1/rubylib/liftoff/project.rb:47
c:0013 p:0016 s:0049 e:000048 METHOD /usr/local/Cellar/liftoff/1.1/rubylib/liftoff/project.rb:5 [FINISH]
c:0012 p:---- s:0043 e:000042 CFUNC :new
c:0011 p:0042 s:0037 e:000036 METHOD /usr/local/Cellar/liftoff/1.1/rubylib/liftoff/project_builder.rb:109
c:0010 p:0012 s:0034 e:000032 METHOD /usr/local/Cellar/liftoff/1.1/rubylib/liftoff/project_builder.rb:98
c:0009 p:0007 s:0029 e:000028 METHOD /usr/local/Cellar/liftoff/1.1/rubylib/liftoff/project_builder.rb:9
c:0008 p:0018 s:0026 e:000025 METHOD /usr/local/Cellar/liftoff/1.1/rubylib/liftoff/launchpad.rb:43
c:0007 p:0007 s:0023 e:000022 BLOCK /usr/local/Cellar/liftoff/1.1/rubylib/liftoff/launchpad.rb:15 [FINISH]
c:0006 p:---- s:0021 e:000020 CFUNC :chdir
c:0005 p:0031 s:0017 e:000016 METHOD /usr/local/Cellar/liftoff/1.1/rubylib/liftoff/file_manager.rb:5
c:0004 p:0036 s:0012 E:002298 METHOD /usr/local/Cellar/liftoff/1.1/rubylib/liftoff/launchpad.rb:14
c:0003 p:0021 s:0009 e:000008 METHOD /usr/local/Cellar/liftoff/1.1/rubylib/liftoff/cli.rb:9
c:0002 p:0100 s:0006 E:001ab8 EVAL /usr/local/bin/liftoff:14 [FINISH]
c:0001 p:0000 s:0002 E:002458 TOP [FINISH]
/usr/local/bin/liftoff:14:in <main>'
/usr/local/Cellar/liftoff/1.1/rubylib/liftoff/cli.rb:9:inrun'
/usr/local/Cellar/liftoff/1.1/rubylib/liftoff/launchpad.rb:14:in liftoff'
/usr/local/Cellar/liftoff/1.1/rubylib/liftoff/file_manager.rb:5:increate_project_dir'
/usr/local/Cellar/liftoff/1.1/rubylib/liftoff/file_manager.rb:5:in chdir'
/usr/local/Cellar/liftoff/1.1/rubylib/liftoff/launchpad.rb:15:inblock in liftoff'
/usr/local/Cellar/liftoff/1.1/rubylib/liftoff/launchpad.rb:43:in generate_project'
/usr/local/Cellar/liftoff/1.1/rubylib/liftoff/project_builder.rb:9:increate_project'
/usr/local/Cellar/liftoff/1.1/rubylib/liftoff/project_builder.rb:98:in groups_and_targets'
/usr/local/Cellar/liftoff/1.1/rubylib/liftoff/project_builder.rb:109:inxcode_project'
/usr/local/Cellar/liftoff/1.1/rubylib/liftoff/project_builder.rb:109:in new'
/usr/local/Cellar/liftoff/1.1/rubylib/liftoff/project.rb:5:ininitialize'
/usr/local/Cellar/liftoff/1.1/rubylib/liftoff/project.rb:47:in set_company_name'
/usr/local/Cellar/liftoff/1.1/rubylib/liftoff/project.rb:81:inxcode_project'
/usr/local/Cellar/liftoff/1.1/vendor/gems/xcodeproj-0.14.1/lib/xcodeproj/project.rb:4:in <top (required)>'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:inrequire'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in require'
/usr/local/Cellar/liftoff/1.1/vendor/gems/xcodeproj-0.14.1/lib/xcodeproj/ext.rb:4:in'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:35:in require'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:110:inrescue in require'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:110:in `require'
-- C level backtrace information -------------------------------------------
-- Other runtime information -----------------------------------------------
Loaded script: /usr/local/bin/liftoff
Loaded features:
0 enumerator.so
1 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin13/enc/encdb.bundle
2 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin13/enc/trans/transdb.bundle
3 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin13/rbconfig.rb
4 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/compatibility.rb
5 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/defaults.rb
6 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/deprecate.rb
7 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/errors.rb
8 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/version.rb
9 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/requirement.rb
10 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/platform.rb
11 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/specification.rb
12 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/exceptions.rb
13 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_gem.rb
14 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb
15 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems.rb
16 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin13/pathname.bundle
17 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/pathname.rb
18 /usr/local/Cellar/liftoff/1.1/vendor/gems/setup.rb
19 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/optparse.rb
20 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin13/etc.bundle
21 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb
22 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych/syntax_error.rb
23 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin13/psych.bundle
24 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin13/stringio.bundle
25 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych/nodes/node.rb
26 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych/nodes/stream.rb
27 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych/nodes/document.rb
28 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych/nodes/sequence.rb
29 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych/nodes/scalar.rb
30 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych/nodes/mapping.rb
31 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych/nodes/alias.rb
32 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych/nodes.rb
33 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych/streaming.rb
34 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych/visitors/visitor.rb
35 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin13/strscan.bundle
36 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych/scalar_scanner.rb
37 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych/visitors/to_ruby.rb
38 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych/visitors/emitter.rb
39 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych/visitors/yaml_tree.rb
40 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych/json/ruby_events.rb
41 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych/visitors/json_tree.rb
42 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych/visitors/depth_first.rb
43 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych/visitors.rb
44 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych/handler.rb
45 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych/tree_builder.rb
46 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych/parser.rb
47 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych/omap.rb
48 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych/set.rb
49 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych/coder.rb
50 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych/core_ext.rb
51 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin13/date_core.bundle
52 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/date/format.rb
53 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/date.rb
54 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych/deprecated.rb
55 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych/stream.rb
56 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych/json/yaml_events.rb
57 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych/json/tree_builder.rb
58 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych/json/stream.rb
59 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych/handlers/document_stream.rb
60 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych.rb
61 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/yaml.rb
62 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/cgi/util.rb
63 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/erb.rb
64 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/abbrev.rb
65 /usr/local/Cellar/liftoff/1.1/vendor/gems/highline-1.6.21/lib/highline/compatibility.rb
66 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/path_support.rb
67 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/dependency.rb
68 /usr/local/Cellar/liftoff/1.1/vendor/gems/highline-1.6.21/lib/highline/system_extensions.rb
69 /usr/local/Cellar/liftoff/1.1/vendor/gems/highline-1.6.21/lib/highline/question.rb
70 /usr/local/Cellar/liftoff/1.1/vendor/gems/highline-1.6.21/lib/highline/menu.rb
71 /usr/local/Cellar/liftoff/1.1/vendor/gems/highline-1.6.21/lib/highline/color_scheme.rb
72 /usr/local/Cellar/liftoff/1.1/vendor/gems/highline-1.6.21/lib/highline/style.rb
73 /usr/local/Cellar/liftoff/1.1/vendor/gems/highline-1.6.21/lib/highline/string_extensions.rb
74 /usr/local/Cellar/liftoff/1.1/vendor/gems/highline-1.6.21/lib/highline.rb
75 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/forwardable.rb
76 /usr/local/Cellar/liftoff/1.1/vendor/gems/highline-1.6.21/lib/highline/import.rb
77 /usr/local/Cellar/liftoff/1.1/vendor/gems/xcodeproj-0.14.1/lib/xcodeproj/user_interface.rb
78 /usr/local/Cellar/liftoff/1.1/vendor/gems/xcodeproj-0.14.1/lib/xcodeproj.rb
79 /usr/local/Cellar/liftoff/1.1/rubylib/liftoff/cli.rb
80 /usr/local/Cellar/liftoff/1.1/rubylib/liftoff/cocoapods_setup.rb
81 /usr/local/Cellar/liftoff/1.1/rubylib/liftoff/configuration_parser.rb
82 /usr/local/Cellar/liftoff/1.1/rubylib/liftoff/file_manager.rb
83 /usr/local/Cellar/liftoff/1.1/rubylib/liftoff/git_setup.rb
84 /usr/local/Cellar/liftoff/1.1/rubylib/liftoff/launchpad.rb
85 /usr/local/Cellar/liftoff/1.1/rubylib/liftoff/object_picker.rb
86 /usr/local/Cellar/liftoff/1.1/rubylib/liftoff/option_fetcher.rb
87 /usr/local/Cellar/liftoff/1.1/rubylib/liftoff/project.rb
88 /usr/local/Cellar/liftoff/1.1/rubylib/liftoff/project_builder.rb
89 /usr/local/Cellar/liftoff/1.1/rubylib/liftoff/project_configuration.rb
90 /usr/local/Cellar/liftoff/1.1/rubylib/liftoff/string_renderer.rb
91 /usr/local/Cellar/liftoff/1.1/rubylib/liftoff/template_finder.rb
92 /usr/local/Cellar/liftoff/1.1/rubylib/liftoff/version.rb
93 /usr/local/Cellar/liftoff/1.1/rubylib/liftoff/xcodeproj_helper.rb
94 /usr/local/Cellar/liftoff/1.1/rubylib/liftoff.rb
[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html
Abort trap: 6
We're printing a bunch of white text to the screen. It would be nice to pretty-up the text that we're printing with some color.
The newest version of xcodeproj breaks liftoff which is making dev a PITA. We should update it so that it works properly with the newest version
Configuration/scheme pairs for ad-hoc releases and app store submissions would be nice.
Running brew audit
and noticed there are some warnings about adherence to Homebrew house style
> brew audit
liftoff:
* Use https:// URLs for homepages on GitHub (url is http://github.com/thoughtbot/liftoff).
* Non-libraries were installed to "/usr/local/Cellar/liftoff/1.0/lib".
Installing non-libraries to "lib" is discouraged.
The offending files are:
/usr/local/Cellar/liftoff/1.0/lib/liftoff.rb
I get the following exception when I try to use liftoff in a project with only a test target. I have tried this with two different projects and I get the same result. To Reproduce create an empty project then add a test target, then try to run liftoff.
/Users/tobias/.rbenv/versions/1.9.3-p125/lib/ruby/gems/1.9.1/gems/liftoff-0.7.6/lib/liftoff/xcodeproj_helper.rb:93:in `choose_item': Could not locate any targets! (RuntimeError)
from /Users/tobias/.rbenv/versions/1.9.3-p125/lib/ruby/gems/1.9.1/gems/liftoff-0.7.6/lib/liftoff/xcodeproj_helper.rb:78:in `project_target'
from /Users/tobias/.rbenv/versions/1.9.3-p125/lib/ruby/gems/1.9.1/gems/liftoff-0.7.6/lib/liftoff/xcodeproj_helper.rb:34:in `initialize'
from /Users/tobias/.rbenv/versions/1.9.3-p125/lib/ruby/gems/1.9.1/gems/liftoff-0.7.6/lib/liftoff/launchpad.rb:94:in `new'
from /Users/tobias/.rbenv/versions/1.9.3-p125/lib/ruby/gems/1.9.1/gems/liftoff-0.7.6/lib/liftoff/launchpad.rb:94:in `xcode_helper'
from /Users/tobias/.rbenv/versions/1.9.3-p125/lib/ruby/gems/1.9.1/gems/liftoff-0.7.6/lib/liftoff/launchpad.rb:74:in `set_indentation_level'
from /Users/tobias/.rbenv/versions/1.9.3-p125/lib/ruby/gems/1.9.1/gems/liftoff-0.7.6/lib/liftoff/launchpad.rb:18:in `liftoff'
from /Users/tobias/.rbenv/versions/1.9.3-p125/lib/ruby/gems/1.9.1/gems/liftoff-0.7.6/bin/liftoff:9:in `<top (required)>'
from /Users/tobias/.rbenv/versions/1.9.3-p125/bin/liftoff:23:in `load'
from /Users/tobias/.rbenv/versions/1.9.3-p125/bin/liftoff:23:in `<main>
Hi,
It would be nice to be able to add custom build phases. In almost every project I have a build phase that adds the version number to the app icon: http://www.merowing.info/2013/03/overlaying-application-version-on-top-of-your-icon/#.UylQaa1dVQY
I also have a build phase that increases the build number everytime I create and archive or release build.
Would be nice to be able to specify the directory to create project into so that one doesn't have to use the project name as the top-level directory name.
liftoff .
- would create the project in the current directory
Right now, templates are hidden inside the liftoff
implementation. We could possibly add a .liftoff/templates/
system that works the same way .liftoffrc
works so that users could override existing templates, or add their own template files.
This line should be removed.
The purpose of this file is to allow different machines (checkouts) to rebuild the exactly the same Pod library of the rest of the team.
When creating a new project with Liftoff that uses Cocoapods, the pod
installation output warns that the OTHER_LDFLAGS
setting has been overridden:
[!] The target `ExampleProject [Release]` overrides the `OTHER_LDFLAGS` build setting defined in `Pods/Pods.xcconfig'.
- Use the `$(inherited)` flag, or
- Remove the build settings from the target.
[!] The target `ExampleProject [Release - Debug]` overrides the `OTHER_LDFLAGS` build setting defined in `Pods/Pods.xcconfig'.
- Use the `$(inherited)` flag, or
- Remove the build settings from the target.
On opening the newly-generated project, I can confirm that the Other Linker Flags setting is marked as having a custom value in Build Settings - and is empty.
I would expect a fresh project to have no custom value set for this property, so that these warnings are not generated by Cocoapods. Either that, or Liftoff should add the $(inherited)
flag. I'm not entirely sure whether this is a Liftoff issue, an Xcodeproj issue, a Cocoapods issue, or something else?
I can't see any mention of OTHER_LDFLAGS
within the Liftoff project itself.
It would be great if liftoff established a better directory structure for organizing class files than what Xcode generates.
– Assets
– Classes
– Models
– Services
– Controllers
– View Controllers
– Views
– Support
Assuming ~/Project
exists, mkdir fails when a new project attempts to be created
[~] liftoff
Project name? Project
Company name? Mark Adams
Author name? Mark Adams
Prefix? MA
/Users/Mark/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/fileutils.rb:245:in `mkdir': File exists - Project (Errno::EEXIST)
from /Users/Mark/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/fileutils.rb:245:in `fu_mkdir'
from /Users/Mark/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/fileutils.rb:174:in `block in mkdir'
from /Users/Mark/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/fileutils.rb:173:in `each'
from /Users/Mark/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/fileutils.rb:173:in `mkdir'
from /Users/Mark/Development/Ruby/liftoff/lib/liftoff/file_manager.rb:6:in `create_project_dir'
from /Users/Mark/Development/Ruby/liftoff/lib/liftoff/launchpad.rb:14:in `liftoff'
from /Users/Mark/Development/Ruby/liftoff/lib/liftoff/cli.rb:11:in `run'
from ./bin/liftoff:9:in `<main>'
Hi,
It seems like deployment target can not be configured? It would be nice to be able to set the deployment target.
This came up before as #35, and I turned it down, but this could possibly be an answer for this. Ideally, we could have a default config (the same setup that runs now), but if it finds a .liftoffrc config file in the home directory, it uses that instead. This would allow users to configure their projects the way they want to without increasing the overhead by forcing them to create a project-specific config file.
It could actually end up being a 3 step lookup process:
This way if you do want to configure a single project differently it can be done without changing your global config.
The autotools approach might be a bit too much overhead for this project, since we're only targeting OS X/Homebrew for distribution. But I think we can steal some things from the autotools approach to improve the release process for ourselves.
We should try to steal the following things:
vendorize
script and setup.rb
for setting the LOADPATH
gh-pages
as a sub-repo and adding the tarballthoughtbot/homebrew-formulae
as a sub-repo and adding the generated formulaWe should also mimic the autotools make process by having release
, release:build
, release:push
and release:clean
rake tasks.
Development will happen on the gf-improve-release-process
branch
At our work place, we have a practise of prefixing our commit messages with the name of the branch, where our branch name corresponds to the id
of a story in our issue tracker. We do this for 2 reasons:
I was wondering if you guys do this too, and also if you think it's a worth while feature to add?
)-> sudo gem install liftoff
Password:
Fetching: highline-1.6.15.gem (100%)
Fetching: commander-4.1.3.gem (100%)
Fetching: i18n-0.6.1.gem (100%)
Fetching: multi_json-1.5.0.gem (100%)
Fetching: activesupport-3.2.11.gem (100%)
Fetching: xcodeproj-0.3.5.gem (100%)
Building native extensions. This could take a while...
Fetching: liftoff-0.6.1.gem (100%)
Successfully installed highline-1.6.15
Successfully installed commander-4.1.3
Successfully installed i18n-0.6.1
Successfully installed multi_json-1.5.0
Successfully installed activesupport-3.2.11
Successfully installed xcodeproj-0.3.5
Successfully installed liftoff-0.6.1
7 gems installed
Installing ri documentation for highline-1.6.15...
Installing ri documentation for commander-4.1.3...
Installing ri documentation for i18n-0.6.1...
Installing ri documentation for multi_json-1.5.0...
Installing ri documentation for activesupport-3.2.11...
unrecognized option `--encoding'
For help on options, try 'rdoc --help'
ERROR: While generating documentation for activesupport-3.2.11
... MESSAGE: exit
... RDOC args: --ri --op /Library/Ruby/Gems/1.8/doc/activesupport-3.2.11/ri --encoding UTF-8 lib --title activesupport-3.2.11 Documentation --quiet
liftoff
will serialize *.pbxproj
file as XML instead of Xcode default's property list (OpenStep plist) format. This is pretty annoying. Frankly I didn’t expect this, is there anyway keeping original file format and apply only related changes?
I guess there is a similar issue with cocoapods also. (Although I didn’t try it my self )there is a claim that Xcode will save back to plist whenever possible...
Distributing liftoff via rubygems is kind of ... dumb. Given that the tool is intended to be used by non-ruby devs and used outside of any ruby environment, the distribution should really match that. I'd love to re-package this to be distributed and managed via homebrew.
When I try to run it in my project, I am getting this error:
$ liftoff
Writing .gitignore
Writing .gitattributes
/Users/marc/.rvm/gems/ruby-1.9.3-p327/gems/liftoff-0.7/lib/liftoff/xcodeproj_helper.rb:95:in `choose_item': undefined method `choose' for #<XcodeprojHelper:0x007fe159885c10> (NoMethodError)
from /Users/marc/.rvm/gems/ruby-1.9.3-p327/gems/liftoff-0.7/lib/liftoff/xcodeproj_helper.rb:76:in `project_target'
from /Users/marc/.rvm/gems/ruby-1.9.3-p327/gems/liftoff-0.7/lib/liftoff/xcodeproj_helper.rb:32:in `initialize'
from /Users/marc/.rvm/gems/ruby-1.9.3-p327/gems/liftoff-0.7/lib/liftoff/launchpad.rb:94:in `new'
from /Users/marc/.rvm/gems/ruby-1.9.3-p327/gems/liftoff-0.7/lib/liftoff/launchpad.rb:94:in `xcode_helper'
from /Users/marc/.rvm/gems/ruby-1.9.3-p327/gems/liftoff-0.7/lib/liftoff/launchpad.rb:74:in `set_indentation_level'
from /Users/marc/.rvm/gems/ruby-1.9.3-p327/gems/liftoff-0.7/lib/liftoff/launchpad.rb:18:in `liftoff'
from /Users/marc/.rvm/gems/ruby-1.9.3-p327/gems/liftoff-0.7/bin/liftoff:9:in `<top (required)>'
from /Users/marc/.rvm/gems/ruby-1.9.3-p327/bin/liftoff:19:in `load'
from /Users/marc/.rvm/gems/ruby-1.9.3-p327/bin/liftoff:19:in `<main>'
from /Users/marc/.rvm/gems/ruby-1.9.3-p327/bin/ruby_noexec_wrapper:14:in `eval'
from /Users/marc/.rvm/gems/ruby-1.9.3-p327/bin/ruby_noexec_wrapper:14:in `<main>'
liftoff
will do liftoff all
, but what if we want analyzer
and warnings
only? Currently you have to:
liftoff analyzer
liftoff warnings
… it would be sweet if could we:
liftoff analyzer warnings
… instead. What do you think?
Hi,
i am running ruby 1.9.3 but seems more like a loadpath problem.
Trace:
/Users/netbe/.rbenv/versions/1.9.3-p392/lib/ruby/gems/1.9.1/gems/liftoff-0.7.5/lib/liftoff/launchpad.rb:66:in `display_version': uninitialized constant Liftoff::VERSION (NameError)
from /Users/netbe/.rbenv/versions/1.9.3-p392/lib/ruby/gems/1.9.1/gems/liftoff-0.7.5/lib/liftoff/launchpad.rb:11:in `liftoff'
from /Users/netbe/.rbenv/versions/1.9.3-p392/lib/ruby/gems/1.9.1/gems/liftoff-0.7.5/bin/liftoff:9:in `<top (required)>'
from /Users/netbe/.rbenv/versions/1.9.3-p392/bin/liftoff:23:in `load'
from /Users/netbe/.rbenv/versions/1.9.3-p392/bin/liftoff:23:in `<main>'
I hit an issue running liftoff warnings
=> liftoff warnings
error: undefined method `enable_all_warnings' for #<XcodeprojHelper:0x007fac539975d0>. Use --trace to view backtrace
=> liftoff warnings --trace
/Users/ksmiley/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/liftoff-0.6/lib/liftoff/commands/warnings.rb:7:in `block (2 levels) in <top (required)>': undefined method `enable_all_warnings' for #<XcodeprojHelper:0x007fcd7cb24278> (NoMethodError)
from /Users/ksmiley/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/commander-4.1.3/lib/commander/command.rb:180:in `call'
from /Users/ksmiley/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/commander-4.1.3/lib/commander/command.rb:180:in `call'
from /Users/ksmiley/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/commander-4.1.3/lib/commander/command.rb:155:in `run'
from /Users/ksmiley/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/commander-4.1.3/lib/commander/runner.rb:402:in `run_active_command'
from /Users/ksmiley/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/commander-4.1.3/lib/commander/runner.rb:78:in `run!'
from /Users/ksmiley/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/commander-4.1.3/lib/commander/delegates.rb:11:in `run!'
from /Users/ksmiley/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/commander-4.1.3/lib/commander/import.rb:10:in `block in <top (required)>'
sudo gem install liftoff
Password:
Building native extensions. This could take a while...
ERROR: Error installing liftoff:
ERROR: Failed to build gem native extension.
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb
checking for -std=c99 option to compiler... yes
checking for CoreFoundation... yes
checking for CoreFoundation/CoreFoundation.h... yes
checking for CoreFoundation/CFStream.h... yes
checking for CoreFoundation/CFPropertyList.h... yes
checking for ruby/st.h... yes
creating extconf.h
creating Makefile
make "DESTDIR="
compiling xcodeproj_ext.c
xcodeproj_ext.c:200:7: warning: 'CFURLCreateDataAndPropertiesFromResource' is deprecated: first deprecated in OS X 10.9 [-Wdeprecated-declarations]
if (CFURLCreateDataAndPropertiesFromResource(NULL, fileURL, &resourceData, NULL, NULL, &errorCode)) {
^
/System/Library/Frameworks/CoreFoundation.framework/Headers/CFURLAccess.h:46:9: note: 'CFURLCreateDataAndPropertiesFromResource' declared here
Boolean CFURLCreateDataAndPropertiesFromResource(CFAllocatorRef alloc, CFURLRef url, CFDataRef resourceData, CFDictionaryRef *properties, CFArrayRef desiredProperties, SInt32 *errorCode) CF_DEPRECATED(10_0, 10_9, 2_0, 7_0);
^
1 warning generated.
linking shared-object xcodeproj_ext.bundle
clang: error: unknown argument: '-multiply_definedsuppress' [-Wunused-command-line-argument-hard-error-in-future]
clang: note: this will be a hard error (cannot be downgraded to a warning) in the future
make: ** [xcodeproj_ext.bundle] Error 1
Gem files will remain installed in /Library/Ruby/Gems/2.0.0/gems/xcodeproj-0.5.5 for inspection.
Results logged to /Library/Ruby/Gems/2.0.0/gems/xcodeproj-0.5.5/ext/xcodeproj/gem_make.out
if we want to be a Real Command Line Tool, we should probably have a man page. We can look at the man pages for gitsh and rcm for examples of how it's done.
Also see this reference on writing man pages
brew install liftoff
Error: No available formula for xcproj
If the company name has any special characters or spaces they get put into the bundle identifier which isn't allowed.
com.My Company, Inc..project
Generates a warning for the build that says there is an invalid character.
They should be removed or replaced with an appropriate alternative, '-'?
From the http://robots.thoughtbot.com/opinionated-settings-for-app-development-in-xcode, it looks like I should be able to, but can't actually change the indentation level:
> liftoff indentation 2
Writing .gitignore
Writing .gitattributes
Setting the project indentation level to 4 spaces
Adding shell script build phase to warn on TODO and FIXME comments
Setting Hosey warnings at the project level
Turning on Static Analyzer at the project level
I asked for 2, I got 4...
Stubbing the SUT means that we're not really testing it, since we modify its behavior to suit our needs. Instead of stubbing the SUT, we should stub its collaborators. In the case of OptionParser
, these collaborators are File
and Dir
since that's how it looks up liftoffrc
files.
Hi,
In most apps I develop I dont create unit tests. Can we add an option to not create the unit test target?
I would like to start a discussion on how user customisations of liftoff could be implemented.
My idea would be a ruby script that can be specified on the command line that would contain user settings and scripts to run, using helper methods from liftoff to do all the heavy lifting.
Basically the user script would be similar to a Podfile
from CocoaPods, technically Ruby but very simple.
I am not a Ruby programmer so I don't trust myself to implement this cleanly, but I am poking around the source code to explore what is possible.
There are a couple of problems:
$LOAD_PATH
additions in gems/setup.rb
assume every gem only needs a lib
directory. It can be fixed using gem.require_paths
.ruby extconf.rb && make
in each gem's ext
directory as part of the default make target is probably a good start.I got the integration ready in this branch.
I can submit a proper PR anytime.
These keys are left over from the old command line flags. We should look at fixing them to not suck now that we don't have to worry about this limitation.
We should be following the convention we use in Project_Configuration
and use STDERR.puts
and an exit code.
When liftoff
is waiting for input, and the user presses ctrlc, the exception isn't trapped and there's a stack trace.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.