Coder Social home page Coder Social logo

liftoff's People

Contributors

alisoftware avatar attomos avatar bitcrumb avatar captainron avatar cfdrake avatar edwardloveall avatar fabiopelosin avatar gabebw avatar gfontenot avatar gonah avatar hyperspacemark avatar imkevinxu avatar jakecraige avatar jferris avatar jpsim avatar jsteiner avatar keith avatar marcelofabri avatar matrixsenpai avatar matt-oakes avatar mikaelbartlett avatar mokagio avatar netbe avatar otaran avatar priteshshah1983 avatar sabatinomasala avatar tonyd256 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

liftoff's Issues

User specified configurations -or- custom commands

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.

uninitialized constant Liftoff::VERSION (NameError)

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>'

Run multiple commands

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?

Option to disable unit tests

Hi,

In most apps I develop I dont create unit tests. Can we add an option to not create the unit test target?

NoMethodError: undefined method 'choose' for XcodeprojHelper

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>'

Can't install properly

)-> 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

Read setup configuration from ~/.liftoffrc

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:

  1. ~/.liftoffrc
  2. $PWD/.liftoffrc
  3. Internal .liftoffrc

This way if you do want to configure a single project differently it can be done without changing your global config.

commit hook

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:

  1. allows us to see by looking through the git logs the issue a commit is related to.
  2. our repo parses the commit messages and links the commits back to the issue

I was wondering if you guys do this too, and also if you think it's a worth while feature to add?

Update xcodeproj

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

All warnings issue

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)>'

.xcasset has no rule to build warning

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.

Set Base SDK on project

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.

Rework the way we write the gitconfig

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.

Generate directory structure

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

Creating an identically named project in a directory throws an exception

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>'

OptionParser test stubs the System Under Test

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.

xcodeproj crash during project 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

Add negative flags

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.

Project file serialized as XML

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...

brew audit

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

liftoff into specified directory

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

Allow users to override/add templates

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.

Migrate installation to homebrew

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.

Improve release process

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:

  • Use vendorize script and setup.rb for setting the LOADPATH
  • Homebrew formula generation (Filling in the SHA and URL)
  • Checking out gh-pages as a sub-repo and adding the tarball
  • Checking out thoughtbot/homebrew-formulae as a sub-repo and adding the generated formula
  • Pushing sub repositories automatically

We 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

fail to install liftoff on Xcode 5.1 clean install

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

Remove special characters and spaces from Company Name

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, '-'?

Native extensions should be built on install

There are a couple of problems:

  1. The $LOAD_PATH additions in gems/setup.rb assume every gem only needs a lib directory. It can be fixed using gem.require_paths.
  2. The native extensions aren't vendorized or built on install. They should probably be built on install. Running ruby extconf.rb && make in each gem's ext directory as part of the default make target is probably a good start.

OTHER_LDFLAGS setting is overridden with a blank value

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.

Install error

brew install liftoff
Error: No available formula for xcproj

Liftoff crashes when there is only a test target

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>

Workspace Support

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

Changing Indentation level doesn't appear to work

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...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.