generator-steroids
Version:
134 lines (104 loc) • 4.9 kB
text/coffeescript
util = require("util")
path = require("path")
yosay = require("yosay")
fs = require "fs"
chalk = require "chalk"
SteroidsGenerator = require '../SteroidsGenerator'
module.exports = class SteroidsAppGenerator extends SteroidsGenerator
constructor: ->
super
initializing: ->
@pkg = require("../../package.json")
prompting: ->
done = @async()
scriptExtPrompt =
type: "list"
name: "scriptExt"
message: "Do you want your project to be generated with CoffeeScript or JavaScript files?"
choices: [
{ name: "CoffeeScript", value: "coffee" }
{ name: "JavaScript", value: "js"}
]
default: "coffee"
appTypePrompt =
type: "list"
name: "appType"
message: "Do you want to create a Multi-Page or Single-Page Application?"
choices: [
{ name: "Multi-Page Application (Supersonic default)", value: "mpa" }
{ name: "Single-Page Application (for use with other frameworks)", value: "spa"}
]
default: "mpa"
projectNamePrompt =
type: "input"
name: "projectName"
message: "What is the name for your new app?"
default: "mySteroidsApp"
prompts = [
projectNamePrompt
appTypePrompt
scriptExtPrompt
]
@log yosay("Welcome to the exquisite Steroids project generator!")
@prompt prompts, (answers) =>
@projectName = answers.projectName
if fs.existsSync(@projectName)
@log.writeln(
"""
#{chalk.red("ERROR:")} Directory #{@projectName} already exists. Remove it to continue.
"""
)
process.exit(1)
@destinationRoot @projectName
process.chdir @destinationRoot()
@context.projectName = @projectName
@appType = answers.appType
@scriptExt = answers.scriptExt
done()
writing:
steroidsProjectBase: ->
@dest.mkdir "logs"
defaultProjectFiles: ->
@src.copy "_package.json", "package.json", process: @template
@src.copy "_bower.json", "bower.json", process: @template
@src.copy "gitignore", ".gitignore"
@src.copy "Gruntfile.#{@scriptExt}", "Gruntfile.#{@scriptExt}"
mpaFiles: ->
if @appType is "mpa"
@dest.mkdir "app/common/"
@src.copy "mpa/common/index.#{@scriptExt}", "app/common/index.#{@scriptExt}"
@src.copy "mpa/common/assets/loading.html", "app/common/assets/loading.html"
@src.copy "mpa/common/assets/icons/home.svg", "app/common/assets/icons/home.svg"
@src.copy "mpa/common/assets/icons/cog.svg", "app/common/assets/icons/cog.svg"
@src.copy "mpa/common/assets/icons/search.svg", "app/common/assets/icons/search.svg"
@src.copy "native-styles/ios.css", "app/common/native-styles/ios.css"
@src.copy "native-styles/android.css", "app/common/native-styles/android.css"
@src.copy "mpa/common/stylesheets/application.css", "app/common/stylesheets/application.css"
@src.copy "mpa/common/views/layout.html", "app/common/views/layout.html"
@dest.mkdir "app/example"
@src.copy "mpa/example/index.#{@scriptExt}", "app/example/index.#{@scriptExt}"
@src.copy "mpa/example/scripts/LearnMoreController.#{@scriptExt}", "app/example/scripts/LearnMoreController.#{@scriptExt}"
@src.copy "mpa/example/scripts/SettingsController.#{@scriptExt}", "app/example/scripts/SettingsController.#{@scriptExt}"
@src.copy "mpa/example/views/getting-started.html", "app/example/views/getting-started.html"
@src.copy "mpa/example/views/learn-more.html", "app/example/views/learn-more.html"
@src.copy "mpa/example/views/using-the-scanner.html", "app/example/views/using-the-scanner.html"
@src.copy "mpa/example/views/settings.html", "app/example/views/settings.html"
@src.copy "mpa/example/views/drawer.html", "app/example/views/drawer.html"
@src.copy "mpa/example/views/initial-view.html", "app/example/views/initial-view.html"
spaFiles: ->
if @appType is "spa"
@src.copy "spa/index.html", "www/index.html"
@src.copy "spa/loading.html", "www/loading.html"
@src.copy "native-styles/ios.css", "www/native-styles/ios.css"
@src.copy "native-styles/android.css", "www/native-styles/android.css"
@src.copy "spa/stylesheets/application.css", "www/stylesheets/application.css"
@src.copy "spa/scripts/application.#{@scriptExt}", "www/scripts/application.#{@scriptExt}"
configFiles: ->
@context.appName = @projectName
@dest.mkdir 'config'
@src.copy "application-config/_app.coffee", "config/app.coffee", process: @template
structureSourceFile = "application-config/_structure_#{@appType}.coffee"
@src.copy structureSourceFile, "config/structure.coffee", process: @template
end: ->
@installDependencies
skipInstall: @options['skip-install']