SlideShare une entreprise Scribd logo
1  sur  41
Exploring The New Titanium
 Command Line Interface

          Chris Barber
           Sr. Platform Lead
             Appcelerator
              @cb1kenobi
       cbarber@appcelerator.com
Meet Chris

         • Chris Barber
         • JavaScript Team Lead
         • Mobile Web, CLI
         • @cb1kenobi
Why Create a New CLI?
Titanium 2.X CLI

         • Python 2.7
         • Inconsistent
         • Poorly documented
         • Difficult to use
         • Even more difficult to maintain
Project Creation

        chris@yojimbo:~$ python /Users/chris/Library/Application
        Support/Titanium/mobilesdk/osx/2.1.3.GA/project.py


        Usage:
        project.py <name> <id> <directory> [iphone,android,mobileweb] [android_sdk] [--update-platforms]


        Options:
         -h, --help        show this help message and exit
         -u, --update-platforms
                       Initialize project for any missing platforms. Use this
                       to add a platform to the project without overwriting
                       tiapp.xml and app.js.




        chris@yojimbo:~$ python /Users/chris/Library/Application
        Support/Titanium/mobilesdk/osx/2.1.3.GA/project.py myapp com.mycompany.myapp . foo
Build iOS App

       chris@yojimbo:~$ python /Users/chris/Library/Application
       Support/Titanium/mobilesdk/osx/2.1.3.GA/iphone/builder.py




       builder.py <command> <version> <project_dir> <appid> <name> [options]

       available commands:

        install   install the app to itunes for testing on iphone
        simulator build and run on the iphone simulator
        adhoc       build for adhoc distribution
        distribute build final distribution bundle
        xcode      build from within xcode
        run       build and run app from project folder
Build iOS App

       chris@yojimbo:~$ python /Users/chris/Library/Application
       Support/Titanium/mobilesdk/osx/2.1.3.GA/iphone/builder.py simulator



       [INFO] One moment, building ...
       Traceback (most recent call last):
         File "/Users/chris/Library/Application
       Support/Titanium/mobilesdk/osx/2.1.3.GA/iphone/builder.py", line 1594, in <module>
          main(sys.argv)
         File "/Users/chris/Library/Application
       Support/Titanium/mobilesdk/osx/2.1.3.GA/iphone/builder.py", line 608, in main
          iphone_version = dequote(args[2].decode("utf-8"))
       IndexError: list index out of range



       builder.py simulator <ios-version> <project-dir> <id> <name> [<device-family> [<sim-type>
       [<debug-host>]]]
OK, We Need A New CLI
Building a New CLI

         • Python 3? Node.js? Ruby? Java+Rhino?
         • How comfortable are we with these
           technologies?
         • Compatible license?
         • What libraries are available?
            • XML/JSON parsing
            • Code minification
            • Image resizing
Appc   Node.js

         • JavaScript!
         • MIT License
         • Small size
         • No native dependencies
         • Package manager (npm)
         • Tons of great community modules
Getting Started
Installing the Titanium CLI
First Things First

          • Node.js
             • 0.8 or newer
          • NPM
Installation




               npm install -g titanium

                             Note: may need to run as npm sudo
Touring the CLI
Built-in Commands
Running The CLI

       chris@yojimbo:~$ titanium
       Titanium Command-Line Interface, version 3.0.10
       Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved.

       Usage: titanium <command> [options]

       Commands:
        config get and set config options
        help displays this help screen
        info display development environment information
        login logs into the Appcelerator network
        logout logs out of the Appcelerator network
        module manages installed Titanium Modules
        plugin manages installed Titanium Plugins
        sdk    manages installed Titanium SDKs
        setup run the setup wizard
        status displays session information

       Global Flags:
        --banner, --no-banner displays Titanium version banner [default: true]
        --colors, --no-colors use colors in the terminal [default: true]
        -h, --help        displays help
        --prompt, --no-prompt prompt for missing options [default: true]
        -q, --quiet        suppress all output
        -v, --version       displays the current version
Help!
titanium <cmd> -h       chris@yojimbo:~$ titanium help config
                        Titanium Command-Line Interface, version 3.0.10
titanium <cmd> --help   Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved.
titanium help <cmd>
                        Usage: titanium config [--remove] [--output <value>] [<key>] [<value>]

                        Gets and sets config options. If no key is specified, then all key/values are
                        returned.

                        The config file is located at: /Users/chris/.titanium/config.json

                        Config Arguments:
                         <key> the key to get or set
                         <value> the value to set the specified key

                        Config Flags:
                         -r, --remove remove the specified config key and all its descendants

                        Config Options:
                         -o, --output <value> output format [report, json]

                        Global Flags:
                         --banner, --no-banner displays Titanium version banner [default: true]
                         --colors, --no-colors use colors in the terminal [default: true]
                         -h, --help        displays help
                         --prompt, --no-prompt prompt for missing options [default: true]
                         -q, --quiet        suppress all output
                         -v, --version       displays the current version
Setup Wizard
Basic Setup
titanium setup

Advanced Setup
                        • Initializes the CLI configuration
titanium setup -a



                    chris@yojimbo:~$ titanium setup
                    Titanium Command-Line Interface, version 3.0.10
                    Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved.

                    Enter ctrl-c at any time to quit

                    What is your name? (this is used as the default for the "author" field in the tiapp.xml or module
                    manifest file when creating new projects) (Chris Barber)
                    What is your email address used for logging into the Appcelerator Network? (cbarber@appcelerator.com)
                    What would you like as your default locale? (examples: "en", "de", "fr") (en-us)
                    What Titanium SDK would you like to use by default? (2.1.3.GA)
                    Path to your workspace where your projects should be created: (~/appc/workspace)
                    Path to the Android SDK: (this is needed for building Android apps)

                    Configuration saved
Manual Configuration
Get All Values
titanium config

Get All User.*
                          • Get and set config settings
Settings
titanium config user
                       chris@yojimbo:~$ titanium config
Set Android SDK Path
titanium config        android.ndkPath       = "/opt/android-ndk"
  android.sdkPath      android.sdkPath       = ""
  “/path/to/sdk”       app.idprefix       = "com.appcelerator"
                       app.publisher       = "Appcelerator"
                       app.sdk          = "2.1.3.GA"
                       app.url         = ""
                       app.workspace         = "~/appc/workspace"
                       cli.colors       = true
                       cli.failOnWrongSDK = false
                       cli.logLevel      = "trace"
                       cli.prompt        = true
                       cli.quiet       = false
                       ios.developerName = "Chris Barber"
                       ios.distributionName = "Appcelerator, Inc."
                       paths.commands          = []
                       paths.hooks         = []
                       paths.plugins       = ["~/appc/ti.alloy"]
                       user.email        = "cbarber@appcelerator.com"
                       user.locale       = "en-us"
                       user.name          = "Chris Barber"
Authentication
Logging In        chris@yojimbo:~$ titanium login
titanium login    Titanium Command-Line Interface, version 3.0.10
  <username>
                  Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved.
Am I Logged In?
titanium status   Username: (cbarber@appcelerator.com)
                  Password:
Logging out
titanium logout   Logged in successfully

                  chris@yojimbo:~$ titanium status
                  Titanium Command-Line Interface, version 3.0.10
                  Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved.

                  You are currently logged in as cbarber@appcelerator.com

                  chris@yojimbo:~$ titanium logout
                  Titanium Command-Line Interface, version 3.0.10
                  Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved.

                  Logged out successfully

                      • Required for most commands
                      • Adds your app to my.appcelerator.com
                      • Username is your e-mail address
System Info
                        chris@yojimbo:~$ titanium info
Includes:               Titanium Command-Line Interface, version 3.0.10

• OS info
                        Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved.

                        Operating System
• node.js & npm          Name
                         Version
                                                         = Mac OS X
                                                         = 10.8.2
• Xcode versions         Memory                           = 16.0GB


• iOS SDKs &            node.js
                         node.js Version                    = v0.8.12
                         npm Version                        = 1.1.63
  simulators
