Skip to content
This repository has been archived by the owner on Jan 13, 2018. It is now read-only.

пути GNUMakefile для windows #33

Closed
zemd opened this issue Feb 6, 2012 · 4 comments
Closed

пути GNUMakefile для windows #33

zemd opened this issue Feb 6, 2012 · 4 comments
Labels

Comments

@zemd
Copy link

zemd commented Feb 6, 2012

в файле utils.js есть функция:

exports.isPath = function(str) {
return str.indexOf(PATH.dirSep) !== -1;
};

Она определяет является ли путём строка. Так вот в windows окружении PATH.dirSep == '' , а GNUMakefile все пути заданы с косой чертой '/' и при сборке выскакивают ошибки о не найденых файлах и т.п.

Принимая в качестве разделителя косую черту nodejs нормально её интерпретирует и в винде, поэтому может имеет смысл как-то форсировать именно её при возможности - так скрипты сборки будут кроссплатформеней писаться?

ps чтобы было понятнее вопрос относится к GNUMakefile из bem-method - но детали реализации тут, поэтому и сюда запостил.

@veged
Copy link
Contributor

veged commented Feb 6, 2012

более-менее нормальная кроссплатформенность nodejs началась только с 0.6.x -- поэтому мы пока не успели заняться полной поддержкой Windows в bem-tools (строго говоря, мы ПОКА не гарантируем работу на Windows, оно иногда "случайно" само работает)

спасибо за репорт -- постараемся его учесть

@zemd
Copy link
Author

zemd commented Mar 10, 2012

решение наверное очень простое в таких случаях - функции PATH.normalize и PATH.resolve достаточно, чтобы забыть о том в какой среде запускается код и не обращать внимание на то с каким слешем поступили на вход пути.

как вариант эта функция может быть написана как
PATH.normalize(str).indexOf(PATH.dirSep) !== -1

@ghost ghost assigned arikon Mar 10, 2012
@arikon
Copy link
Contributor

arikon commented Mar 14, 2012

@Hunterman можешь проверить? По рукой сейчас нет машины с windows.

@zemd
Copy link
Author

zemd commented Mar 15, 2012

//
//exports.isPath = function(str) {
// return PATH.normalize(str).indexOf(PATH.dirSep) !== -1;
//};
require('./util').isPath('C:/path/') ? console.log('YES') : console.log('NO');

YES

//
//exports.isPath = function(str) {
// return str.indexOf(PATH.dirSep) !== -1;
//};
require('./util').isPath('C:/path/') ? console.log('YES') : console.log('NO');

NO

arikon added a commit to arikon/bem-tools that referenced this issue Mar 15, 2012
@arikon arikon closed this as completed Mar 15, 2012
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

3 participants