12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- /**
- 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.
- */
-
- var fs = require('fs-extra');
- var path = require('path');
-
- function isRootDir (dir) {
- if (fs.existsSync(path.join(dir, 'www'))) {
- if (fs.existsSync(path.join(dir, 'config.xml'))) {
- // For sure is.
- if (fs.existsSync(path.join(dir, 'platforms'))) {
- return 2;
- } else {
- return 1;
- }
- }
- // Might be (or may be under platforms/).
- if (fs.existsSync(path.join(dir, 'www', 'config.xml'))) {
- return 1;
- }
- }
- return 0;
- }
-
- // Runs up the directory chain looking for a .cordova directory.
- // IF it is found we are in a Cordova project.
- // Omit argument to use CWD.
- function isCordova (dir) {
- if (!dir) {
- // Prefer PWD over cwd so that symlinked dirs within your PWD work correctly (CB-5687).
- var pwd = process.env.PWD;
- var cwd = process.cwd();
- if (pwd && pwd !== cwd && pwd !== 'undefined') {
- return isCordova(pwd) || isCordova(cwd);
- }
- return isCordova(cwd);
- }
- var bestReturnValueSoFar = false;
- for (var i = 0; i < 1000; ++i) {
- var result = isRootDir(dir);
- if (result === 2) {
- return dir;
- }
- if (result === 1) {
- bestReturnValueSoFar = dir;
- }
- var parentDir = path.normalize(path.join(dir, '..'));
- // Detect fs root.
- if (parentDir === dir) {
- return bestReturnValueSoFar;
- }
- dir = parentDir;
- }
- console.error('Hit an unhandled case in CordovaCheck.isCordova');
- return false;
- }
-
- module.exports = {
- findProjectRoot: isCordova
- };
|