• iOS provisioning
                        Xcode
                        4.4.1 (build 4F1003)
                         Install Location                   = /Applications/Xcode44.app/Contents/Developer
  profiles &             iOS SDKs
                         iOS Simulators
                                                           = 5.1
                                                             = 5.0, 5.1
  keychains             4.5 (build 4G182)
                         Install Location                   = /Applications/Xcode45.app/Contents/Developer
• Titanium SDKs          iOS SDKs
                         iOS Simulators
                                                           = 6.0
                                                             = 5.0, 5.1, 6.0

• Android SDKs,         iOS Certificates
                         Development                        = Chris Barber (XXXXXXXXXX)
  addons, and AVDs       Distribution                     = Appcelerator, Inc.
                         Apple WWDR                          = installed

                        Development iOS Provisioning Profiles
Get All Info            My Provisioning Profile
                         UUID                         = XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
titanium info            App Prefix
                         App Id
                                                        = XXXXXXXXXX
                                                      = com.appcelerator.*

                        iOS Keychains
                         System Default                     = System Default
OS Info Only             login.keychain                    = /Users/chris/Library/Keychains/login.keychain
                         Microsoft_Intermediate_Certificates        = /Users/chris/Library/Keychains/Microsoft_Intermediate_Certificates
titanium info -t os      System.keychain                     = /Library/Keychains/System.keychain

                        Titanium SDKs
                        2.1.3.GA
iOS Info Only            Install Location
                         Platforms
                                                           = /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/2.1.3.GA
                                                          = android, iphone, mobileweb
                         git Hash                        = unknown
titanium info -t ios     git Timestamp                      = unknown

                        Android Platforms
                        android-8
Android & Node.js        Name
                         API Level
                                                         = Android 2.2
                                                          =8
Info Only                Revision
                         Skins
                                                          =3
                                                        = HVGA, QVGA, WQVGA400, WQVGA432, WVGA800 (default), WVGA854
titanium info -t         ABIs
                         Path
                                                        = armeabi
                                                        = /opt/android-sdk/platforms/android-8

android,nodejs          Android Add-ons
                        Google Inc.:Google APIs:8
                         Name                            = Google APIs
                         Vendor                          = Google Inc.
Output as JSON           Revision
                         Description
                                                          =2
                                                           = Android + Google APIs
titanium info -o json    Skins
                         ABIs
                                                        = WVGA854, WQVGA400, HVGA, WQVGA432, WVGA800 (default), QVGA
                                                        = armeabi
                         Path                           = /opt/android-sdk/add-ons/addon-google_apis-google-10
                         Based On                          = Android 2.2 (API level 8)
                         Libraries                       = com.google.android.maps: API for Google Maps (maps.jar)
Modules & Plugins
Get Installed Modules   chris@yojimbo:~$ titanium module
titanium module
                        Titanium Command-Line Interface, version 3.0.10
                        Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved.
Get Installed Modules
Including a Project
titanium module         Global Modules
  –project-dir
  /path/to/project      Android
                         ti.cloudpush
                           2.0.7 /Users/chris/Library/Application Support/Titanium/modules/android/ti.cloudpush/2.0.7

                        CommonJS
                         ti.cloud
                        commonjs/ti.cloud/2.2.0
                           2.3.0 /Users/chris/Library/Application Support/Titanium/modules/commonjs/ti.cloud/2.3.0
                           2.0.5 /Library/Application Support/Titanium/modules/commonjs/ti.cloud/2.0.5

                        iPhone
                         ti.jira
                           1.0 /Users/chris/Library/Application Support/Titanium/modules/iphone/ti.jira/1.0

                        Mobile Web
                         ti.oldmodule
                           0.1 /Users/chris/Library/Application Support/Titanium/modules/mobileweb/ti.oldmodule/0.1
Modules & Plugins
Get Installed Plugins
titanium plugin

Output as JSON
titanium plugin         chris@yojimbo:~$ titanium plugin
  -o json               Titanium Command-Line Interface, version 3.0.10
                        Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved.

                        User Path Plugins

                        No project plugins found

                        Global Plugins

                        another_plugin
                         1.0 /Users/chris/Library/Application Support/Titanium/plugins/another_plugin/1.0

                        test_plugin
                         1.0 /Users/chris/Library/Application Support/Titanium/plugins/test_plugin/1.0

                        ti.alloy
                          1.0 /Users/chris/Library/Application Support/Titanium/plugins/ti.alloy/1.0
Wait a sec…
Where’s the create and build commands?
Downloading An SDK
List Intalled SDKs        chris@yojimbo:~$ titanium sdk
titanium sdk              Titanium Command-Line Interface, version 3.0.10
                          Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved.
Install Latest 3.0
titanium sdk install
  --branch 3_0_X          Installed SDKs:
  --default                 2.1.3.GA [default] /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/2.1.3.GA
                            2.1.2.GA       /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/2.1.2.GA
Install Latest Stable       2.1.0.GA       /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/2.1.0.GA
titanium sdk install        2.0.2.GA       /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/2.0.2.GA

Install Latest Stable &
Set as Default SDK
titanium sdk install
  --default

Install Bleeding Edge     chris@yojimbo:~$ titanium sdk install --branch 3_0_X --default
titanium sdk install
                          Titanium Command-Line Interface, version 3.0.10
  --branch master
                          Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved.

                          Downloading http://builds.appcelerator.com.s3.amazonaws.com/mobile/3_0_X/mobilesdk-
                          3.0.0.v20121018214614-osx.zip
                           100% [=================================================================] 0.0s

                          Extracting SDK...

                          Saving SDK 3.0.0.v20121018214614 as the default.
                          Titanium SDK 3.0.0.v20121018214614 successfully installed!
New Commands!

      chris@yojimbo:~$ titanium
      Titanium Command-Line Interface, version 3.0.10
      Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved.

      Usage: titanium <command> [options]

      Commands:
       build builds a project
       clean removes previous build directories
       config get and set config options
       create creates a new mobile application or module
       help   displays this help screen
       info   display development environment information
       login logs into the Appcelerator network
       logout logs out of the Appcelerator network
       module manages installed Titanium Modules
       plugin manages installed Titanium Plugins
       project get and set tiapp.xml settings
       sdk    manages installed Titanium SDKs
       setup run the setup wizard
       status displays session information

      Global Flags:
       --banner, --no-banner displays Titanium version banner [default: true]
       --colors, --no-colors use colors in the terminal [default: true]
       -h, --help        displays help
       --prompt, --no-prompt prompt for missing options [default: true]
       -q, --quiet       suppress all output
       -v, --version      displays the current version
SDK Commands
create, project, build, clean
Creating a Project
Create a Project        chris@yojimbo:~$ titanium create
titanium create         Titanium Command-Line Interface, version 3.0.10
                        Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved.
Create Project With
All Arguments
titanium sdk create     Target platforms: (android,ios,ipad,iphone,mobileweb)
  --id com.appc.myapp   App ID: com.appcelerator.myapp
  --name myapp          Project name: myapp
  --platforms
android,iphone,ipad,    [INFO] Creating Titanium Mobile application project
mobileweb               [DEBUG] Copying /Users/chris/Library/Application
  --workspace-dir       Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default =>
  /path/to/workspace    /Users/chris/myapp
                        [DEBUG] Copying /Users/chris/Library/Application
                        Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default/Resources
                        => /Users/chris/myapp/Resources
                        [DEBUG] Copying /Users/chris/Library/Application
                        Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default/Resources/a
                        ndroid => /Users/chris/myapp/Resources/android
                        [DEBUG] Copying /Users/chris/Library/Application
                        Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default/Resources/a
                        ndroid/images => /Users/chris/myapp/Resources/android/images
                        [DEBUG] Copying /Users/chris/Library/Application
                        Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default/Resources/a
                        ndroid/images/res-notlong-port-mdpi => /Users/chris/myapp/Resources/android/images/res-
                        notlong-port-mdpi
                        [INFO] Project 'myapp' created successfully in 32ms
