{ "id": "171058", "key": "DAEMON-231", "fields": { "issuetype": { "id": "6", "description": "gh.issue.epic.desc", "name": "Epic", "subtask": false }, "project": { "id": "12519", "key": "DAEMON", "name": "Appcelerator Daemon" }, "fixVersions": [], "resolution": null, "resolutiondate": null, "created": "2018-02-07T18:11:31.000+0000", "priority": { "name": "Low", "id": "4" }, "labels": [], "versions": [], "issuelinks": [ { "id": "58170", "type": { "id": "10020", "name": "Depends", "inward": "is dependent of", "outward": "depends on" }, "outwardIssue": { "id": "154719", "key": "DAEMON-17", "fields": { "summary": "@appcd/plugin-titanium: Services for TiSDK specific tooling", "status": { "description": "The issue is open and ready for the assignee to start work on it.", "name": "Open", "id": "1", "statusCategory": { "id": 2, "key": "new", "colorName": "blue-gray", "name": "To Do" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "6", "description": "gh.issue.epic.desc", "name": "Epic", "subtask": false } } } }, { "id": "58168", "type": { "id": "10020", "name": "Depends", "inward": "is dependent of", "outward": "depends on" }, "outwardIssue": { "id": "170137", "key": "DAEMON-107", "fields": { "summary": "ioslib: Simulator and Device APIs", "status": { "description": "The issue is open and ready for the assignee to start work on it.", "name": "Open", "id": "1", "statusCategory": { "id": 2, "key": "new", "colorName": "blue-gray", "name": "To Do" } }, "priority": { "name": "Medium", "id": "3" }, "issuetype": { "id": "4", "description": "An improvement or enhancement to an existing feature or task.", "name": "Improvement", "subtask": false } } } }, { "id": "58169", "type": { "id": "10020", "name": "Depends", "inward": "is dependent of", "outward": "depends on" }, "outwardIssue": { "id": "170512", "key": "DAEMON-199", "fields": { "summary": "androidlib: Emulator and Device APIs", "status": { "description": "The issue is open and ready for the assignee to start work on it.", "name": "Open", "id": "1", "statusCategory": { "id": 2, "key": "new", "colorName": "blue-gray", "name": "To Do" } }, "priority": { "name": "Medium", "id": "3" }, "issuetype": { "id": "4", "description": "An improvement or enhancement to an existing feature or task.", "name": "Improvement", "subtask": false } } } }, { "id": "58197", "type": { "id": "10020", "name": "Depends", "inward": "is dependent of", "outward": "depends on" }, "inwardIssue": { "id": "154730", "key": "DAEMON-19", "fields": { "summary": "Alloy 1.next", "status": { "description": "The issue is open and ready for the assignee to start work on it.", "name": "Open", "id": "1", "statusCategory": { "id": 2, "key": "new", "colorName": "blue-gray", "name": "To Do" } }, "priority": { "name": "Low", "id": "4" }, "issuetype": { "id": "6", "description": "gh.issue.epic.desc", "name": "Epic", "subtask": false } } } }, { "id": "58186", "type": { "id": "10002", "name": "Duplicate", "inward": "is duplicated by", "outward": "duplicates" }, "inwardIssue": { "id": "170960", "key": "DAEMON-225", "fields": { "summary": "Daemon: Increase build speed", "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": "Medium", "id": "3" }, "issuetype": { "id": "6", "description": "gh.issue.epic.desc", "name": "Epic", "subtask": false } } } }, { "id": "58222", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "110264", "key": "TIMOB-12869", "fields": { "summary": "Ensure all AST modifications are pipelined resulting in a single source map file", "status": { "description": "The issue is open and ready for the assignee to start work on it.", "name": "Open", "id": "1", "statusCategory": { "id": 2, "key": "new", "colorName": "blue-gray", "name": "To Do" } }, "priority": { "name": "Low", "id": "4" }, "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } } }, { "id": "58223", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "78423", "key": "TIMOB-4821", "fields": { "summary": "Rebuild Titanium project when tiapp.xml file is edited", "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": "Medium", "id": "3" }, "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } } } ], "assignee": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "updated": "2020-02-13T17:59:10.000+0000", "status": { "description": "The issue is open and ready for the assignee to start work on it.", "name": "Open", "id": "1", "statusCategory": { "id": 2, "key": "new", "colorName": "blue-gray", "name": "To Do" } }, "components": [ { "id": "15060", "name": "appcd-plugin-titanium", "description": "Create and builds Titanium applications" } ], "description": "The current Titanium build process is duplicated for each target (iOS, Android, Windows). We need to unify this pipeline and allow hooks for platform specific logic to be executed. Things like reading the project file, compiling Alloy, transpiling source, optimizing images, encryption, etc are all common tasks that this pipeline must process.\r\n\r\nThe idea of the pipeline is implemented as a data structure. The Titanium SDK build then creates the pipeline instance and begins to process the files in the project directory.\r\n\r\nThe pipeline API will support things like adding a file, removing a file, assign metadata to a file (e.g. encrypted, minified, etc), and in some cases, the entire contents of the file. It will also need to support persisting the state to disk and \"diffing\" to see if the state of the pipeline has changed.\r\n\r\nThe idea is the pipeline is created, then the last build state is loaded into the pipeline and \"committed\" like a git commit. Then we walk the project directory finding files, processing them, and adding them to the pipeline. As the build progresses through the various stages, the state of the pipeline can be drastically changed such as when Alloy compiles views into .js files.\r\n\r\nAt the end of the build, it can see what changed and figure out what needs to be written to disk. In some cases it's copying a file. In others it's simply writing the new file contents (such as transpiled code) to disk.\r\n\r\nThe destination may not only be disk. It's possible with LiveView 2 that we ship the new files over the wire to the app or do something like TiShadow.", "attachment": [], "flagged": false, "summary": "@appcd/plugin-titanium: New Titanium Build Pipeline", "creator": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "subtasks": [], "reporter": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "environment": null, "comment": { "comments": [], "maxResults": 0, "total": 0, "startAt": 0 } } }