You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cordova.apache.org by vladimir-kotikov <gi...@git.apache.org> on 2015/05/25 18:24:29 UTC

[GitHub] cordova-lib pull request: Draft implementation for Unified platfor...

GitHub user vladimir-kotikov opened a pull request:

    https://github.com/apache/cordova-lib/pull/226

    Draft implementation for Unified platform API

    Draft implementation of Unified Platform API for cordova, that inspired by [this thread](http://markmail.org/thread/3dw4mis4qo5d4ecz) in cordova-dev mailing list and [this proposal](https://github.com/kamrik/cordova-discuss/blob/master/proposals/PlatformProject.md)

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/MSOpenTech/cordova-lib unified_platform_api

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/cordova-lib/pull/226.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #226
    
----
commit f37eaf6ef298cabc5b55b4b6c021aa9c17dc159b
Author: Vladimir Kotikov <v-...@microsoft.com>
Date:   2015-05-19T11:52:09Z

    Basic prototype for PlatformApi class

commit 54b8b16918b755dbb94efe4470ef403547170220
Author: Vladimir Kotikov <v-...@microsoft.com>
Date:   2015-05-22T12:21:37Z

    Rename `platforms` -> `platformNames`
    
    `platforms` property now returns array of platforms APIs

commit 0405f3a860e501a6260512eac1b5eeae7bc64964
Author: Vladimir Kotikov <v-...@microsoft.com>
Date:   2015-05-25T12:22:48Z

    Allow pltform to provide its own PlatformHandler.
    
    * Renames common methods' names to be more JS-y
    * Provides mapping from old names -> new ones to smooth transition

commit 7ef6a396845115d070d6fc98121232810bf53557
Author: Vladimir Kotikov <v-...@microsoft.com>
Date:   2015-05-25T14:17:50Z

    Adds ability to platforms to extend PluginHandler

commit c3e022e605c2d762c10d812d04887ea4c9a28a19
Author: Vladimir Kotikov <v-...@microsoft.com>
Date:   2015-05-25T14:18:37Z

    Cleanup and refactoring
    
    * Moves compat-related functionality to separate section
    * Adds more comments for better understanding

----


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@cordova.apache.org
For additional commands, e-mail: dev-help@cordova.apache.org


[GitHub] cordova-lib pull request: Draft implementation for Unified platfor...

Posted by kamrik <gi...@git.apache.org>.
Github user kamrik commented on the pull request:

    https://github.com/apache/cordova-lib/pull/226#issuecomment-105573860
  
    Looks great! 
    Looks like figuring out the tests will be pretty difficult. But it might be worth it just throwing away some of the older tests that rely on a lot of mocks/spies.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@cordova.apache.org
For additional commands, e-mail: dev-help@cordova.apache.org


[GitHub] cordova-lib pull request: Draft implementation for Unified platfor...

Posted by kamrik <gi...@git.apache.org>.
Github user kamrik commented on a diff in the pull request:

    https://github.com/apache/cordova-lib/pull/226#discussion_r31049589
  
    --- Diff: cordova-lib/src/cordova/metadata/PlatformHandler.js ---
    @@ -0,0 +1,100 @@
    +/**
    +    Licensed to the Apache Software Foundation (ASF) under one
    +    or more contributor license agreements.  See the NOTICE file
    +    distributed with this work for additional information
    +    regarding copyright ownership.  The ASF licenses this file
    +    to you under the Apache License, Version 2.0 (the
    +    "License"); you may not use this file except in compliance
    +    with the License.  You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +    Unless required by applicable law or agreed to in writing,
    +    software distributed under the License is distributed on an
    +    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    +    KIND, either express or implied.  See the License for the
    +    specific language governing permissions and limitations
    +    under the License.
    +*/
    +
    +/* jshint sub:true */
    +
    +'use strict';
    +
    +var path = require('path');
    +var shell = require('shelljs');
    +var util = require('../util');
    +var ParserHelper = require('./parserhelper/ParserHelper');
    +
    +/**
    + * Base module for platform parsers
    + *
    + * @param {String} [platform]    Platform name (e.g. android)
    + * @param {String} [projectPath] path/to/platform/project
    + */
    +function PlatformHandler (platform, projectPath) {
    +
    +    this.platform = platform || '';
    +    this.root = this.path = projectPath || '';
    +
    +    // Extend with a ParserHelper instance
    +    Object.defineProperty(this, 'helper', {
    +        value: new ParserHelper(this.platform),
    +        enumerable: true,
    +        configurable: false,
    +        writable: false
    +    });
    +}
    +
    +/**
    + * Base implementation for getConfigXml. Assumes that config.xml
    + * is placed at the root of project.
    + * @return {String} Path to platform's config.xml file
    + */
    +PlatformHandler.prototype.getConfigXml = function() {
    +    return  path.join(this.root, 'config.xml');
    +};
    +
    +/**
    + * Base implementation for getWwwDir. Assumes that
    + * www directory is placed at the root of project.
    + * @return {String} Path to platform's www directory.
    + */
    +PlatformHandler.prototype.getWwwDir = function() {
    +    return  path.join(this.root, 'www');
    +};
    +
    +/**
    + * Base implementation for getCordovaJsSrc. Assumes that cordova.js
    + * source is placed at the root of platform's source dir.
    + * @return {String} Path to platform's 'cordova-js-src' folder.
    + */
    +PlatformHandler.prototype.getCordovaJsSrc = function(platformSource) {
    +    return path.resolve(platformSource, 'cordova-js-src');
    +};
    +
    +/**
    + * Base implementation for updateWww.
    + */
    +PlatformHandler.prototype.updateWww = function() {
    +    var projectRoot = util.isCordova(this.root);
    +    var appWww = util.projectWww(projectRoot);
    +    var platformWww = path.join(this.root, 'platform_www');
    --- End diff --
    
    Looks like we would like to avoid using util.isCordova() here. One can easily create single platform projects that do not maintain the traditional Cordova Project directory structure. Kind of like it was with plugman based workflow or with my latests attempts at the gulp based workflow.
    
    Myabe just pass the appWww as a parameter to this function, and for now as a compatibility feature, get it from util.isCordova() if it's not provided.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@cordova.apache.org
For additional commands, e-mail: dev-help@cordova.apache.org


[GitHub] cordova-lib pull request: Draft implementation for Unified platfor...

Posted by kamrik <gi...@git.apache.org>.
Github user kamrik commented on a diff in the pull request:

    https://github.com/apache/cordova-lib/pull/226#discussion_r31048534
  
    --- Diff: cordova-lib/src/cordova/metadata/PlatformHandler.js ---
    @@ -0,0 +1,100 @@
    +/**
    +    Licensed to the Apache Software Foundation (ASF) under one
    +    or more contributor license agreements.  See the NOTICE file
    +    distributed with this work for additional information
    +    regarding copyright ownership.  The ASF licenses this file
    +    to you under the Apache License, Version 2.0 (the
    +    "License"); you may not use this file except in compliance
    +    with the License.  You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +    Unless required by applicable law or agreed to in writing,
    +    software distributed under the License is distributed on an
    +    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    +    KIND, either express or implied.  See the License for the
    +    specific language governing permissions and limitations
    +    under the License.
    +*/
    +
    +/* jshint sub:true */
    +
    +'use strict';
    +
    +var path = require('path');
    +var shell = require('shelljs');
    +var util = require('../util');
    +var ParserHelper = require('./parserhelper/ParserHelper');
    +
    +/**
    + * Base module for platform parsers
    + *
    + * @param {String} [platform]    Platform name (e.g. android)
    + * @param {String} [projectPath] path/to/platform/project
    + */
    +function PlatformHandler (platform, projectPath) {
    +
    +    this.platform = platform || '';
    +    this.root = this.path = projectPath || '';
    +
    +    // Extend with a ParserHelper instance
    +    Object.defineProperty(this, 'helper', {
    +        value: new ParserHelper(this.platform),
    +        enumerable: true,
    +        configurable: false,
    +        writable: false
    --- End diff --
    
    The writeable/configurable:false, has the tendency to interfere with jasmine spies which causes our tests to fail with very obscure error messages. Just in case you encounter such errors, otherwise I'm all for leaving this as false. 


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@cordova.apache.org
For additional commands, e-mail: dev-help@cordova.apache.org


[GitHub] cordova-lib pull request: Draft implementation for Unified platfor...

Posted by vladimir-kotikov <gi...@git.apache.org>.
Github user vladimir-kotikov commented on a diff in the pull request:

    https://github.com/apache/cordova-lib/pull/226#discussion_r31134829
  
    --- Diff: cordova-lib/src/cordova/metadata/PlatformHandler.js ---
    @@ -0,0 +1,100 @@
    +/**
    +    Licensed to the Apache Software Foundation (ASF) under one
    +    or more contributor license agreements.  See the NOTICE file
    +    distributed with this work for additional information
    +    regarding copyright ownership.  The ASF licenses this file
    +    to you under the Apache License, Version 2.0 (the
    +    "License"); you may not use this file except in compliance
    +    with the License.  You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +    Unless required by applicable law or agreed to in writing,
    +    software distributed under the License is distributed on an
    +    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    +    KIND, either express or implied.  See the License for the
    +    specific language governing permissions and limitations
    +    under the License.
    +*/
    +
    +/* jshint sub:true */
    +
    +'use strict';
    +
    +var path = require('path');
    +var shell = require('shelljs');
    +var util = require('../util');
    +var ParserHelper = require('./parserhelper/ParserHelper');
    +
    +/**
    + * Base module for platform parsers
    + *
    + * @param {String} [platform]    Platform name (e.g. android)
    + * @param {String} [projectPath] path/to/platform/project
    + */
    +function PlatformHandler (platform, projectPath) {
    +
    +    this.platform = platform || '';
    +    this.root = this.path = projectPath || '';
    +
    +    // Extend with a ParserHelper instance
    +    Object.defineProperty(this, 'helper', {
    +        value: new ParserHelper(this.platform),
    +        enumerable: true,
    +        configurable: false,
    +        writable: false
    --- End diff --
    
    We can always change behavior of `parser` if we'll have any problems later so i would prefer to leave it as-is.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@cordova.apache.org
For additional commands, e-mail: dev-help@cordova.apache.org


[GitHub] cordova-lib pull request: Draft implementation for Unified platfor...

Posted by vladimir-kotikov <gi...@git.apache.org>.
Github user vladimir-kotikov commented on a diff in the pull request:

    https://github.com/apache/cordova-lib/pull/226#discussion_r31134853
  
    --- Diff: cordova-lib/src/cordova/metadata/PlatformHandler.js ---
    @@ -0,0 +1,100 @@
    +/**
    +    Licensed to the Apache Software Foundation (ASF) under one
    +    or more contributor license agreements.  See the NOTICE file
    +    distributed with this work for additional information
    +    regarding copyright ownership.  The ASF licenses this file
    +    to you under the Apache License, Version 2.0 (the
    +    "License"); you may not use this file except in compliance
    +    with the License.  You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +    Unless required by applicable law or agreed to in writing,
    +    software distributed under the License is distributed on an
    +    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    +    KIND, either express or implied.  See the License for the
    +    specific language governing permissions and limitations
    +    under the License.
    +*/
    +
    +/* jshint sub:true */
    +
    +'use strict';
    +
    +var path = require('path');
    +var shell = require('shelljs');
    +var util = require('../util');
    +var ParserHelper = require('./parserhelper/ParserHelper');
    +
    +/**
    + * Base module for platform parsers
    + *
    + * @param {String} [platform]    Platform name (e.g. android)
    + * @param {String} [projectPath] path/to/platform/project
    + */
    +function PlatformHandler (platform, projectPath) {
    +
    +    this.platform = platform || '';
    +    this.root = this.path = projectPath || '';
    +
    +    // Extend with a ParserHelper instance
    +    Object.defineProperty(this, 'helper', {
    +        value: new ParserHelper(this.platform),
    +        enumerable: true,
    +        configurable: false,
    +        writable: false
    +    });
    +}
    +
    +/**
    + * Base implementation for getConfigXml. Assumes that config.xml
    + * is placed at the root of project.
    + * @return {String} Path to platform's config.xml file
    + */
    +PlatformHandler.prototype.getConfigXml = function() {
    +    return  path.join(this.root, 'config.xml');
    +};
    +
    +/**
    + * Base implementation for getWwwDir. Assumes that
    + * www directory is placed at the root of project.
    + * @return {String} Path to platform's www directory.
    + */
    +PlatformHandler.prototype.getWwwDir = function() {
    +    return  path.join(this.root, 'www');
    +};
    +
    +/**
    + * Base implementation for getCordovaJsSrc. Assumes that cordova.js
    + * source is placed at the root of platform's source dir.
    + * @return {String} Path to platform's 'cordova-js-src' folder.
    + */
    +PlatformHandler.prototype.getCordovaJsSrc = function(platformSource) {
    +    return path.resolve(platformSource, 'cordova-js-src');
    +};
    +
    +/**
    + * Base implementation for updateWww.
    + */
    +PlatformHandler.prototype.updateWww = function() {
    +    var projectRoot = util.isCordova(this.root);
    +    var appWww = util.projectWww(projectRoot);
    +    var platformWww = path.join(this.root, 'platform_www');
    --- End diff --
    
    Updated.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@cordova.apache.org
For additional commands, e-mail: dev-help@cordova.apache.org


[GitHub] cordova-lib pull request: Draft implementation for Unified platfor...

Posted by vladimir-kotikov <gi...@git.apache.org>.
Github user vladimir-kotikov closed the pull request at:

    https://github.com/apache/cordova-lib/pull/226


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@cordova.apache.org
For additional commands, e-mail: dev-help@cordova.apache.org


[GitHub] cordova-lib pull request: Draft implementation for Unified platfor...

Posted by vladimir-kotikov <gi...@git.apache.org>.
Github user vladimir-kotikov commented on the pull request:

    https://github.com/apache/cordova-lib/pull/226#issuecomment-105921556
  
    Yeah, reworking tests will be painful.
    BTW, i'm still wondering that so small number of tests is became failing.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@cordova.apache.org
For additional commands, e-mail: dev-help@cordova.apache.org