Getting Project Info
Basic Info
titanium project

Copy Platform
                             • Tool for interacting with the tiapp.xml
Resource Files
titanium project          chris@yojimbo:~/myapp$ titanium project
  --deployment-targets
                          Titanium Command-Line Interface, version 3.0.10
  android,ios,mobileweb
                          Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved.

                          Deployment Targets:
                           android = true
                           ipad   = false
                           iphone = true
                           mobileweb = true

                          Project Properties:
                           sdk-version = 3.0.0
                           id      = com.appcelerator.myapp
                           name      = myapp
                           version = 1.0
                           publisher = not specified
                           url     = not specified
                           description = not specified
                           copyright = not specified
                           icon     = appicon.png
                           analytics = true
                           guid     = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Building a Project
Platforms:            chris@yojimbo:~/myapp$ titanium build --platform ios
• iOS                 Titanium Command-Line Interface, version 3.0.10
• Mobile Web          Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved.
• Android             [DEBUG] No project level plugins to load
                      [DEBUG] Loaded plugin hooks:
Special Hooks:        [DEBUG] /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.1.0/cli/hooks/plugins.js
• Run in Simulator    [DEBUG] /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.1.0/iphone/cli/hooks/install.js
• Install on Device   [DEBUG] /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.1.0/iphone/cli/hooks/package.js
                      [DEBUG] /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.1.0/iphone/cli/hooks/run.js
• Package for         [INFO] Build type: development
  Distribution        [DEBUG] Titanium iOS SDK directory: /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.1.0/iphone
                      [INFO] Building for target: simulator
                      [INFO] Building using iOS SDK: 6.0
                      [INFO] Building for iOS Simulator: 6.0
                      [INFO] Building for device family: universal
                      [DEBUG] Setting Xcode target to Debug
                      [DEBUG] Setting Xcode build OS to iphonesimulator6.0
                      [DEBUG] Xcode installation: /Applications/Xcode45.app/Contents/Developer
                      [DEBUG] iOS WWDR certificate: installed
                      [INFO] Building for iOS 6.0; using 4.3 as minimum iOS version
                      [DEBUG] Minimum iOS version: 4.3
                      [INFO] Debugging disabled
                      [DEBUG] Building for the following architectures: armv7 armv7s i386
                      [DEBUG] Forcing rebuild: githash changed since last build
                      [DEBUG] Was: a50c927
                      [DEBUG] Now: ab2b280
                      [INFO] Cleaning old build directory
                      [DEBUG] Would be firing "compile" legacy plugin hook if it was supported
                      [INFO] Building Info.plist
                      [INFO] No Titanium Modules required, continuing
                      [INFO] Performing full rebuild
                      [INFO] Copying Xcode iOS files

                      ...
Cleaning the Project
Nuke All Platform
Build Directories
titanium clean
                          • Completely removes the platform specific build
Nuke a Specific
Platform’s Build            directories
Directory
titanium clean
  –platform android




                      chris@yojimbo:~/myapp$ titanium clean
                      Titanium Command-Line Interface, version 3.0.10
                      Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved.

                      [INFO] Project cleaned successfully in 1ms
Extending the CLI
Plugins, commands, and hooks
Plugins

          • Similar to Titanium Modules
          • Legacy plugin.py not supported today
          • CLI commands & hooks
          • Installed globally or in project directory
          • Enabled via the tiapp.xml <plugins>
Sample Command
myplugin/1.0/cli/com   exports.cliVersion = '>=3.X';
mands/magic.js         exports.desc = 'does magical things’;

                       exports.config = function (logger, config, cli) {
                          return {
                             flags: {
                                extra: {
                                  abbr: 'e',
                                  desc: 'adds more magic’
                                }
                             }
                          };
                       };

                       exports.validate = function (logger, config, cli) {
                          // nothing to validate
                       };

                       exports.run = function (logger, config, cli) {
                         var s = 'doing magical stuff!';

                            if (cli.argv.extra) {
                                s = s.replace(/./g, function (c, i) {
                                    return i % 2 == 0 ? c.toUpperCase() : c.toLowerCase();
                                });
                            }

                            logger.log(s);
                       };
Sample Hook
myplugin/1.0/cli/hook
s/my_build_hook.js



                        exports.cliVersion = '>=3.X';

                        exports.init = function (logger, config, cli) {
                          cli.addHook('build.pre.compile', function (data, finished) {
                              logger.log('modifying some code before build starts');
                              finished();
                          });

                             cli.addHook('build.post.compile', {
                                 priority: 900,
                                 post: function (data, finished) {
                                   logger.log('packaging some extra files after the build');
                                   finished();
                                 }
                             });

                             cli.addHook('build.finalize', function (data, finished) {
                                 logger.log('cleaning up my mess');
                                 finished();
                             });
                        };
Demo
Kick the tires & light the fires
What’s Next?
// TODO:

           • More plugin hooks
              • Project creation, chaging project settings, etc
           • Project exporting & migration tools
           • Better support for multiple Titanium SDKs




           • What would you like to see?
Summary
Just in case you were sleeping
The New CLI Rocks

        • Easy to install, easy to use
        • Fast as shit
        • Built-in documentation
        • Extensible plugin architecture
        • Consistent arguments
        • Argument prompting
        • Internationalization
        • Colors!
Get It Today!




         npm install -g titanium
         titanium sdk install --branch 3_0_X --default

                                                 Note: may need to run npm as sudo
Chris Barber
       @cb1kenobi
cbarber@appcelerator.com

Contenu connexe

Tendances

Nodejs Explained with Examples
Nodejs Explained with ExamplesNodejs Explained with Examples
Nodejs Explained with ExamplesGabriele Lana
 
Composable and streamable Play apps
Composable and streamable Play appsComposable and streamable Play apps
Composable and streamable Play appsYevgeniy Brikman
 
How to test code with mruby
How to test code with mrubyHow to test code with mruby
How to test code with mrubyHiroshi SHIBATA
 
Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015Masahiro Nagano
 
The journey of asyncio adoption in instagram
The journey of asyncio adoption in instagramThe journey of asyncio adoption in instagram
The journey of asyncio adoption in instagramJimmy Lai
 
Coroutines for Kotlin Multiplatform in Practise
Coroutines for Kotlin Multiplatform in PractiseCoroutines for Kotlin Multiplatform in Practise
Coroutines for Kotlin Multiplatform in PractiseChristian Melchior
 
Test-Driven Infrastructure with Puppet, Test Kitchen, Serverspec and RSpec
Test-Driven Infrastructure with Puppet, Test Kitchen, Serverspec and RSpecTest-Driven Infrastructure with Puppet, Test Kitchen, Serverspec and RSpec
Test-Driven Infrastructure with Puppet, Test Kitchen, Serverspec and RSpecMartin Etmajer
 
Introduction to node.js
Introduction to node.jsIntroduction to node.js
Introduction to node.jsjacekbecela
 
Javascript TDD with Jasmine, Karma, and Gulp
Javascript TDD with Jasmine, Karma, and GulpJavascript TDD with Jasmine, Karma, and Gulp
Javascript TDD with Jasmine, Karma, and GulpAll Things Open
 
Introduction to Node.js: What, why and how?
Introduction to Node.js: What, why and how?Introduction to Node.js: What, why and how?
Introduction to Node.js: What, why and how?Christian Joudrey
 
Regex Considered Harmful: Use Rosie Pattern Language Instead
Regex Considered Harmful: Use Rosie Pattern Language InsteadRegex Considered Harmful: Use Rosie Pattern Language Instead
Regex Considered Harmful: Use Rosie Pattern Language InsteadAll Things Open
 
Containerizing a Web Application with Vue.js and Java
Containerizing a Web Application with Vue.js and JavaContainerizing a Web Application with Vue.js and Java
Containerizing a Web Application with Vue.js and JavaJadson Santos
 
