Titanium JIRA Archive
Titanium SDK/CLI (TIMOB)

[TIMOB-9037] CLI: Implement "export" command

GitHub Issuen/a
TypeNew Feature
PriorityMedium
StatusOpen
ResolutionUnresolved
Affected Version/sRelease 3.0.0
Fix Version/sn/a
ComponentsCLI
Labelscore, ft, ios7, notable, planning-3.3.0
ReporterChris Barber
AssigneeUnknown
Created2012-05-07T17:25:32.000+0000
Updated2018-02-28T20:03:41.000+0000

Description

Exports a project to a standalone project without any dependencies on Titanium. The arguments will be similar to the build command.

Comments

  1. Ingo Muschenetz 2014-11-12

    Current suggested requirements. Feedback appreciated: 1. Start with implementing for iOS (to replace transport.py), but then implement Android afterwards. 2. -Project exported would need to be able to be modified. Thus, you can edit the JavaScript or other assets.- 3. The resulting project _cannot_ be directly re-imported, so exporting is a one-way street. You could manually copy the modified files back into the original project. 4. The recipient _should_ not need to install any software or tooling to use the resulting project in Xcode. Transport.py appears to have copied the build process (Python files) into a single Python file. Since Python comes pre-installed on OS X, not an issue. Our current process involves Node. I don't believe we can ask recipients to install Node, so we'd need to do something in Python or Bash or ? 5. The Project should be able to run in development or production modes. This means allowing the user to switch the deploy type. This currently is baked into an Objective-C file. We could do this as #defines and allow the user to switch between those using pre-defined targets in Xcode. However, we already have 3 targets in a project (iPhone, iPad , universal). Do we create 9 total targets (3 flavors x 3 deploy types)?
  2. Alan Leard 2014-11-12

    I think this covers it as I have seen the requirements from customers.
  3. Chris Barber 2014-11-12

    Regarding #2, I think we should NOT allow this. If you want to edit JavaScript files, then you need the original project and Titanium. Once you export, you should not be able to edit the JavaScript, nor can you debug it. There's too much tooling that would need to be packaged up in order to be able to build an app. We'd basically need to ship Node.js, the iOS build script (with changes), titanium_prep, all of the modules, Node dependencies such as Uglify, etc. Rewriting the iOS build process in Python is a really, really bad idea.
  4. Alan Leard 2014-11-12

    The primary purpose of this is enterprises often have a build master that controls all of the builds that are submitted tot the app store. They usually do not have titanium, so the developer needs to be able to send them an Xcode project they can sign and distribute.
  5. Stephen Feather 2014-11-12

    {quote}2. Project exported would need to be able to be modified. Thus, you can edit the JavaScript or other assets.{quote} No, they don't need to be editing. Simply checking entitlements and signing.
  6. Rick Blalock 2014-11-12

    Yeh I don't see why editing needs to be a requirement. My only experience with transport.py is so someone else that doesn't have Titanium can package and distribute.
  7. Ingo Muschenetz 2014-11-12

    Okay, removed item #2. Two questions: 1) When we discussed this feature, _another_ goal was to replace scripts like: https://github.com/billdawson/tidevtools/blob/master/ti_eclipsify.py. The issue being that internal developers needed to export the project to open it up in ADT. In this case, It's not clear to me if they need to edit JavaScript. 2) Deployment type. When we export the project--we have two choices: 2a) Do we export it for a specific deployment type, i.e. development (no encryption), test, or production (encryption) 2b) Or we export it encrypted (production) and allow the user to choose a deployment type via Xcode targets (or editing an Objective C file) 2c) Or something else?
  8. Ingo Muschenetz 2015-03-13

    We've decided that the concept of export will need to change based on the new platform structure. Closing this valiant PR, and we will revisit this in a subsequent reincarnation.

JSON Source