mirror of
https://github.com/FoggedLens/iD.git
synced 2026-02-12 16:52:50 +00:00
Eliminate symlinks in repository - shelljs/shx can make them
(closes #3545)
This commit is contained in:
7
.gitignore
vendored
7
.gitignore
vendored
@@ -8,3 +8,10 @@ dist/mapillary-js/
|
||||
node_modules/
|
||||
npm-debug.log
|
||||
transifex.auth
|
||||
|
||||
# autogenerated symlinks
|
||||
land.html
|
||||
img
|
||||
css/img
|
||||
test/css
|
||||
test/img
|
||||
|
||||
@@ -44,10 +44,9 @@ Come on in, the water's lovely. More help? Ping `jfire` or `bhousel` on:
|
||||
To run the current development version of iD on your own computer:
|
||||
|
||||
1. Create a local `git clone` of the project, then `cd` into the project folder
|
||||
2. (Windows Only) Run `fixWinSymlinks.bat`. This script will prompt for Administrator rights. see also: http://stackoverflow.com/questions/5917249/git-symlinks-in-windows
|
||||
3. Run `npm install` (this will run the `prepublish` script that builds everything)
|
||||
4. Run `npm start`
|
||||
5. Open `http://localhost:8080/` in a web browser
|
||||
2. Run `npm install` (this will run the `prepublish` script that builds everything)
|
||||
3. Run `npm start`
|
||||
4. Open `http://localhost:8080/` in a web browser
|
||||
|
||||
For guidance on building a packaged version, running tests, and contributing to
|
||||
development, see [CONTRIBUTING.md](CONTRIBUTING.md).
|
||||
|
||||
55
build.js
55
build.js
@@ -1,15 +1,34 @@
|
||||
/* eslint-disable no-console */
|
||||
|
||||
var _ = require('lodash');
|
||||
var fs = require('fs');
|
||||
var path = require('path');
|
||||
var glob = require('glob');
|
||||
var YAML = require('js-yaml');
|
||||
var jsonschema = require('jsonschema');
|
||||
const _ = require('lodash');
|
||||
const fs = require('fs');
|
||||
const glob = require('glob');
|
||||
const jsonschema = require('jsonschema');
|
||||
const path = require('path');
|
||||
const shell = require('shelljs');
|
||||
const YAML = require('js-yaml');
|
||||
|
||||
const fieldSchema = require('./data/presets/schema/field.json');
|
||||
const presetSchema = require('./data/presets/schema/preset.json');
|
||||
const suggestions = require('name-suggestion-index/name-suggestions.json');
|
||||
|
||||
|
||||
// Create symlinks if necessary.. { 'target': 'source' }
|
||||
const symlinks = {
|
||||
'land.html': 'dist/land.html',
|
||||
'img': 'dist/img',
|
||||
'css/img': '../dist/img',
|
||||
'test/css': '../css',
|
||||
'test/img': '../dist/img'
|
||||
};
|
||||
|
||||
for (const target of Object.keys(symlinks)) {
|
||||
if (!shell.test('-L', target)) {
|
||||
console.log(`Creating symlink: ${target} -> ${symlinks[target]}`);
|
||||
shell.ln('-sf', symlinks[target], target);
|
||||
}
|
||||
}
|
||||
|
||||
var fieldSchema = require('./data/presets/schema/field.json');
|
||||
var presetSchema = require('./data/presets/schema/preset.json');
|
||||
var suggestions = require('name-suggestion-index/name-suggestions.json');
|
||||
|
||||
// Translation strings
|
||||
var tstrings = {
|
||||
@@ -20,12 +39,14 @@ var tstrings = {
|
||||
|
||||
|
||||
// Start clean
|
||||
unlink('data/presets/categories.json');
|
||||
unlink('data/presets/fields.json');
|
||||
unlink('data/presets/presets.json');
|
||||
unlink('data/presets.yaml');
|
||||
unlink('data/taginfo.json');
|
||||
unlink('dist/locales/en.json');
|
||||
shell.rm('-f', [
|
||||
'data/presets/categories.json',
|
||||
'data/presets/fields.json',
|
||||
'data/presets/presets.json',
|
||||
'data/presets.yaml',
|
||||
'data/taginfo.json',
|
||||
'dist/locales/en.json'
|
||||
]);
|
||||
|
||||
var categories = generateCategories();
|
||||
var fields = generateFields();
|
||||
@@ -54,10 +75,6 @@ fs.writeFileSync('dist/locales/en.json', JSON.stringify(en, null, 4));
|
||||
process.exit();
|
||||
|
||||
|
||||
function unlink(f) {
|
||||
try { fs.unlinkSync(f); } catch (e) { /* noop */ }
|
||||
}
|
||||
|
||||
function read(f) {
|
||||
return JSON.parse(fs.readFileSync(f, 'utf8'));
|
||||
}
|
||||
|
||||
@@ -1,91 +0,0 @@
|
||||
@echo.
|
||||
@echo For converting Git symlink files to Windows file symlinks.
|
||||
@echo * Run in repository root as Administrator.
|
||||
@echo * Handling of folder symlinks is not implemented.
|
||||
@echo * Intended for windows versions Vista and above (Win 7,8)
|
||||
@echo.
|
||||
@echo Thanks to: http://stackoverflow.com/a/5930443/1031870
|
||||
@echo v1.02 (c) 2015 Robert Benko (Quazistax), License: MIT
|
||||
@echo.
|
||||
|
||||
@echo off
|
||||
pushd "%~dp0"
|
||||
setlocal EnableDelayedExpansion
|
||||
call :raiseUACIfNotAdmin || exit /B 1
|
||||
for /f "tokens=3,*" %%e in ('git ls-files -s ^| findstr /R /C:"^120000"') do (
|
||||
call :processFirstLine %%f
|
||||
)
|
||||
REM pause
|
||||
goto :eof
|
||||
|
||||
:processFirstLine
|
||||
@echo.
|
||||
@echo FILE: %1
|
||||
|
||||
dir "%~f1" | find "<SYMLINK>" >NUL && (
|
||||
@echo FILE already is a symlink
|
||||
goto :eof
|
||||
)
|
||||
|
||||
for /f "usebackq tokens=*" %%l in ("%~f1") do (
|
||||
@echo LINK TO: %%l
|
||||
|
||||
del "%~f1"
|
||||
if not !ERRORLEVEL! == 0 (
|
||||
@echo FAILED: del
|
||||
goto :eof
|
||||
)
|
||||
|
||||
setlocal
|
||||
call :expandRelative linkto "%1" "%%l"
|
||||
mklink "%~f1" "!linkto!"
|
||||
endlocal
|
||||
if not !ERRORLEVEL! == 0 (
|
||||
@echo FAILED: mklink
|
||||
@echo reverting deletion...
|
||||
git checkout -- "%~f1"
|
||||
goto :eof
|
||||
)
|
||||
|
||||
git update-index --assume-unchanged "%1"
|
||||
if not !ERRORLEVEL! == 0 (
|
||||
@echo FAILED: git update-index --assume-unchanged
|
||||
goto :eof
|
||||
)
|
||||
@echo SUCCESS
|
||||
goto :eof
|
||||
)
|
||||
goto :eof
|
||||
|
||||
:: param1 = result variable
|
||||
:: param2 = reference path from which relative will be resolved
|
||||
:: param3 = relative path
|
||||
:expandRelative
|
||||
pushd .
|
||||
cd "%~dp2"
|
||||
set %1=%~f3
|
||||
popd
|
||||
goto :eof
|
||||
|
||||
:raiseUACIfNotAdmin
|
||||
:: Quick test for Windows generation: UAC aware or not ; all OS before NT4 ignored for simplicity
|
||||
:: Original from: http://stackoverflow.com/a/14729312/1031870
|
||||
|
||||
(ver | findstr /IL "5." > NUL || ver | findstr /IL "4." > NUL) && (
|
||||
@echo ERROR: Symlinks are not supported on this version of Windows.
|
||||
exit /B 1
|
||||
)
|
||||
|
||||
:: Test if Admin
|
||||
call net session >NUL 2>&1
|
||||
if not !ERRORLEVEL! == 0 (
|
||||
:: Start batch again with UAC
|
||||
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
|
||||
echo UAC.ShellExecute "cmd.exe", "/K ""cd /d %~dp0 && %~s0""", "%~dp0", "runas", 1 >> "%temp%\getadmin.vbs"
|
||||
@echo Requesting administrative privileges...
|
||||
"%temp%\getadmin.vbs"
|
||||
del "%temp%\getadmin.vbs"
|
||||
exit /B 2
|
||||
)
|
||||
exit /B 0
|
||||
goto :eof
|
||||
Reference in New Issue
Block a user