Original slides from Ryan Dahl's NodeJs intro talk
Original slides from Ryan Dahl's NodeJs intro talkOriginal slides from Ryan Dahl's NodeJs intro talk
Original slides from Ryan Dahl's NodeJs intro talkAarti Parikh
 
Infrastructure as Code with Terraform
Infrastructure as Code with TerraformInfrastructure as Code with Terraform
Infrastructure as Code with TerraformTim Berry
 
How NOT to write in Node.js
How NOT to write in Node.jsHow NOT to write in Node.js
How NOT to write in Node.jsPiotr Pelczar
 
Node.js vs Play Framework (with Japanese subtitles)
Node.js vs Play Framework (with Japanese subtitles)Node.js vs Play Framework (with Japanese subtitles)
Node.js vs Play Framework (with Japanese subtitles)Yevgeniy Brikman
 

Tendances (20)

Nodejs Explained with Examples
Nodejs Explained with ExamplesNodejs Explained with Examples
Nodejs Explained with Examples
 
Composable and streamable Play apps
Composable and streamable Play appsComposable and streamable Play apps
Composable and streamable Play apps
 
How to test code with mruby
How to test code with mrubyHow to test code with mruby
How to test code with mruby
 
Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015
 
The journey of asyncio adoption in instagram
The journey of asyncio adoption in instagramThe journey of asyncio adoption in instagram
The journey of asyncio adoption in instagram
 
Coroutines for Kotlin Multiplatform in Practise
Coroutines for Kotlin Multiplatform in PractiseCoroutines for Kotlin Multiplatform in Practise
Coroutines for Kotlin Multiplatform in Practise
 
Test-Driven Infrastructure with Puppet, Test Kitchen, Serverspec and RSpec
Test-Driven Infrastructure with Puppet, Test Kitchen, Serverspec and RSpecTest-Driven Infrastructure with Puppet, Test Kitchen, Serverspec and RSpec
Test-Driven Infrastructure with Puppet, Test Kitchen, Serverspec and RSpec
 
Introduction to node.js
Introduction to node.jsIntroduction to node.js
Introduction to node.js
 
Javascript TDD with Jasmine, Karma, and Gulp
Javascript TDD with Jasmine, Karma, and GulpJavascript TDD with Jasmine, Karma, and Gulp
Javascript TDD with Jasmine, Karma, and Gulp
 
Introduction to Node.js: What, why and how?
Introduction to Node.js: What, why and how?Introduction to Node.js: What, why and how?
Introduction to Node.js: What, why and how?
 
Regex Considered Harmful: Use Rosie Pattern Language Instead
Regex Considered Harmful: Use Rosie Pattern Language InsteadRegex Considered Harmful: Use Rosie Pattern Language Instead
Regex Considered Harmful: Use Rosie Pattern Language Instead
 
Containerizing a Web Application with Vue.js and Java
Containerizing a Web Application with Vue.js and JavaContainerizing a Web Application with Vue.js and Java
Containerizing a Web Application with Vue.js and Java
 
Puppet evolutions
Puppet evolutionsPuppet evolutions
Puppet evolutions
 
Original slides from Ryan Dahl's NodeJs intro talk
Original slides from Ryan Dahl's NodeJs intro talkOriginal slides from Ryan Dahl's NodeJs intro talk
Original slides from Ryan Dahl's NodeJs intro talk
 
Infrastructure as Code with Terraform
Infrastructure as Code with TerraformInfrastructure as Code with Terraform
Infrastructure as Code with Terraform
 
Vagrant and CentOS 7
Vagrant and CentOS 7Vagrant and CentOS 7
Vagrant and CentOS 7
 
How NOT to write in Node.js
How NOT to write in Node.jsHow NOT to write in Node.js
How NOT to write in Node.js
 
Node.js
Node.jsNode.js
Node.js
 
Node.js vs Play Framework (with Japanese subtitles)
Node.js vs Play Framework (with Japanese subtitles)Node.js vs Play Framework (with Japanese subtitles)
Node.js vs Play Framework (with Japanese subtitles)
 
About Node.js
About Node.jsAbout Node.js
About Node.js
 

En vedette

Decorando cercos de madera.pptx paola yahid
Decorando cercos de madera.pptx paola yahidDecorando cercos de madera.pptx paola yahid
Decorando cercos de madera.pptx paola yahidRoxanaLombardo
 
CLI, the other SAPI
CLI, the other SAPICLI, the other SAPI
CLI, the other SAPICombell NV
 
Saving Time with WP-CLI
Saving Time with WP-CLISaving Time with WP-CLI
Saving Time with WP-CLITaylor Lovett
 
Stories from the PTP Battlefront - Corvil at STAC London
Stories from the PTP Battlefront - Corvil at STAC LondonStories from the PTP Battlefront - Corvil at STAC London
Stories from the PTP Battlefront - Corvil at STAC LondonCorvil
 
WEKA:The Command Line Interface
WEKA:The Command Line InterfaceWEKA:The Command Line Interface
WEKA:The Command Line Interfaceweka Content
 
Best Practices for WordPress
Best Practices for WordPressBest Practices for WordPress
Best Practices for WordPressTaylor Lovett
 
WEKA: The Command Line Interface
WEKA: The Command Line InterfaceWEKA: The Command Line Interface
WEKA: The Command Line InterfaceDataminingTools Inc
 
Oracle SQL Developer Tips & Tricks
Oracle SQL Developer Tips & TricksOracle SQL Developer Tips & Tricks
Oracle SQL Developer Tips & TricksJeff Smith
 
SQLcl overview - A new Command Line Interface for Oracle Database
SQLcl overview - A new Command Line Interface for Oracle DatabaseSQLcl overview - A new Command Line Interface for Oracle Database
SQLcl overview - A new Command Line Interface for Oracle DatabaseJeff Smith
 
Becoming a Command Line Expert with the AWS CLI (TLS304) | AWS re:Invent 2013
Becoming a Command Line Expert with the AWS CLI (TLS304) | AWS re:Invent 2013Becoming a Command Line Expert with the AWS CLI (TLS304) | AWS re:Invent 2013
Becoming a Command Line Expert with the AWS CLI (TLS304) | AWS re:Invent 2013Amazon Web Services
 
Linux Introduction (Commands)
Linux Introduction (Commands)Linux Introduction (Commands)
Linux Introduction (Commands)anandvaidya
 

En vedette (12)

Decorando cercos de madera.pptx paola yahid
Decorando cercos de madera.pptx paola yahidDecorando cercos de madera.pptx paola yahid
Decorando cercos de madera.pptx paola yahid
 
CLI, the other SAPI
CLI, the other SAPICLI, the other SAPI
CLI, the other SAPI
 
20150305-Soul-Book
20150305-Soul-Book20150305-Soul-Book
20150305-Soul-Book
 
Saving Time with WP-CLI
Saving Time with WP-CLISaving Time with WP-CLI
Saving Time with WP-CLI
 
Stories from the PTP Battlefront - Corvil at STAC London
Stories from the PTP Battlefront - Corvil at STAC LondonStories from the PTP Battlefront - Corvil at STAC London
Stories from the PTP Battlefront - Corvil at STAC London
 
WEKA:The Command Line Interface
WEKA:The Command Line InterfaceWEKA:The Command Line Interface
WEKA:The Command Line Interface
 
Best Practices for WordPress
Best Practices for WordPressBest Practices for WordPress
Best Practices for WordPress
 
WEKA: The Command Line Interface
WEKA: The Command Line InterfaceWEKA: The Command Line Interface
WEKA: The Command Line Interface
 
Oracle SQL Developer Tips & Tricks
Oracle SQL Developer Tips & TricksOracle SQL Developer Tips & Tricks
Oracle SQL Developer Tips & Tricks
 
SQLcl overview - A new Command Line Interface for Oracle Database
SQLcl overview - A new Command Line Interface for Oracle DatabaseSQLcl overview - A new Command Line Interface for Oracle Database
SQLcl overview - A new Command Line Interface for Oracle Database
 
