{ "id": "89791", "key": "TIMOB-8653", "fields": { "issuetype": { "id": "5", "description": "The sub-task of the issue", "name": "Sub-task", "subtask": true }, "parent": { "id": "89765", "key": "TIMOB-8652", "fields": { "summary": "Core: Create a new Titanium Command Line Interface", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "6", "description": "gh.issue.epic.desc", "name": "Epic", "subtask": false } } }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2012-05-08T10:29:43.000+0000", "created": "2012-04-10T14:10:10.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [ "core", "look1" ], "versions": [ { "id": "13271", "description": "Release 2.1.0", "name": "Release 2.1.0", "archived": false, "released": true, "releaseDate": "2012-06-29" } ], "issuelinks": [], "assignee": { "name": "billdawson", "key": "billdawson", "displayName": "Bill Dawson", "active": true, "timeZone": "Europe/Berlin" }, "updated": "2017-03-16T22:06:13.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10207", "name": "Tooling" } ], "description": "This task comprises a few high level tasks:\r\n* The SDK should live as it's own standalone component, with it's own git repository\r\n* The SDK and Platform should be able to have their own release cycles, and the SDK should be able to work with multiple versions of the Platform", "attachment": [], "flagged": false, "summary": "Tooling: Separate SDK from the Platform", "creator": { "name": "mculpepper", "key": "mculpepper", "displayName": "Marshall Culpepper", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "mculpepper", "key": "mculpepper", "displayName": "Marshall Culpepper", "active": true, "timeZone": "America/Los_Angeles" }, "environment": null, "closedSprints": [ { "id": 3, "state": "closed", "name": "Release 3.0.0", "startDate": "2012-09-27T05:26:46.636Z", "endDate": "2012-10-08T20:05:00.000Z", "completeDate": "2012-12-20T17:03:19.403Z" } ], "comment": { "comments": [ { "id": "193264", "author": { "name": "billdawson", "key": "billdawson", "displayName": "Bill Dawson", "active": true, "timeZone": "Europe/Berlin" }, "body": "The titanium_mobile PR is:\r\n\r\nhttps://github.com/appcelerator/titanium_mobile/pull/2111\r\n\r\nThe PR for the new repository (titanium_mobile_tooling) is:\r\n\r\nhttps://github.com/appcelerator/titanium_mobile_tooling/pull/1\r\n\r\nSome prelim notes:\r\n\r\n* You can't use Titanium Studio for testing, which is why the testing notes have the commands spelled out for you. (This is good, since you're anyway meant to test the commands, and it's easier to see output/errors from Terminal.)\r\n\r\n* We should have one person test for Android, one for iPhone, one for MobileWeb.\r\n\r\nh2. Testing Instructions\r\n\r\nh3. Builds\r\n\r\nh4. Build/Release titanium_mobile\r\n\r\n* With the new branch, run {{scons}}. There should be no errors, and the ZIP file should appear under {{dist/}}.\r\n\r\n* \"Release\" this new build however you normally do that on your dev machine, i.e., unzip the zip somewhere.\r\n\r\nh4. Build/Release titanium_mobile_tooling.\r\n\r\n* Run ./build.py. There should be no errors and the file {{dist/mobiletools-osx-2.1.0.zip}} should appear.\r\n\r\n* Release this zip such that the path {{mobiletools/osx/2.1.0}} lives side-by-side with {{mobilesdk/osx/2.1.0}}. The point is, these two components -- the SDK and the Tooling -- are siblings in the {{Titanium/}} hierarchy. If you, like many of us devs, use symbolic links for your dev versions of the sdk, you can now do something similar with the tooling as well. For example, my {{/Library/Application Support/Titanium/mobilesdk/osx/DEV_2.1.X}} points to {{/Users/bill/src/titanium_mobile/dist/mobilesdk/osx/2.1.0}} and my {{/Library/Application Support/Titanium/mobiletools/osx/DEV_2.1.X}}. In summary, do it however you wish, but these two components should somehow be siblings.\r\n\r\nh3. Create projects\r\n\r\nh4. Create an iPhone project.\r\n\r\n* In Terminal, use the tooling's {{project.py}} to create an iphone-only project. Example:\r\n\r\n{code}\r\npython \"/Library/Application Support/Titanium/mobiletools/osx/DEV_2.1.X/scripts/common/project.py\" \"JustIPhone\" \"com.billdawson.justiphone\" \"/Users/bill/projects/ti\" \"/Library/Application Support/Titanium/mobilesdk/osx/DEV_2.1.X\" \"iphone\"\r\n{code}\r\n\r\n* Note that the second-to-last argument is the path to the _mobile sdk_.\r\n\r\n* The project should be created without error.\r\n\r\nh4. Create an Android project.\r\n\r\n* In Terminal, use the tooling's {{project.py}} to create an android-only project. Example:\r\n\r\n{code}\r\npython \"/Library/Application Support/Titanium/mobiletools/osx/DEV_2.1.X/scripts/common/project.py\" \"JustAndroid\" \"com.billdawson.justandroid\" \"/Users/bill/projects/ti\" \"/Library/Application Support/Titanium/mobilesdk/osx/DEV_2.1.X\" \"android\" \"/Users/bill/android/android-sdk-macosx\"\r\n{code}\r\n\r\n* Note that the second-to-last argument is the path to the _mobile sdk_.\r\n\r\n* Note that the last argument is the path to the _android sdk_.\r\n\r\n* The project should be created without error.\r\n\r\nh4. Create a MobileWeb project.\r\n\r\n* In Terminal, use the tooling's {{project.py}} to create a mobileweb-only project. Example:\r\n\r\n{code}\r\npython \"/Library/Application Support/Titanium/mobiletools/osx/DEV_2.1.X/scripts/common/project.py\" \"JustMobileWeb\" \"com.billdawson.justmobileweb\" \"/Users/bill/projects/ti\" \"/Library/Application Support/Titanium/mobilesdk/osx/DEV_2.1.X\" \"mobileweb\"\r\n{code}\r\n\r\n* Note that the second-to-last argument is the path to the _mobile sdk_.\r\n\r\n* The project should be created without error.\r\n\r\nh4. Create a project for all three platforms.\r\n\r\n* In Terminal, use the tooling's {{project.py}} to create a project for three platforms. Example:\r\n\r\n{code}\r\npython \"/Library/Application Support/Titanium/mobiletools/osx/DEV_2.1.X/scripts/common/project.py\" \"AllPlatforms\" \"com.billdawson.allplatforms\" \"/Users/bill/projects/ti\" \"/Library/Application Support/Titanium/mobilesdk/osx/DEV_2.1.X\" \"android\" \"mobileweb\" \"iphone\"\r\n{code}\r\n\r\n* The project should be created without error.\r\n\r\nh3. Running projects\r\n\r\nh4. Run the iPhone project to simulator.\r\n\r\n* Use iPhone's builder.py to build and run the project on simulator. Example:\r\n\r\n{code}\r\npython \"/Library/Application Support/Titanium/mobiletools/osx/DEV_2.1.X/scripts/iphone/builder.py\" \"simulator\" \"5.1\" \"/Users/bill/projects/ti/JustIPhone\" \"com.billdawson.justiphone\" \"JustIPhone\" \"universal\" \"iphone\"\r\n{code}\r\n\r\n* The project should build without error, then open in the iPhone simulator. Note that sometimes first launch will timeout... this is the case with current tooling as well.\r\n\r\nh4. Run the Android project to emulator.\r\n\r\n* Use Android's builder.py to both launch the emulator and release a project to emulator. (You need two Terminal windows for this!)\r\n\r\n* In the first terminal window, use builder.py to launch the emulator. Example:\r\n\r\n{code}\r\npython \"/Library/Application Support/Titanium/mobiletools/osx/DEV_2.1.X/scripts/android/builder.py\" emulator JustAndroid /Users/bill/android/android-sdk-macosx /Users/bill/projects/ti/JustAndroid com.billdawson.justandroid \"5\" WVGA854\r\n{code}\r\n\r\n* After the emulator has launched (and you can see it with {adb devices}), build and launch the android project into it using builder.py in a *second Terminal window*. Example:\r\n\r\n{code}\r\npython \"/Library/Application Support/Titanium/mobiletools/osx/DEV_2.1.X/scripts/android/builder.py\" simulator JustAndroid /Users/bill/android/android-sdk-macosx /Users/bill/projects/ti/JustAndroid com.billdawson.justandroid \"5\" WVGA854\r\n{code}\r\n\r\n* The project should build without error and launch in the emulator.\r\n\r\nh4. Build the MobileWeb project and view in browser.\r\n\r\n* Use mobileweb's builder.py to build the project. Example:\r\n\r\n{code}\r\npython \"/Library/Application Support/Titanium/mobiletools/osx/DEV_2.1.X/scripts/mobileweb/builder.py\" \"/Users/bill/projects/ti/JustMobileWeb\" \"development\"\r\n{code}\r\n\r\n* Open the resulting index.html in your browser. Example:\r\n\r\n{code}\r\nopen /Users/bill/projects/ti/JustMobileWeb/build/mobileweb/index.html\r\n{code}\r\n\r\nh3. Test titanium.py\r\n\r\nh4. Help\r\n\r\n* Make sure the {help} command works without error. Example:\r\n\r\n{code}\r\npython \"/Library/Application Support/Titanium/mobiletools/osx/DEV_2.1.X/titanium.py\" help\r\n{code}\r\n\r\nh4. Create an application project\r\n\r\n* Use titanium.py to create a new application project. Example:\r\n\r\n{code}\r\npython \"/Library/Application Support/Titanium/mobiletools/osx/DEV_2.1.X/titanium.py\" create --type=project --name=NewProject --id=ti.newproject --dir=/Users/bill/projects/ti --platform=android,mobileweb,iphone\r\n{code}\r\n\r\n* There should be no errors, and you should see three messages saying {{Created ____ application project}}.\r\n\r\nh4. Create an iPhone module project.\r\n\r\n* Use titanium.py to create a new iphone module project. Example:\r\n\r\n{code}\r\npython \"/Library/Application Support/Titanium/mobiletools/osx/DEV_2.1.X/titanium.py\" create --type=module --name=iphonemod --id=ti.iphonemod --dir=/Users/bill/projects/ti/modules --platform=iphone\r\n{code}\r\n\r\n* You should get no errors and you should see a message that it was created.\r\n\r\n* Test the module by going into its folder and running {{build.py}}. Example:\r\n\r\n{code}\r\n$ cd /Users/bill/projects/ti/modules/iphonemod\r\n$ ./build.py\r\n{code}\r\n\r\n* There should be no errors.\r\n\r\nh4. Create an Android module project\r\n\r\n* Use titanium.py to create a new android module project. Example:\r\n\r\n{code}\r\npython \"/Library/Application Support/Titanium/mobiletools/osx/DEV_2.1.X/titanium.py\" create --type=module --name=androidmod --id=ti.anroidmod --dir=/Users/bill/projects/ti/modules --platform=android\r\n{code}\r\n\r\n* You should get no errors and you should see a message that it was created.\r\n\r\n* Test the module by going into its folder and running {{ant}}. Example:\r\n\r\n{code}\r\n$ cd /Users/bill/projects/ti/modules/androidmod\r\n$ ant\r\n{code}\r\n\r\n* There should be no errors.\r\n\r\nh4. Create a Plugin project.\r\n\r\n* Use titanium.py to create a new plugin project. Example:\r\n\r\n{code}\r\npython \"/Library/Application Support/Titanium/mobiletools/osx/DEV_2.1.X/titanium.py\" create --type=plugin --name=myplugin --id=myplugin --dir=/Users/bill/projects/ti/plugins\r\n{code}\r\n\r\n* You should get no errors and you should see a message that it was created.\r\n\r\n* Test the plugin by going into its folder and running {{./build.py}}. Example:\r\n\r\n{code}\r\n$ cd /Users/bill/projects/ti/plugins/myplugin\r\n$ ./build.py\r\n{code}\r\n\r\n* There should be no errors.\r\n\r\nh4. Run the other titanium.py commands\r\n\r\nI'm too tired to type them all. :) Run \"help\" again to see the commands, then test the ones you want too. :)", "updateAuthor": { "name": "billdawson", "key": "billdawson", "displayName": "Bill Dawson", "active": true, "timeZone": "Europe/Berlin" }, "created": "2012-05-01T03:41:28.000+0000", "updated": "2012-05-01T12:20:19.000+0000" }, { "id": "194115", "author": { "name": "billdawson", "key": "billdawson", "displayName": "Bill Dawson", "active": true, "timeZone": "Europe/Berlin" }, "body": "Marking as Invalid since we're going to toss this out. Want to make sure QE doesn't take the time to test it.", "updateAuthor": { "name": "billdawson", "key": "billdawson", "displayName": "Bill Dawson", "active": true, "timeZone": "Europe/Berlin" }, "created": "2012-05-08T10:26:31.000+0000", "updated": "2012-05-08T10:26:31.000+0000" }, { "id": "194116", "author": { "name": "ngupta", "key": "ngupta", "displayName": "Neeraj Gupta", "active": true, "timeZone": "America/Los_Angeles" }, "body": "This is not really invalid. We need to combine the repository separation with the new node.js based CLI and tooling so this is definitely needed. We are just not going to release it to the public until CLI project is ready to be released.", "updateAuthor": { "name": "ngupta", "key": "ngupta", "displayName": "Neeraj Gupta", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-05-08T10:29:17.000+0000", "updated": "2012-05-08T10:29:17.000+0000" }, { "id": "194158", "author": { "name": "billdawson", "key": "billdawson", "displayName": "Bill Dawson", "active": true, "timeZone": "Europe/Berlin" }, "body": "Right. But I think maybe in this case it's better to close this one and rely on another ticket. The testing notes might not be applicable, and the Git Commits history is enormous with changes that are not applicable any more.\r\n\r\nAlthough if we delete the git branches in the repositories, it could be that the git history goes away here too. I'm not sure how this work.\r\n\r\nAnyway I'll just leave it like this for now. :)", "updateAuthor": { "name": "billdawson", "key": "billdawson", "displayName": "Bill Dawson", "active": true, "timeZone": "Europe/Berlin" }, "created": "2012-05-08T12:47:06.000+0000", "updated": "2012-05-08T12:47:06.000+0000" }, { "id": "413268", "author": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Closing ticket as fixed.", "updateAuthor": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2017-03-16T22:06:13.000+0000", "updated": "2017-03-16T22:06:13.000+0000" } ], "maxResults": 5, "total": 5, "startAt": 0 } } }