Merge pull request #147 from drapanjanas/fix-bug-in-do-upgrade

Fix bug in do upgrade
This commit is contained in:
Artūr Girenko 2017-10-08 20:47:46 +02:00 committed by GitHub
commit b62774926a

View File

@ -105,7 +105,6 @@ platformMeta =
'wpf': 'wpf':
name: "WPF" name: "WPF"
sources: ["core.cljs"] sources: ["core.cljs"]
platforms = []
log = (s, color = 'green') -> log = (s, color = 'green') ->
console.log chalk[color] s console.log chalk[color] s
@ -202,7 +201,7 @@ ensureXcode = (cb) ->
if message.match /type.+xcodebuild/i if message.match /type.+xcodebuild/i
logErr 'Xcode Command Line Tools are required' logErr 'Xcode Command Line Tools are required'
generateConfig = (interfaceName, projName) -> generateConfig = (interfaceName, platforms, projName) ->
log 'Creating Re-Natal config' log 'Creating Re-Natal config'
config = config =
name: projName name: projName
@ -262,7 +261,7 @@ readLocalConfig = () ->
local = readConfig '.re-natal.local', false local = readConfig '.re-natal.local', false
verifyConfig merge(global, local) verifyConfig merge(global, local)
scanImageDir = (dir) -> scanImageDir = (dir, platforms) ->
fnames = fs.readdirSync(dir) fnames = fs.readdirSync(dir)
.map (fname) -> "#{dir}/#{fname}" .map (fname) -> "#{dir}/#{fname}"
.filter (path) -> fs.statSync(path).isFile() .filter (path) -> fs.statSync(path).isFile()
@ -281,10 +280,10 @@ removeExcludeFiles = (file) ->
res = excludedFileNames.map (ex) -> (file.indexOf ex) == -1 res = excludedFileNames.map (ex) -> (file.indexOf ex) == -1
true in res true in res
scanImages = (dirs) -> scanImages = (dirs, platforms) ->
imgs = [] imgs = []
for dir in dirs for dir in dirs
imgs = imgs.concat(scanImageDir(dir)); imgs = imgs.concat(scanImageDir(dir, platforms));
imgs imgs
resolveAndroidDevHost = (deviceType) -> resolveAndroidDevHost = (deviceType) ->
@ -346,7 +345,7 @@ generateConfigNs = (config) ->
template = hb.compile(readFile "#{resources}/config.cljs") template = hb.compile(readFile "#{resources}/config.cljs")
fs.writeFileSync("#{config.envRoots.dev}/env/config.cljs", template(config)) fs.writeFileSync("#{config.envRoots.dev}/env/config.cljs", template(config))
copyDevEnvironmentFiles = (interfaceName, projNameHyph, projName, devEnvRoot) -> copyDevEnvironmentFiles = (interfaceName, platforms, projNameHyph, projName, devEnvRoot) ->
userNsPath = "#{devEnvRoot}/user.clj" userNsPath = "#{devEnvRoot}/user.clj"
fs.copySync("#{resources}/user.clj", userNsPath) fs.copySync("#{resources}/user.clj", userNsPath)
@ -360,7 +359,7 @@ copyProdEnvironmentFilesForPlatform = (platform, interfaceName, projNameHyph, pr
fs.copySync("#{resources}/#{cljsDir}/main_prod.cljs", mainProdPath) fs.copySync("#{resources}/#{cljsDir}/main_prod.cljs", mainProdPath)
edit mainProdPath, [[projNameHyphRx, projNameHyph], [projNameRx, projName], [platformRx, platform]] edit mainProdPath, [[projNameHyphRx, projNameHyph], [projNameRx, projName], [platformRx, platform]]
copyProdEnvironmentFiles = (interfaceName, projNameHyph, projName, prodEnvRoot) -> copyProdEnvironmentFiles = (interfaceName, platforms, projNameHyph, projName, prodEnvRoot) ->
for platform in platforms for platform in platforms
copyProdEnvironmentFilesForPlatform platform, interfaceName, projNameHyph, projName, prodEnvRoot copyProdEnvironmentFilesForPlatform platform, interfaceName, projNameHyph, projName, prodEnvRoot
@ -368,7 +367,7 @@ copyFigwheelBridge = (projNameUs) ->
fs.copySync("#{resources}/figwheel-bridge.js", "./figwheel-bridge.js") fs.copySync("#{resources}/figwheel-bridge.js", "./figwheel-bridge.js")
edit "figwheel-bridge.js", [[projNameUsRx, projNameUs]] edit "figwheel-bridge.js", [[projNameUsRx, projNameUs]]
updateGitIgnore = () -> updateGitIgnore = (platforms) ->
fs.appendFileSync(".gitignore", "\n# Generated by re-natal\n#\n") fs.appendFileSync(".gitignore", "\n# Generated by re-natal\n#\n")
indexFiles = platforms.map (platform) -> "index.#{platform}.js" indexFiles = platforms.map (platform) -> "index.#{platform}.js"
@ -413,7 +412,7 @@ copySrcFilesForPlatform = (platform, interfaceName, projName, projNameUs, projNa
fs.copySync("#{resources}/#{cljsDir}/#{fileName}", path) fs.copySync("#{resources}/#{cljsDir}/#{fileName}", path)
edit path, [[projNameHyphRx, projNameHyph], [projNameRx, projName], [platformRx, platform]] edit path, [[projNameHyphRx, projNameHyph], [projNameRx, projName], [platformRx, platform]]
copySrcFiles = (interfaceName, projName, projNameUs, projNameHyph) -> copySrcFiles = (interfaceName, platforms, projName, projNameUs, projNameHyph) ->
cljsDir = interfaceConf[interfaceName].cljsDir cljsDir = interfaceConf[interfaceName].cljsDir
fileNames = interfaceConf[interfaceName].sources.common; fileNames = interfaceConf[interfaceName].sources.common;
@ -444,7 +443,7 @@ creteBuildConfigs = (profiles, platforms) ->
builds[profile] = configs.join("\n") builds[profile] = configs.join("\n")
builds builds
copyProjectClj = (interfaceName, projNameHyph) -> copyProjectClj = (interfaceName, platforms, projNameHyph) ->
fs.copySync("#{resources}/project.clj", "project.clj") fs.copySync("#{resources}/project.clj", "project.clj")
deps = interfaceConf[interfaceName].deps.join("\n") deps = interfaceConf[interfaceName].deps.join("\n")
@ -487,7 +486,7 @@ updateProjectClj = (platform) ->
[buildProfiles.advanced.profilesRx, builds.advanced] [buildProfiles.advanced.profilesRx, builds.advanced]
] ]
init = (interfaceName, projName) -> init = (interfaceName, projName, platforms) ->
if projName.toLowerCase() is 'react' or !projName.match validNameRx if projName.toLowerCase() is 'react' or !projName.match validNameRx
logErr 'Invalid project name. Use an alphanumeric CamelCase name.' logErr 'Invalid project name. Use an alphanumeric CamelCase name.'
@ -515,12 +514,12 @@ init = (interfaceName, projName) ->
corePath = "src/#{projNameUs}/core.clj" corePath = "src/#{projNameUs}/core.clj"
fs.unlinkSync corePath fs.unlinkSync corePath
copyProjectClj(interfaceName, projNameHyph) copyProjectClj(interfaceName, platforms, projNameHyph)
copySrcFiles(interfaceName, projName, projNameUs, projNameHyph) copySrcFiles(interfaceName, platforms, projName, projNameUs, projNameHyph)
copyDevEnvironmentFiles(interfaceName, projNameHyph, projName, defaultEnvRoots.dev) copyDevEnvironmentFiles(interfaceName, platforms, projNameHyph, projName, defaultEnvRoots.dev)
copyProdEnvironmentFiles(interfaceName, projNameHyph, projName, defaultEnvRoots.prod) copyProdEnvironmentFiles(interfaceName, platforms, projNameHyph, projName, defaultEnvRoots.prod)
fs.copySync("#{resources}/images", "./images") fs.copySync("#{resources}/images", "./images")
@ -561,9 +560,9 @@ init = (interfaceName, projName) ->
\"require('react-native-windows/local-cli/generate-wpf')('.', '#{projName}', '#{projName}')\" \"require('react-native-windows/local-cli/generate-wpf')('.', '#{projName}', '#{projName}')\"
" "
updateGitIgnore() updateGitIgnore(platforms)
config = generateConfig(interfaceName, projName) config = generateConfig(interfaceName, platforms, projName)
generateConfigNs(config); generateConfigNs(config);
copyFigwheelBridge(projNameUs) copyFigwheelBridge(projNameUs)
@ -725,7 +724,8 @@ platformModulesAndImages = (config, platform) ->
requires = buildRequireByPlatformMap() requires = buildRequireByPlatformMap()
requires.common.concat(requires[platform]) requires.common.concat(requires[platform])
else else
images = scanImages(config.imageDirs).map (fname) -> './' + fname; platforms = Object.keys config.platforms
images = scanImages(config.imageDirs, platforms).map (fname) -> './' + fname;
modulesAndImages = config.modules.concat images; modulesAndImages = config.modules.concat images;
if typeof config.platforms[platform].modules is 'undefined' if typeof config.platforms[platform].modules is 'undefined'
modulesAndImages modulesAndImages
@ -774,6 +774,7 @@ doUpgrade = (config) ->
projName = config.name projName = config.name
projNameHyph = projName.replace(camelRx, '$1-$2').toLowerCase() projNameHyph = projName.replace(camelRx, '$1-$2').toLowerCase()
projNameUs = toUnderscored projName projNameUs = toUnderscored projName
platforms = Object.keys config.platforms
unless config.interface unless config.interface
config.interface = defaultInterface config.interface = defaultInterface
@ -819,8 +820,8 @@ doUpgrade = (config) ->
interfaceName = config.interface interfaceName = config.interface
envRoots = config.envRoots envRoots = config.envRoots
copyDevEnvironmentFiles(interfaceName, projNameHyph, projName, envRoots.dev) copyDevEnvironmentFiles(interfaceName, platforms, projNameHyph, projName, envRoots.dev)
copyProdEnvironmentFiles(interfaceName, projNameHyph, projName, envRoots.prod) copyProdEnvironmentFiles(interfaceName, platforms, projNameHyph, projName, envRoots.prod)
generateConfigNs(config); generateConfigNs(config);
log "upgraded files in #{envRoots.dev} and #{envRoots.prod} " log "upgraded files in #{envRoots.dev} and #{envRoots.prod} "
@ -899,13 +900,12 @@ cli.command 'init <name>'
''' '''
unless interfaceConf[cmd.interface] unless interfaceConf[cmd.interface]
logErr "Unsupported React interface: #{cmd.interface}, one of [#{interfaceNames}] was expected." logErr "Unsupported React interface: #{cmd.interface}, one of [#{interfaceNames}] was expected."
platforms.push 'ios' platforms = ['ios', 'android']
platforms.push 'android'
if cmd.uwp? if cmd.uwp?
platforms.push 'windows' platforms.push 'windows'
if cmd.wpf? if cmd.wpf?
platforms.push 'wpf' platforms.push 'wpf'
ensureFreePort -> init(cmd.interface, name) ensureFreePort -> init(cmd.interface, name, platforms)
cli.command 'upgrade' cli.command 'upgrade'
.description 'upgrades project files to current installed version of re-natal (the upgrade of re-natal itself is done via npm)' .description 'upgrades project files to current installed version of re-natal (the upgrade of re-natal itself is done via npm)'