Becoming a Command Line Expert with the AWS CLI (TLS304) | AWS re:Invent 2013
Becoming a Command Line Expert with the AWS CLI (TLS304) | AWS re:Invent 2013Becoming a Command Line Expert with the AWS CLI (TLS304) | AWS re:Invent 2013
Becoming a Command Line Expert with the AWS CLI (TLS304) | AWS re:Invent 2013
 
Linux Introduction (Commands)
Linux Introduction (Commands)Linux Introduction (Commands)
Linux Introduction (Commands)
 

Similaire à Exploring the Titanium CLI - Codestrong 2012

Codestrong 2012 breakout session exploring the new titanium command line in...
Codestrong 2012 breakout session   exploring the new titanium command line in...Codestrong 2012 breakout session   exploring the new titanium command line in...
Codestrong 2012 breakout session exploring the new titanium command line in...Axway Appcelerator
 
Embedded Android
Embedded AndroidEmbedded Android
Embedded Android晓东 杜
 
Alloy: Deep Dive, Below The Surface, and Other Nautical Metaphors
Alloy: Deep Dive, Below The Surface, and Other Nautical MetaphorsAlloy: Deep Dive, Below The Surface, and Other Nautical Metaphors
Alloy: Deep Dive, Below The Surface, and Other Nautical MetaphorsTony Lukasavage
 
Titanium Alloy Framework
Titanium Alloy FrameworkTitanium Alloy Framework
Titanium Alloy FrameworkTechday7
 
C# Production Debugging Made Easy
 C# Production Debugging Made Easy C# Production Debugging Made Easy
C# Production Debugging Made EasyAlon Fliess
 
Container Power Hour with Jess, Clare, and Abby (CON362) - AWS re:Invent 2018
Container Power Hour with Jess, Clare, and Abby (CON362) - AWS re:Invent 2018Container Power Hour with Jess, Clare, and Abby (CON362) - AWS re:Invent 2018
Container Power Hour with Jess, Clare, and Abby (CON362) - AWS re:Invent 2018Amazon Web Services
 
Maximize the power of OSGi in AEM
Maximize the power of OSGi in AEM Maximize the power of OSGi in AEM
Maximize the power of OSGi in AEM ICF CIRCUIT
 
ITCamp 2013 - Alessandro Pilotti - Git crash course for Visual Studio devs
ITCamp 2013 - Alessandro Pilotti - Git crash course for Visual Studio devsITCamp 2013 - Alessandro Pilotti - Git crash course for Visual Studio devs
ITCamp 2013 - Alessandro Pilotti - Git crash course for Visual Studio devsITCamp
 
The Ultimate Administrator’s Guide to HCL Nomad Web
The Ultimate Administrator’s Guide to HCL Nomad WebThe Ultimate Administrator’s Guide to HCL Nomad Web
The Ultimate Administrator’s Guide to HCL Nomad Webpanagenda
 
Kandroid for nhn_deview_20131013_v5_final
Kandroid for nhn_deview_20131013_v5_finalKandroid for nhn_deview_20131013_v5_final
Kandroid for nhn_deview_20131013_v5_finalNAVER D2
 
An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)
An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)
An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)Eric D. Schabell
 
Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!Bram Adams
 
QConSF 2022 - Backends in Dart
QConSF 2022 - Backends in DartQConSF 2022 - Backends in Dart
QConSF 2022 - Backends in DartChris Swan
 
IMAGE CAPTURE, PROCESSING AND TRANSFER VIA ETHERNET UNDER CONTROL OF MATLAB G...
IMAGE CAPTURE, PROCESSING AND TRANSFER VIA ETHERNET UNDER CONTROL OF MATLAB G...IMAGE CAPTURE, PROCESSING AND TRANSFER VIA ETHERNET UNDER CONTROL OF MATLAB G...
IMAGE CAPTURE, PROCESSING AND TRANSFER VIA ETHERNET UNDER CONTROL OF MATLAB G...Christopher Diamantopoulos
 
Getting started with Appcelerator Titanium
Getting started with Appcelerator TitaniumGetting started with Appcelerator Titanium
Getting started with Appcelerator TitaniumTechday7
 
Android porting for dummies @droidconin 2011
Android porting for dummies @droidconin 2011Android porting for dummies @droidconin 2011
Android porting for dummies @droidconin 2011pundiramit
 
Asterisk: El futuro es REST
Asterisk: El futuro es RESTAsterisk: El futuro es REST
Asterisk: El futuro es RESTgdraque
 
Droidcon 2011: Gingerbread and honeycomb, Markus Junginger, Greenrobot
Droidcon 2011: Gingerbread and honeycomb, Markus Junginger,  GreenrobotDroidcon 2011: Gingerbread and honeycomb, Markus Junginger,  Greenrobot
Droidcon 2011: Gingerbread and honeycomb, Markus Junginger, GreenrobotDroidcon Berlin
 
Engineering Efficiency in LINE
Engineering Efficiency in LINEEngineering Efficiency in LINE
Engineering Efficiency in LINEHuy Do
 

Similaire à Exploring the Titanium CLI - Codestrong 2012 (20)

Codestrong 2012 breakout session exploring the new titanium command line in...
Codestrong 2012 breakout session   exploring the new titanium command line in...Codestrong 2012 breakout session   exploring the new titanium command line in...
Codestrong 2012 breakout session exploring the new titanium command line in...
 
Embedded Android
Embedded AndroidEmbedded Android
Embedded Android
 
Alloy: Deep Dive, Below The Surface, and Other Nautical Metaphors
Alloy: Deep Dive, Below The Surface, and Other Nautical MetaphorsAlloy: Deep Dive, Below The Surface, and Other Nautical Metaphors
Alloy: Deep Dive, Below The Surface, and Other Nautical Metaphors
 
Titanium Alloy Framework
Titanium Alloy FrameworkTitanium Alloy Framework
Titanium Alloy Framework
 
C# Production Debugging Made Easy
 C# Production Debugging Made Easy C# Production Debugging Made Easy
C# Production Debugging Made Easy
 
Container Power Hour with Jess, Clare, and Abby (CON362) - AWS re:Invent 2018
Container Power Hour with Jess, Clare, and Abby (CON362) - AWS re:Invent 2018Container Power Hour with Jess, Clare, and Abby (CON362) - AWS re:Invent 2018
Container Power Hour with Jess, Clare, and Abby (CON362) - AWS re:Invent 2018
 
Maximize the power of OSGi in AEM
Maximize the power of OSGi in AEM Maximize the power of OSGi in AEM
Maximize the power of OSGi in AEM
 
ITCamp 2013 - Alessandro Pilotti - Git crash course for Visual Studio devs
ITCamp 2013 - Alessandro Pilotti - Git crash course for Visual Studio devsITCamp 2013 - Alessandro Pilotti - Git crash course for Visual Studio devs
ITCamp 2013 - Alessandro Pilotti - Git crash course for Visual Studio devs
 
The Ultimate Administrator’s Guide to HCL Nomad Web
The Ultimate Administrator’s Guide to HCL Nomad WebThe Ultimate Administrator’s Guide to HCL Nomad Web
The Ultimate Administrator’s Guide to HCL Nomad Web
 
Kandroid for nhn_deview_20131013_v5_final
Kandroid for nhn_deview_20131013_v5_finalKandroid for nhn_deview_20131013_v5_final
Kandroid for nhn_deview_20131013_v5_final
 
An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)
An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)
An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)
 
Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!
 
QConSF 2022 - Backends in Dart
QConSF 2022 - Backends in DartQConSF 2022 - Backends in Dart
QConSF 2022 - Backends in Dart
 
IMAGE CAPTURE, PROCESSING AND TRANSFER VIA ETHERNET UNDER CONTROL OF MATLAB G...
IMAGE CAPTURE, PROCESSING AND TRANSFER VIA ETHERNET UNDER CONTROL OF MATLAB G...IMAGE CAPTURE, PROCESSING AND TRANSFER VIA ETHERNET UNDER CONTROL OF MATLAB G...
IMAGE CAPTURE, PROCESSING AND TRANSFER VIA ETHERNET UNDER CONTROL OF MATLAB G...
 
