From 96883a0fdd56bc9fea581db1a65024e680d6d78c Mon Sep 17 00:00:00 2001 From: Jason Karns Date: Sat, 1 Mar 2014 13:20:58 -0500 Subject: [PATCH 01/13] Check lineman-config for entrypoint before writing --- lib/initializes-app-entrypoint.coffee | 10 ++++++---- package.json | 4 +++- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/initializes-app-entrypoint.coffee b/lib/initializes-app-entrypoint.coffee index 40c770d..373a29e 100644 --- a/lib/initializes-app-entrypoint.coffee +++ b/lib/initializes-app-entrypoint.coffee @@ -1,5 +1,7 @@ fs = require('fs') path = require('path') +sh = require('execSync') +glob = require('glob') findsRoot = require('find-root-package') module.exports = @@ -15,9 +17,9 @@ isInstalledAsDependency = (dir, topDir) -> class EntryPoint - constructor: (@projectDir, @name='entrypoint') -> - @js = "app/js/#{@name}.js" - @coffee = "app/js/#{@name}.coffee" + constructor: (@projectDir, name='entrypoint') -> + @pattern = sh.exec("cd #{@projectDir} && lineman config --process files.browserify.entrypoint").stdout + @coffee = "app/js/#{name}.coffee" ensureExists: -> unless @exists() @@ -25,7 +27,7 @@ class EntryPoint fs.writeFileSync path.join(@projectDir, @coffee), @contents exists: -> - fs.existsSync(path.join(@projectDir, @js)) || fs.existsSync(path.join(@projectDir, @coffee)) + !!glob.sync(path.join(@projectDir, @pattern)).length contents: """ window._ = require("underscore") diff --git a/package.json b/package.json index a73912d..0ce0b55 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,9 @@ "coffeeify": "~0.5.2", "underscore": "~1.6.0", "coffee-script": "~1.6.3", - "find-root-package": "0.0.1" + "find-root-package": "0.0.1", + "glob": "~3.2.9", + "execSync": "~1.0.1-pre" }, "peerDependencies": { "coffeeify": "~0.5.2" From f4861a52d2e5a0f61bb38c17fbafe3e44bd82f0f Mon Sep 17 00:00:00 2001 From: Jason Karns Date: Sat, 1 Mar 2014 14:37:03 -0500 Subject: [PATCH 02/13] change working directory to project root before doing all the things --- lib/initializes-app-entrypoint.coffee | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/initializes-app-entrypoint.coffee b/lib/initializes-app-entrypoint.coffee index 373a29e..87e6902 100644 --- a/lib/initializes-app-entrypoint.coffee +++ b/lib/initializes-app-entrypoint.coffee @@ -1,5 +1,4 @@ fs = require('fs') -path = require('path') sh = require('execSync') glob = require('glob') findsRoot = require('find-root-package') @@ -18,16 +17,17 @@ isInstalledAsDependency = (dir, topDir) -> class EntryPoint constructor: (@projectDir, name='entrypoint') -> - @pattern = sh.exec("cd #{@projectDir} && lineman config --process files.browserify.entrypoint").stdout - @coffee = "app/js/#{name}.coffee" + process.chdir @projectDir + @configuredPattern = sh.exec("lineman config --process files.browserify.entrypoint").stdout + @default = "app/js/#{name}.coffee" ensureExists: -> - unless @exists() - console.log("Writing a default '#{@coffee}' file into '#{@projectDir}'") - fs.writeFileSync path.join(@projectDir, @coffee), @contents + unless @exists(@configuredPattern) + console.log("Writing a default '#{@default}' file into '#{@projectDir}'") + fs.writeFileSync @default, @contents - exists: -> - !!glob.sync(path.join(@projectDir, @pattern)).length + exists: (pattern) -> + !!glob.sync(pattern).length contents: """ window._ = require("underscore") From 5b775e91ac3bac2a1e4e4537ec5eef3004b21d96 Mon Sep 17 00:00:00 2001 From: Jason Karns Date: Sat, 1 Mar 2014 14:37:59 -0500 Subject: [PATCH 03/13] lineman is available so grab grunt and use its file stuff --- lib/initializes-app-entrypoint.coffee | 4 ++-- package.json | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/initializes-app-entrypoint.coffee b/lib/initializes-app-entrypoint.coffee index 87e6902..c4b5750 100644 --- a/lib/initializes-app-entrypoint.coffee +++ b/lib/initializes-app-entrypoint.coffee @@ -1,7 +1,7 @@ fs = require('fs') sh = require('execSync') -glob = require('glob') findsRoot = require('find-root-package') +grunt = require('lineman').grunt module.exports = initialize: (dir = process.cwd()) -> @@ -27,7 +27,7 @@ class EntryPoint fs.writeFileSync @default, @contents exists: (pattern) -> - !!glob.sync(pattern).length + !!grunt.file.expand(pattern).length contents: """ window._ = require("underscore") diff --git a/package.json b/package.json index 0ce0b55..009d7c1 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,6 @@ "underscore": "~1.6.0", "coffee-script": "~1.6.3", "find-root-package": "0.0.1", - "glob": "~3.2.9", "execSync": "~1.0.1-pre" }, "peerDependencies": { From 14e6322a86af90940e7e8bea52505f8defff081d Mon Sep 17 00:00:00 2001 From: Jason Karns Date: Sat, 1 Mar 2014 14:41:41 -0500 Subject: [PATCH 04/13] grunt's available, no need for fs --- lib/initializes-app-entrypoint.coffee | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/initializes-app-entrypoint.coffee b/lib/initializes-app-entrypoint.coffee index c4b5750..97eed01 100644 --- a/lib/initializes-app-entrypoint.coffee +++ b/lib/initializes-app-entrypoint.coffee @@ -1,7 +1,6 @@ -fs = require('fs') -sh = require('execSync') findsRoot = require('find-root-package') grunt = require('lineman').grunt +sh = require('execSync') module.exports = initialize: (dir = process.cwd()) -> @@ -24,7 +23,7 @@ class EntryPoint ensureExists: -> unless @exists(@configuredPattern) console.log("Writing a default '#{@default}' file into '#{@projectDir}'") - fs.writeFileSync @default, @contents + grunt.file.write @default, @contents exists: (pattern) -> !!grunt.file.expand(pattern).length From 6804b9e607d2788eb5753083bf3dcdafb8fe8489 Mon Sep 17 00:00:00 2001 From: Jason Karns Date: Sat, 1 Mar 2014 14:43:29 -0500 Subject: [PATCH 05/13] give affirmative log message when file already exists --- lib/initializes-app-entrypoint.coffee | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/initializes-app-entrypoint.coffee b/lib/initializes-app-entrypoint.coffee index 97eed01..b36a1fa 100644 --- a/lib/initializes-app-entrypoint.coffee +++ b/lib/initializes-app-entrypoint.coffee @@ -21,8 +21,11 @@ class EntryPoint @default = "app/js/#{name}.coffee" ensureExists: -> - unless @exists(@configuredPattern) - console.log("Writing a default '#{@default}' file into '#{@projectDir}'") + if @exists(@configuredPattern) + console.log "Entry point file '#{@configuredPattern}' already exists; skipping..." + + else + console.log("Writing a default entry point file '#{@default}' into '#{@projectDir}'") grunt.file.write @default, @contents exists: (pattern) -> From 59bd195b1764857e64dacfdf5845060df2d38803 Mon Sep 17 00:00:00 2001 From: Jason Karns Date: Sat, 1 Mar 2014 14:45:13 -0500 Subject: [PATCH 06/13] If the file doesn't exist, but entry point config has been modified, give warning message --- lib/initializes-app-entrypoint.coffee | 6 +++++- package.json | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/initializes-app-entrypoint.coffee b/lib/initializes-app-entrypoint.coffee index b36a1fa..93c3c73 100644 --- a/lib/initializes-app-entrypoint.coffee +++ b/lib/initializes-app-entrypoint.coffee @@ -1,5 +1,6 @@ findsRoot = require('find-root-package') grunt = require('lineman').grunt +minimatch = require('minimatch') sh = require('execSync') module.exports = @@ -24,10 +25,13 @@ class EntryPoint if @exists(@configuredPattern) console.log "Entry point file '#{@configuredPattern}' already exists; skipping..." - else + else if minimatch(@default, @configuredPattern) console.log("Writing a default entry point file '#{@default}' into '#{@projectDir}'") grunt.file.write @default, @contents + else + console.warn "Entry point configured as '#{@configuredPattern}' but no file exists" + exists: (pattern) -> !!grunt.file.expand(pattern).length diff --git a/package.json b/package.json index 009d7c1..c04dc56 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,8 @@ "underscore": "~1.6.0", "coffee-script": "~1.6.3", "find-root-package": "0.0.1", - "execSync": "~1.0.1-pre" + "execSync": "~1.0.1-pre", + "minimatch": "~0.2.14" }, "peerDependencies": { "coffeeify": "~0.5.2" From c6e04cd23ef7900f698836072037bcdb6c143e12 Mon Sep 17 00:00:00 2001 From: Jason Karns Date: Sat, 1 Mar 2014 14:50:06 -0500 Subject: [PATCH 07/13] refactor intention-revealing name --- lib/initializes-app-entrypoint.coffee | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/initializes-app-entrypoint.coffee b/lib/initializes-app-entrypoint.coffee index 93c3c73..98e0ebb 100644 --- a/lib/initializes-app-entrypoint.coffee +++ b/lib/initializes-app-entrypoint.coffee @@ -25,7 +25,7 @@ class EntryPoint if @exists(@configuredPattern) console.log "Entry point file '#{@configuredPattern}' already exists; skipping..." - else if minimatch(@default, @configuredPattern) + else if @configuredPatternIsDefault() console.log("Writing a default entry point file '#{@default}' into '#{@projectDir}'") grunt.file.write @default, @contents @@ -35,6 +35,9 @@ class EntryPoint exists: (pattern) -> !!grunt.file.expand(pattern).length + configuredPatternIsDefault: -> + minimatch(@default, @configuredPattern) + contents: """ window._ = require("underscore") require("./hello") From 006fa2f16b9289fab4ad6a10b89f18bdd894b0bc Mon Sep 17 00:00:00 2001 From: Jason Karns Date: Sat, 1 Mar 2014 15:29:32 -0500 Subject: [PATCH 08/13] renaming --- lib/initializes-app-entrypoint.coffee | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/initializes-app-entrypoint.coffee b/lib/initializes-app-entrypoint.coffee index 98e0ebb..adb63da 100644 --- a/lib/initializes-app-entrypoint.coffee +++ b/lib/initializes-app-entrypoint.coffee @@ -23,19 +23,19 @@ class EntryPoint ensureExists: -> if @exists(@configuredPattern) - console.log "Entry point file '#{@configuredPattern}' already exists; skipping..." + console.log "Entry point file '#{@configuredPattern}' already exists; nothing to do..." - else if @configuredPatternIsDefault() - console.log("Writing a default entry point file '#{@default}' into '#{@projectDir}'") + else if @isDefaultConfiguration() + console.log "Writing a default entry point file '#{@default}' into '#{@projectDir}'" grunt.file.write @default, @contents else console.warn "Entry point configured as '#{@configuredPattern}' but no file exists" exists: (pattern) -> - !!grunt.file.expand(pattern).length + !! grunt.file.expand(pattern).length - configuredPatternIsDefault: -> + isDefaultConfiguration: -> minimatch(@default, @configuredPattern) contents: """ From df1a634c772476966b1a3e17b9bc0629f8e620be Mon Sep 17 00:00:00 2001 From: Jason Karns Date: Sat, 1 Mar 2014 15:35:19 -0500 Subject: [PATCH 09/13] strip trailing whitespace from entrypoint config --- lib/initializes-app-entrypoint.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/initializes-app-entrypoint.coffee b/lib/initializes-app-entrypoint.coffee index adb63da..c36bd4e 100644 --- a/lib/initializes-app-entrypoint.coffee +++ b/lib/initializes-app-entrypoint.coffee @@ -18,7 +18,7 @@ class EntryPoint constructor: (@projectDir, name='entrypoint') -> process.chdir @projectDir - @configuredPattern = sh.exec("lineman config --process files.browserify.entrypoint").stdout + @configuredPattern = sh.exec("lineman config --process files.browserify.entrypoint").stdout.replace(/\s*$/,'') @default = "app/js/#{name}.coffee" ensureExists: -> From a31d999b3a47cb1e19ef7e2e1cb8a84e4592d902 Mon Sep 17 00:00:00 2001 From: Jason Karns Date: Sat, 1 Mar 2014 15:36:39 -0500 Subject: [PATCH 10/13] Use grunt for logging (to get errors colorized) --- lib/initializes-app-entrypoint.coffee | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/initializes-app-entrypoint.coffee b/lib/initializes-app-entrypoint.coffee index c36bd4e..ba86a6e 100644 --- a/lib/initializes-app-entrypoint.coffee +++ b/lib/initializes-app-entrypoint.coffee @@ -23,14 +23,14 @@ class EntryPoint ensureExists: -> if @exists(@configuredPattern) - console.log "Entry point file '#{@configuredPattern}' already exists; nothing to do..." + grunt.log.writeln "Entry point file '#{@configuredPattern}' already exists; nothing to do..." else if @isDefaultConfiguration() - console.log "Writing a default entry point file '#{@default}' into '#{@projectDir}'" + grunt.log.ok "Writing a default entry point file '#{@default}' into '#{@projectDir}'" grunt.file.write @default, @contents else - console.warn "Entry point configured as '#{@configuredPattern}' but no file exists" + grunt.log.error "Entry point configured as '#{@configuredPattern}' but no file exists" exists: (pattern) -> !! grunt.file.expand(pattern).length From 569a5907750fcfef9ecd4b8e4301cb84c40e4cc9 Mon Sep 17 00:00:00 2001 From: Jason Karns Date: Sat, 1 Mar 2014 15:41:54 -0500 Subject: [PATCH 11/13] Put 'static' properties at top of class --- lib/initializes-app-entrypoint.coffee | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/lib/initializes-app-entrypoint.coffee b/lib/initializes-app-entrypoint.coffee index ba86a6e..f34879a 100644 --- a/lib/initializes-app-entrypoint.coffee +++ b/lib/initializes-app-entrypoint.coffee @@ -16,10 +16,17 @@ isInstalledAsDependency = (dir, topDir) -> class EntryPoint - constructor: (@projectDir, name='entrypoint') -> + default: "app/js/entrypoint.coffee" + + contents: """ + window._ = require("underscore") + require("./hello") + + """ + + constructor: (@projectDir) -> process.chdir @projectDir @configuredPattern = sh.exec("lineman config --process files.browserify.entrypoint").stdout.replace(/\s*$/,'') - @default = "app/js/#{name}.coffee" ensureExists: -> if @exists(@configuredPattern) @@ -37,9 +44,3 @@ class EntryPoint isDefaultConfiguration: -> minimatch(@default, @configuredPattern) - - contents: """ - window._ = require("underscore") - require("./hello") - - """ From 2e795829f8ea013ce00456e14dac826c3a9d1dec Mon Sep 17 00:00:00 2001 From: Jason Karns Date: Sat, 1 Mar 2014 15:55:02 -0500 Subject: [PATCH 12/13] ensure cwd is restored --- lib/initializes-app-entrypoint.coffee | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/initializes-app-entrypoint.coffee b/lib/initializes-app-entrypoint.coffee index f34879a..410d259 100644 --- a/lib/initializes-app-entrypoint.coffee +++ b/lib/initializes-app-entrypoint.coffee @@ -7,7 +7,10 @@ module.exports = initialize: (dir = process.cwd()) -> topDir = findsRoot.findTopPackageJson(dir) return unless isInstalledAsDependency(dir, topDir) + + process.chdir topDir new EntryPoint(topDir).ensureExists() + process.chdir dir isInstalledAsDependency = (dir, topDir) -> @@ -25,7 +28,6 @@ class EntryPoint """ constructor: (@projectDir) -> - process.chdir @projectDir @configuredPattern = sh.exec("lineman config --process files.browserify.entrypoint").stdout.replace(/\s*$/,'') ensureExists: -> From 5a5dd9852d41cc7be4c2eb699f675a14de4d3253 Mon Sep 17 00:00:00 2001 From: Jason Karns Date: Sat, 1 Mar 2014 16:02:42 -0500 Subject: [PATCH 13/13] substack's chdir module is nice --- lib/initializes-app-entrypoint.coffee | 6 +++--- package.json | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/initializes-app-entrypoint.coffee b/lib/initializes-app-entrypoint.coffee index 410d259..8e1c5fd 100644 --- a/lib/initializes-app-entrypoint.coffee +++ b/lib/initializes-app-entrypoint.coffee @@ -1,3 +1,4 @@ +chdir = require('chdir') findsRoot = require('find-root-package') grunt = require('lineman').grunt minimatch = require('minimatch') @@ -8,9 +9,8 @@ module.exports = topDir = findsRoot.findTopPackageJson(dir) return unless isInstalledAsDependency(dir, topDir) - process.chdir topDir - new EntryPoint(topDir).ensureExists() - process.chdir dir + chdir topDir, -> + new EntryPoint(topDir).ensureExists() isInstalledAsDependency = (dir, topDir) -> diff --git a/package.json b/package.json index c04dc56..4a9a01a 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,8 @@ "coffee-script": "~1.6.3", "find-root-package": "0.0.1", "execSync": "~1.0.1-pre", - "minimatch": "~0.2.14" + "minimatch": "~0.2.14", + "chdir": "0.0.0" }, "peerDependencies": { "coffeeify": "~0.5.2"