Titanium JIRA Archive
Titanium SDK/CLI (TIMOB)

[TIMOB-10772] CLI: "project" command

GitHub Issuen/a
TypeSub-task
PriorityHigh
StatusClosed
ResolutionFixed
Resolution Date2012-09-17T23:35:20.000+0000
Affected Version/sRelease 3.0.0
Fix Version/sRelease 3.0.0, Sprint 2012-19 JS, 2012 Sprint 19
ComponentsCLI
Labelsn/a
ReporterChris Barber
AssigneeChris Barber
Created2012-09-04T17:44:22.000+0000
Updated2017-03-08T00:40:10.000+0000

Description

A command that allows you to easily add and edit the tiapp.xml. The keys should be well defined (i.e. deployments, etc). NOTE: Not all tiapp.xml options should be exposed. Some keys must trigger an action such as when setting a deployment-target, we need to non-destructively (i.e. check destination does not already exist) copy that deployment-target's resources into the project's Resources dir. We need an optional --template option with a default value "default". This is only used when setting the "deployment-targets" so we know which files to copy. Model this command after the "config" command in the "titanium" repo. If --dir is not specified, set the dir to '.' and then check if dir is a Titanium project (i.e. contains a tiapp.xml). Validate everything: project dir, tiapp.xml exists, tiapp parses correctly, key name, template exists (only copy if exists), source files, destination dir, etc). This command will need to be done in the titanium_mobile/support/cli/commands/project.js file. Use the super neato tiapp.xml library in titanium-sdk:
// please remember to convert all indent spaces to tabs
var ti = require('titanium-sdk'),
    path = require('path');

exports.validate = function (logger, config, cli) {
    cli.argv.dir = ti.validateProjectDir(logger, cli.argv.dir);
};

exports.run = function (logger, config, cli) {
    var tiapp = new ti.tiappxml(path.join(cli.argv.dir, 'tiapp.xml'));
    // check cli.argv._ to see how many args are passed in. check config command for example.
    // if no args, show all keys.
    // if one arg, validate key name, then show just that one arg's value (no key, no quotes)
    // if two args, set the value, save the file, perform any special actions
};
Examples:

list all keys

> titanium project --dir /path/to/project id = "ti.testapp" name = "testapp" version = "1.0" publisher = "not specified" description = "not specified" sdk-version = "3.0.0" deployment-targets = "android,iphone,mobileweb"

get some values

> titanium project sdk-version --dir /path/to/project 3.0.0

set some values

> titanium project description "My first app" --dir /path/to/project Description saved > titanium project deployment-targets android,iphone,mobileweb --dir /path/to/project Deployment Targets saved

Comments

  1. Bryan Hughes 2012-09-15

    Pull Requests: https://github.com/appcelerator/titanium_mobile/pull/2977 https://github.com/appcelerator/node-appc/pull/2
  2. Lee Morris 2017-03-08

    Closing ticket as resolved.

JSON Source