Getting started with Appcelerator Titanium
Getting started with Appcelerator TitaniumGetting started with Appcelerator Titanium
Getting started with Appcelerator Titanium
 
Android porting for dummies @droidconin 2011
Android porting for dummies @droidconin 2011Android porting for dummies @droidconin 2011
Android porting for dummies @droidconin 2011
 
Asterisk: El futuro es REST
Asterisk: El futuro es RESTAsterisk: El futuro es REST
Asterisk: El futuro es REST
 
Asterisk: the future is at REST
Asterisk: the future is at RESTAsterisk: the future is at REST
Asterisk: the future is at REST
 
Droidcon 2011: Gingerbread and honeycomb, Markus Junginger, Greenrobot
Droidcon 2011: Gingerbread and honeycomb, Markus Junginger,  GreenrobotDroidcon 2011: Gingerbread and honeycomb, Markus Junginger,  Greenrobot
Droidcon 2011: Gingerbread and honeycomb, Markus Junginger, Greenrobot
 
Engineering Efficiency in LINE
Engineering Efficiency in LINEEngineering Efficiency in LINE
Engineering Efficiency in LINE
 

Plus de Chris Barber

Remote IP Power Switches
Remote IP Power SwitchesRemote IP Power Switches
Remote IP Power SwitchesChris Barber
 
Node.js/io.js Native C++ Addons
Node.js/io.js Native C++ AddonsNode.js/io.js Native C++ Addons
Node.js/io.js Native C++ AddonsChris Barber
 
Intro to PECL/mysqlnd_ms (4/7/2011)
Intro to PECL/mysqlnd_ms (4/7/2011)Intro to PECL/mysqlnd_ms (4/7/2011)
Intro to PECL/mysqlnd_ms (4/7/2011)Chris Barber
 
Cassandra - Say Goodbye to the Relational Database (5-6-2010)
Cassandra - Say Goodbye to the Relational Database (5-6-2010)Cassandra - Say Goodbye to the Relational Database (5-6-2010)
Cassandra - Say Goodbye to the Relational Database (5-6-2010)Chris Barber
 
Debugging Dojo Applications (2/10/2010)
Debugging Dojo Applications (2/10/2010)Debugging Dojo Applications (2/10/2010)
Debugging Dojo Applications (2/10/2010)Chris Barber
 
Titanium Powered Desktop & Mobile Apps (11/21/2009)
Titanium Powered Desktop & Mobile Apps (11/21/2009)Titanium Powered Desktop & Mobile Apps (11/21/2009)
Titanium Powered Desktop & Mobile Apps (11/21/2009)Chris Barber
 
Dojo - Javascript's Swiss Army Knife (7/15/2009)
Dojo - Javascript's Swiss Army Knife (7/15/2009)Dojo - Javascript's Swiss Army Knife (7/15/2009)
Dojo - Javascript's Swiss Army Knife (7/15/2009)Chris Barber
 
High Availability With DRBD & Heartbeat
High Availability With DRBD & HeartbeatHigh Availability With DRBD & Heartbeat
High Availability With DRBD & HeartbeatChris Barber
 
2008 MySQL Conference Recap
2008 MySQL Conference Recap2008 MySQL Conference Recap
2008 MySQL Conference RecapChris Barber
 
Memcached And MySQL
Memcached And MySQLMemcached And MySQL
Memcached And MySQLChris Barber
 

Plus de Chris Barber (10)

Remote IP Power Switches
Remote IP Power SwitchesRemote IP Power Switches
Remote IP Power Switches
 
Node.js/io.js Native C++ Addons
Node.js/io.js Native C++ AddonsNode.js/io.js Native C++ Addons
Node.js/io.js Native C++ Addons
 
Intro to PECL/mysqlnd_ms (4/7/2011)
Intro to PECL/mysqlnd_ms (4/7/2011)Intro to PECL/mysqlnd_ms (4/7/2011)
Intro to PECL/mysqlnd_ms (4/7/2011)
 
Cassandra - Say Goodbye to the Relational Database (5-6-2010)
Cassandra - Say Goodbye to the Relational Database (5-6-2010)Cassandra - Say Goodbye to the Relational Database (5-6-2010)
Cassandra - Say Goodbye to the Relational Database (5-6-2010)
 
Debugging Dojo Applications (2/10/2010)
Debugging Dojo Applications (2/10/2010)Debugging Dojo Applications (2/10/2010)
Debugging Dojo Applications (2/10/2010)
 
Titanium Powered Desktop & Mobile Apps (11/21/2009)
Titanium Powered Desktop & Mobile Apps (11/21/2009)Titanium Powered Desktop & Mobile Apps (11/21/2009)
Titanium Powered Desktop & Mobile Apps (11/21/2009)
 
Dojo - Javascript's Swiss Army Knife (7/15/2009)
Dojo - Javascript's Swiss Army Knife (7/15/2009)Dojo - Javascript's Swiss Army Knife (7/15/2009)
Dojo - Javascript's Swiss Army Knife (7/15/2009)
 
High Availability With DRBD & Heartbeat
High Availability With DRBD & HeartbeatHigh Availability With DRBD & Heartbeat
High Availability With DRBD & Heartbeat
 
2008 MySQL Conference Recap
2008 MySQL Conference Recap2008 MySQL Conference Recap
2008 MySQL Conference Recap
 
Memcached And MySQL
Memcached And MySQLMemcached And MySQL
Memcached And MySQL
 

Dernier

Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 

Dernier (20)

Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 

Exploring the Titanium CLI - Codestrong 2012

  • 1. Exploring The New Titanium Command Line Interface Chris Barber Sr. Platform Lead Appcelerator @cb1kenobi cbarber@appcelerator.com
  • 2. Meet Chris • Chris Barber • JavaScript Team Lead • Mobile Web, CLI • @cb1kenobi
  • 3. Why Create a New CLI?
  • 4. Titanium 2.X CLI • Python 2.7 • Inconsistent • Poorly documented • Difficult to use • Even more difficult to maintain
  • 5. Project Creation chris@yojimbo:~$ python /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/2.1.3.GA/project.py Usage: project.py <name> <id> <directory> [iphone,android,mobileweb] [android_sdk] [--update-platforms] Options: -h, --help show this help message and exit -u, --update-platforms Initialize project for any missing platforms. Use this to add a platform to the project without overwriting tiapp.xml and app.js. chris@yojimbo:~$ python /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/2.1.3.GA/project.py myapp com.mycompany.myapp . foo
  • 6. Build iOS App chris@yojimbo:~$ python /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/2.1.3.GA/iphone/builder.py builder.py <command> <version> <project_dir> <appid> <name> [options] available commands: install install the app to itunes for testing on iphone simulator build and run on the iphone simulator adhoc build for adhoc distribution distribute build final distribution bundle xcode build from within xcode run build and run app from project folder
  • 7. Build iOS App chris@yojimbo:~$ python /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/2.1.3.GA/iphone/builder.py simulator [INFO] One moment, building ... Traceback (most recent call last): File "/Users/chris/Library/Application Support/Titanium/mobilesdk/osx/2.1.3.GA/iphone/builder.py", line 1594, in <module> main(sys.argv) File "/Users/chris/Library/Application Support/Titanium/mobilesdk/osx/2.1.3.GA/iphone/builder.py", line 608, in main iphone_version = dequote(args[2].decode("utf-8")) IndexError: list index out of range builder.py simulator <ios-version> <project-dir> <id> <name> [<device-family> [<sim-type> [<debug-host>]]]
  • 8. OK, We Need A New CLI
  • 9. Building a New CLI • Python 3? Node.js? Ruby? Java+Rhino? • How comfortable are we with these technologies? • Compatible license? • What libraries are available? • XML/JSON parsing • Code minification • Image resizing
  • 10. Appc Node.js • JavaScript! • MIT License • Small size • No native dependencies • Package manager (npm) • Tons of great community modules
  • 12. First Things First • Node.js • 0.8 or newer • NPM
  • 13. Installation npm install -g titanium Note: may need to run as npm sudo
  • 15. Running The CLI chris@yojimbo:~$ titanium Titanium Command-Line Interface, version 3.0.10 Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved. Usage: titanium <command> [options] Commands: config get and set config options help displays this help screen info display development environment information login logs into the Appcelerator network logout logs out of the Appcelerator network module manages installed Titanium Modules plugin manages installed Titanium Plugins sdk manages installed Titanium SDKs setup run the setup wizard status displays session information Global Flags: --banner, --no-banner displays Titanium version banner [default: true] --colors, --no-colors use colors in the terminal [default: true] -h, --help displays help --prompt, --no-prompt prompt for missing options [default: true] -q, --quiet suppress all output -v, --version displays the current version
  • 16. Help! titanium <cmd> -h chris@yojimbo:~$ titanium help config Titanium Command-Line Interface, version 3.0.10 titanium <cmd> --help Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved. titanium help <cmd> Usage: titanium config [--remove] [--output <value>] [<key>] [<value>] Gets and sets config options. If no key is specified, then all key/values are returned. The config file is located at: /Users/chris/.titanium/config.json Config Arguments: <key> the key to get or set <value> the value to set the specified key Config Flags: -r, --remove remove the specified config key and all its descendants Config Options: -o, --output <value> output format [report, json] Global Flags: --banner, --no-banner displays Titanium version banner [default: true] --colors, --no-colors use colors in the terminal [default: true] -h, --help displays help --prompt, --no-prompt prompt for missing options [default: true] -q, --quiet suppress all output -v, --version displays the current version
  • 17. Setup Wizard Basic Setup titanium setup Advanced Setup • Initializes the CLI configuration titanium setup -a chris@yojimbo:~$ titanium setup Titanium Command-Line Interface, version 3.0.10 Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved. Enter ctrl-c at any time to quit What is your name? (this is used as the default for the "author" field in the tiapp.xml or module manifest file when creating new projects) (Chris Barber) What is your email address used for logging into the Appcelerator Network? (cbarber@appcelerator.com) What would you like as your default locale? (examples: "en", "de", "fr") (en-us) What Titanium SDK would you like to use by default? (2.1.3.GA) Path to your workspace where your projects should be created: (~/appc/workspace) Path to the Android SDK: (this is needed for building Android apps) Configuration saved
  • 18. Manual Configuration Get All Values titanium config Get All User.* • Get and set config settings Settings titanium config user chris@yojimbo:~$ titanium config Set Android SDK Path titanium config android.ndkPath = "/opt/android-ndk" android.sdkPath android.sdkPath = "" “/path/to/sdk” app.idprefix = "com.appcelerator" app.publisher = "Appcelerator" app.sdk = "2.1.3.GA" app.url = "" app.workspace = "~/appc/workspace" cli.colors = true cli.failOnWrongSDK = false cli.logLevel = "trace" cli.prompt = true cli.quiet = false ios.developerName = "Chris Barber" ios.distributionName = "Appcelerator, Inc." paths.commands = [] paths.hooks = [] paths.plugins = ["~/appc/ti.alloy"] user.email = "cbarber@appcelerator.com" user.locale = "en-us" user.name = "Chris Barber"
  • 19. Authentication Logging In chris@yojimbo:~$ titanium login titanium login Titanium Command-Line Interface, version 3.0.10 <username> Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved. Am I Logged In? titanium status Username: (cbarber@appcelerator.com) Password: Logging out titanium logout Logged in successfully chris@yojimbo:~$ titanium status Titanium Command-Line Interface, version 3.0.10 Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved. You are currently logged in as cbarber@appcelerator.com chris@yojimbo:~$ titanium logout Titanium Command-Line Interface, version 3.0.10 Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved. Logged out successfully • Required for most commands • Adds your app to my.appcelerator.com • Username is your e-mail address
  • 20. System Info chris@yojimbo:~$ titanium info Includes: Titanium Command-Line Interface, version 3.0.10 • OS info Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved. Operating System • node.js & npm Name Version = Mac OS X = 10.8.2 • Xcode versions Memory = 16.0GB • iOS SDKs & node.js node.js Version = v0.8.12 npm Version = 1.1.63 simulators • iOS provisioning Xcode 4.4.1 (build 4F1003) Install Location = /Applications/Xcode44.app/Contents/Developer profiles & iOS SDKs iOS Simulators = 5.1 = 5.0, 5.1 keychains 4.5 (build 4G182) Install Location = /Applications/Xcode45.app/Contents/Developer • Titanium SDKs iOS SDKs iOS Simulators = 6.0 = 5.0, 5.1, 6.0 • Android SDKs, iOS Certificates Development = Chris Barber (XXXXXXXXXX) addons, and AVDs Distribution = Appcelerator, Inc. Apple WWDR = installed Development iOS Provisioning Profiles Get All Info My Provisioning Profile UUID = XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX titanium info App Prefix App Id = XXXXXXXXXX = com.appcelerator.* iOS Keychains System Default = System Default OS Info Only login.keychain = /Users/chris/Library/Keychains/login.keychain Microsoft_Intermediate_Certificates = /Users/chris/Library/Keychains/Microsoft_Intermediate_Certificates titanium info -t os System.keychain = /Library/Keychains/System.keychain Titanium SDKs 2.1.3.GA iOS Info Only Install Location Platforms = /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/2.1.3.GA = android, iphone, mobileweb git Hash = unknown titanium info -t ios git Timestamp = unknown Android Platforms android-8 Android & Node.js Name API Level = Android 2.2 =8 Info Only Revision Skins =3 = HVGA, QVGA, WQVGA400, WQVGA432, WVGA800 (default), WVGA854 titanium info -t ABIs Path = armeabi = /opt/android-sdk/platforms/android-8 android,nodejs Android Add-ons Google Inc.:Google APIs:8 Name = Google APIs Vendor = Google Inc. Output as JSON Revision Description =2 = Android + Google APIs titanium info -o json Skins ABIs = WVGA854, WQVGA400, HVGA, WQVGA432, WVGA800 (default), QVGA = armeabi Path = /opt/android-sdk/add-ons/addon-google_apis-google-10 Based On = Android 2.2 (API level 8) Libraries = com.google.android.maps: API for Google Maps (maps.jar)
  • 21. Modules & Plugins Get Installed Modules chris@yojimbo:~$ titanium module titanium module Titanium Command-Line Interface, version 3.0.10 Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved. Get Installed Modules Including a Project titanium module Global Modules –project-dir /path/to/project Android ti.cloudpush 2.0.7 /Users/chris/Library/Application Support/Titanium/modules/android/ti.cloudpush/2.0.7 CommonJS ti.cloud commonjs/ti.cloud/2.2.0 2.3.0 /Users/chris/Library/Application Support/Titanium/modules/commonjs/ti.cloud/2.3.0 2.0.5 /Library/Application Support/Titanium/modules/commonjs/ti.cloud/2.0.5 iPhone ti.jira 1.0 /Users/chris/Library/Application Support/Titanium/modules/iphone/ti.jira/1.0 Mobile Web ti.oldmodule 0.1 /Users/chris/Library/Application Support/Titanium/modules/mobileweb/ti.oldmodule/0.1
  • 22. Modules & Plugins Get Installed Plugins titanium plugin Output as JSON titanium plugin chris@yojimbo:~$ titanium plugin -o json Titanium Command-Line Interface, version 3.0.10 Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved. User Path Plugins No project plugins found Global Plugins another_plugin 1.0 /Users/chris/Library/Application Support/Titanium/plugins/another_plugin/1.0 test_plugin 1.0 /Users/chris/Library/Application Support/Titanium/plugins/test_plugin/1.0 ti.alloy 1.0 /Users/chris/Library/Application Support/Titanium/plugins/ti.alloy/1.0
  • 23. Wait a sec… Where’s the create and build commands?
  • 24. Downloading An SDK List Intalled SDKs chris@yojimbo:~$ titanium sdk titanium sdk Titanium Command-Line Interface, version 3.0.10 Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved. Install Latest 3.0 titanium sdk install --branch 3_0_X Installed SDKs: --default 2.1.3.GA [default] /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/2.1.3.GA 2.1.2.GA /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/2.1.2.GA Install Latest Stable 2.1.0.GA /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/2.1.0.GA titanium sdk install 2.0.2.GA /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/2.0.2.GA Install Latest Stable & Set as Default SDK titanium sdk install --default Install Bleeding Edge chris@yojimbo:~$ titanium sdk install --branch 3_0_X --default titanium sdk install Titanium Command-Line Interface, version 3.0.10 --branch master Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved. Downloading http://builds.appcelerator.com.s3.amazonaws.com/mobile/3_0_X/mobilesdk- 3.0.0.v20121018214614-osx.zip 100% [=================================================================] 0.0s Extracting SDK... Saving SDK 3.0.0.v20121018214614 as the default. Titanium SDK 3.0.0.v20121018214614 successfully installed!
  • 25. New Commands! chris@yojimbo:~$ titanium Titanium Command-Line Interface, version 3.0.10 Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved. Usage: titanium <command> [options] Commands: build builds a project clean removes previous build directories config get and set config options create creates a new mobile application or module help displays this help screen info display development environment information login logs into the Appcelerator network logout logs out of the Appcelerator network module manages installed Titanium Modules plugin manages installed Titanium Plugins project get and set tiapp.xml settings sdk manages installed Titanium SDKs setup run the setup wizard status displays session information Global Flags: --banner, --no-banner displays Titanium version banner [default: true] --colors, --no-colors use colors in the terminal [default: true] -h, --help displays help --prompt, --no-prompt prompt for missing options [default: true] -q, --quiet suppress all output -v, --version displays the current version
  • 27. Creating a Project Create a Project chris@yojimbo:~$ titanium create titanium create Titanium Command-Line Interface, version 3.0.10 Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved. Create Project With All Arguments titanium sdk create Target platforms: (android,ios,ipad,iphone,mobileweb) --id com.appc.myapp App ID: com.appcelerator.myapp --name myapp Project name: myapp --platforms android,iphone,ipad, [INFO] Creating Titanium Mobile application project mobileweb [DEBUG] Copying /Users/chris/Library/Application --workspace-dir Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default => /path/to/workspace /Users/chris/myapp [DEBUG] Copying /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default/Resources => /Users/chris/myapp/Resources [DEBUG] Copying /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default/Resources/a ndroid => /Users/chris/myapp/Resources/android [DEBUG] Copying /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default/Resources/a ndroid/images => /Users/chris/myapp/Resources/android/images [DEBUG] Copying /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121018214614/android/templates/app/default/Resources/a ndroid/images/res-notlong-port-mdpi => /Users/chris/myapp/Resources/android/images/res- notlong-port-mdpi [INFO] Project 'myapp' created successfully in 32ms
  • 28. Getting Project Info Basic Info titanium project Copy Platform • Tool for interacting with the tiapp.xml Resource Files titanium project chris@yojimbo:~/myapp$ titanium project --deployment-targets Titanium Command-Line Interface, version 3.0.10 android,ios,mobileweb Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved. Deployment Targets: android = true ipad = false iphone = true mobileweb = true Project Properties: sdk-version = 3.0.0 id = com.appcelerator.myapp name = myapp version = 1.0 publisher = not specified url = not specified description = not specified copyright = not specified icon = appicon.png analytics = true guid = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  • 29. Building a Project Platforms: chris@yojimbo:~/myapp$ titanium build --platform ios • iOS Titanium Command-Line Interface, version 3.0.10 • Mobile Web Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved. • Android [DEBUG] No project level plugins to load [DEBUG] Loaded plugin hooks: Special Hooks: [DEBUG] /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.1.0/cli/hooks/plugins.js • Run in Simulator [DEBUG] /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.1.0/iphone/cli/hooks/install.js • Install on Device [DEBUG] /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.1.0/iphone/cli/hooks/package.js [DEBUG] /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.1.0/iphone/cli/hooks/run.js • Package for [INFO] Build type: development Distribution [DEBUG] Titanium iOS SDK directory: /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.1.0/iphone [INFO] Building for target: simulator [INFO] Building using iOS SDK: 6.0 [INFO] Building for iOS Simulator: 6.0 [INFO] Building for device family: universal [DEBUG] Setting Xcode target to Debug [DEBUG] Setting Xcode build OS to iphonesimulator6.0 [DEBUG] Xcode installation: /Applications/Xcode45.app/Contents/Developer [DEBUG] iOS WWDR certificate: installed [INFO] Building for iOS 6.0; using 4.3 as minimum iOS version [DEBUG] Minimum iOS version: 4.3 [INFO] Debugging disabled [DEBUG] Building for the following architectures: armv7 armv7s i386 [DEBUG] Forcing rebuild: githash changed since last build [DEBUG] Was: a50c927 [DEBUG] Now: ab2b280 [INFO] Cleaning old build directory [DEBUG] Would be firing "compile" legacy plugin hook if it was supported [INFO] Building Info.plist [INFO] No Titanium Modules required, continuing [INFO] Performing full rebuild [INFO] Copying Xcode iOS files ...
  • 30. Cleaning the Project Nuke All Platform Build Directories titanium clean • Completely removes the platform specific build Nuke a Specific Platform’s Build directories Directory titanium clean –platform android chris@yojimbo:~/myapp$ titanium clean Titanium Command-Line Interface, version 3.0.10 Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved. [INFO] Project cleaned successfully in 1ms
  • 31. Extending the CLI Plugins, commands, and hooks
  • 32. Plugins • Similar to Titanium Modules • Legacy plugin.py not supported today • CLI commands & hooks • Installed globally or in project directory • Enabled via the tiapp.xml <plugins>
  • 33. Sample Command myplugin/1.0/cli/com exports.cliVersion = '>=3.X'; mands/magic.js exports.desc = 'does magical things’; exports.config = function (logger, config, cli) { return { flags: { extra: { abbr: 'e', desc: 'adds more magic’ } } }; }; exports.validate = function (logger, config, cli) { // nothing to validate }; exports.run = function (logger, config, cli) { var s = 'doing magical stuff!'; if (cli.argv.extra) { s = s.replace(/./g, function (c, i) { return i % 2 == 0 ? c.toUpperCase() : c.toLowerCase(); }); } logger.log(s); };
  • 34. Sample Hook myplugin/1.0/cli/hook s/my_build_hook.js exports.cliVersion = '>=3.X'; exports.init = function (logger, config, cli) { cli.addHook('build.pre.compile', function (data, finished) { logger.log('modifying some code before build starts'); finished(); }); cli.addHook('build.post.compile', { priority: 900, post: function (data, finished) { logger.log('packaging some extra files after the build'); finished(); } }); cli.addHook('build.finalize', function (data, finished) { logger.log('cleaning up my mess'); finished(); }); };
  • 35. Demo Kick the tires & light the fires
  • 37. // TODO: • More plugin hooks • Project creation, chaging project settings, etc • Project exporting & migration tools • Better support for multiple Titanium SDKs • What would you like to see?
  • 38. Summary Just in case you were sleeping
  • 39. The New CLI Rocks • Easy to install, easy to use • Fast as shit • Built-in documentation • Extensible plugin architecture • Consistent arguments • Argument prompting • Internationalization • Colors!
  • 40. Get It Today! npm install -g titanium titanium sdk install --branch 3_0_X --default Note: may need to run npm as sudo
  • 41. Chris Barber @cb1kenobi cbarber@appcelerator.com

Notes de l'éditeur

  1. Who’s actually used the Python build scripts?
  2. Who’s actually used the Python build scripts?
  3. Just like ti studio