rugular 0.0.95
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
 - data/.gitignore +17 -0
 - data/.travis.yml +4 -0
 - data/Gemfile +5 -0
 - data/README.md +149 -0
 - data/Rakefile +11 -0
 - data/bin/rugular +8 -0
 - data/features/generator_for_directive.feature +35 -0
 - data/features/generator_for_route.feature +40 -0
 - data/features/new.feature +29 -0
 - data/features/step_definitions/rugular_steps.rb +3 -0
 - data/features/support/setup.rb +2 -0
 - data/lib/rugular/tasks/build.rb +27 -0
 - data/lib/rugular/tasks/dependencies.rb +28 -0
 - data/lib/rugular/tasks/generate/directive.rb +11 -0
 - data/lib/rugular/tasks/generate/generator_base.rb +81 -0
 - data/lib/rugular/tasks/generate/route.rb +11 -0
 - data/lib/rugular/tasks/generate.rb +44 -0
 - data/lib/rugular/tasks/helpers/app_checker.rb +41 -0
 - data/lib/rugular/tasks/new.rb +52 -0
 - data/lib/rugular/tasks/server/Guardfile +22 -0
 - data/lib/rugular/tasks/server/Procfile +5 -0
 - data/lib/rugular/tasks/server.rb +28 -0
 - data/lib/rugular/templates/directive/app.directive.coffee.erb +23 -0
 - data/lib/rugular/templates/directive/app.directive.spec.coffee.erb +16 -0
 - data/lib/rugular/templates/directive/app.haml.erb +1 -0
 - data/lib/rugular/templates/directive/app.module.coffee.erb +2 -0
 - data/lib/rugular/templates/directive/app.sass.erb +2 -0
 - data/lib/rugular/templates/new/.gitignore +7 -0
 - data/lib/rugular/templates/new/Gemfile +5 -0
 - data/lib/rugular/templates/new/karma.conf.js +48 -0
 - data/lib/rugular/templates/new/protractor.conf.js +32 -0
 - data/lib/rugular/templates/new/src/app/app.controller.coffee +6 -0
 - data/lib/rugular/templates/new/src/app/app.controller.spec.coffee +19 -0
 - data/lib/rugular/templates/new/src/app/app.haml +1 -0
 - data/lib/rugular/templates/new/src/app/app.module.coffee +4 -0
 - data/lib/rugular/templates/new/src/app/app.routes.coffee +15 -0
 - data/lib/rugular/templates/new/src/app/app.sass +2 -0
 - data/lib/rugular/templates/new/src/favicon.ico +0 -0
 - data/lib/rugular/templates/new/src/index.haml +21 -0
 - data/lib/rugular/templates/new/test/spec_helper.js +168 -0
 - data/lib/rugular/templates/new_erb/bower.json.erb +29 -0
 - data/lib/rugular/templates/new_erb/package.json.erb +30 -0
 - data/lib/rugular/templates/route/app.controller.coffee.erb +8 -0
 - data/lib/rugular/templates/route/app.controller.spec.coffee.erb +19 -0
 - data/lib/rugular/templates/route/app.haml.erb +1 -0
 - data/lib/rugular/templates/route/app.module.coffee.erb +4 -0
 - data/lib/rugular/templates/route/app.routes.coffee.erb +15 -0
 - data/lib/rugular/templates/route/app.sass.erb +2 -0
 - data/lib/rugular/version.rb +3 -0
 - data/lib/rugular.rb +36 -0
 - data/rugular.gemspec +33 -0
 - metadata +255 -0
 
    
        checksums.yaml
    ADDED
    
    | 
         @@ -0,0 +1,7 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ---
         
     | 
| 
      
 2 
     | 
    
         
            +
            SHA1:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 5146630b5d70b0d26d71eb5bb4d4eff347405f98
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 747b7d81fcdfaa2c70a9a64a32860b692eac5b40
         
     | 
| 
      
 5 
     | 
    
         
            +
            SHA512:
         
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 044165ce25868e12bc7457233718287d08722e5685a92c9eda1476dfff299738b064fb7fb65359da33caa0bba331ecbb80726eb468859e01bc4c8b73676040db
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 090bf7d3aa4e36468082421d00846f4bdaff2f9cea94b6fdd6867299b4fa37b1e0d13cd62112514892fd3fe34b8553daa41aa42b76d8d45f59c0c87c7a4ae3cb
         
     | 
    
        data/.gitignore
    ADDED
    
    
    
        data/.travis.yml
    ADDED
    
    
    
        data/Gemfile
    ADDED
    
    
    
        data/README.md
    ADDED
    
    | 
         @@ -0,0 +1,149 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            [](https://travis-ci.org/currica/rugular)
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # Rugular
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            Rugular is a ruby scaffolding framework to build AngularJS apps. It builds a
         
     | 
| 
      
 6 
     | 
    
         
            +
            minified and compressed version of a front-end into the ``./dist`` folder that
         
     | 
| 
      
 7 
     | 
    
         
            +
            can be served as a standalone AngularJS app. The goal of this framework is to
         
     | 
| 
      
 8 
     | 
    
         
            +
            create applications written with [best AngularJS
         
     | 
| 
      
 9 
     | 
    
         
            +
            practices](https://github.com/johnpapa/angularjs-styleguide); CoffeeScript
         
     | 
| 
      
 10 
     | 
    
         
            +
            optional.
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            ## Installation
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            Add this line to your application's Gemfile:
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 17 
     | 
    
         
            +
            gem 'rugular'
         
     | 
| 
      
 18 
     | 
    
         
            +
            ```
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            And then execute:
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                $ bundle
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
            Or install it yourself as:
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                $ gem install rugular
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            ## Start a new project
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
            ```bash
         
     | 
| 
      
 31 
     | 
    
         
            +
            rugular new <project_name>
         
     | 
| 
      
 32 
     | 
    
         
            +
            ```
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
            This will create the initial project template that follows [Google's Best
         
     | 
| 
      
 35 
     | 
    
         
            +
            Practices for an Angular App
         
     | 
| 
      
 36 
     | 
    
         
            +
            Structure](https://docs.google.com/document/d/1XXMvReO8-Awi1EZXAXS4PzDzdNvV6pGcuaF4Q9821Es/pub).
         
     | 
| 
      
 37 
     | 
    
         
            +
            <pre>
         
     | 
| 
      
 38 
     | 
    
         
            +
            ├──  bower_components/
         
     | 
| 
      
 39 
     | 
    
         
            +
            ├──  bower.json
         
     | 
| 
      
 40 
     | 
    
         
            +
            ├──  Gemfile
         
     | 
| 
      
 41 
     | 
    
         
            +
            ├──  package.json
         
     | 
| 
      
 42 
     | 
    
         
            +
            ├──  src/
         
     | 
| 
      
 43 
     | 
    
         
            +
            │   ├──  app/
         
     | 
| 
      
 44 
     | 
    
         
            +
            │   │   ├──  app.module.coffee
         
     | 
| 
      
 45 
     | 
    
         
            +
            │   │   ├──  app.config.coffee
         
     | 
| 
      
 46 
     | 
    
         
            +
            │   │   ├──  app.controller.coffee
         
     | 
| 
      
 47 
     | 
    
         
            +
            │   │   ├──  app.controller.spec.coffee
         
     | 
| 
      
 48 
     | 
    
         
            +
            │   │   ├──  app.routes.coffee
         
     | 
| 
      
 49 
     | 
    
         
            +
            │   │   ├──  index.haml
         
     | 
| 
      
 50 
     | 
    
         
            +
            │   │   ├──  index.sass
         
     | 
| 
      
 51 
     | 
    
         
            +
            │   ├──  components/
         
     | 
| 
      
 52 
     | 
    
         
            +
            │   ├──  404.html
         
     | 
| 
      
 53 
     | 
    
         
            +
            │   ├──  500.html
         
     | 
| 
      
 54 
     | 
    
         
            +
            │   ├──  favico.ico
         
     | 
| 
      
 55 
     | 
    
         
            +
            </pre>
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
            ## Development Server
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
            Rugular includes a built in server that will interpret Coffeescript/Haml/Sass
         
     | 
| 
      
 60 
     | 
    
         
            +
            and run a server on ``localhost:8080``. To run the server, type:
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
            ```bash
         
     | 
| 
      
 63 
     | 
    
         
            +
            bundle exec rugular server
         
     | 
| 
      
 64 
     | 
    
         
            +
            ```
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
            ## Running the tests
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
            ### Unit Tests
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
            Unit tests are included in the development server. To run these tests just once
         
     | 
| 
      
 71 
     | 
    
         
            +
            (perhaps for CI) run:
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
            ```
         
     | 
| 
      
 74 
     | 
    
         
            +
            karma start karma.conf.js --single-run
         
     | 
| 
      
 75 
     | 
    
         
            +
            ```
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
            ### End to End tests
         
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
| 
      
 79 
     | 
    
         
            +
            End to end tests with protractor can be run with:
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
            ```bash
         
     | 
| 
      
 82 
     | 
    
         
            +
            protractor
         
     | 
| 
      
 83 
     | 
    
         
            +
            ```
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
            Please make sure you have mocha installed globally!
         
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
      
 87 
     | 
    
         
            +
            ### Rugular Generators
         
     | 
| 
      
 88 
     | 
    
         
            +
             
     | 
| 
      
 89 
     | 
    
         
            +
            #### Create a Route
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
      
 91 
     | 
    
         
            +
            A route creates a angular route, controller, and view in the app folder.
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
            ```bash
         
     | 
| 
      
 94 
     | 
    
         
            +
            rugular generate route <route_name>
         
     | 
| 
      
 95 
     | 
    
         
            +
            ```
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
      
 97 
     | 
    
         
            +
            This command will create a folder in the ``src/app`` directory that will
         
     | 
| 
      
 98 
     | 
    
         
            +
            contain a controller and service namespaced with a new module of the route
         
     | 
| 
      
 99 
     | 
    
         
            +
            name if one dos not already exist. It will also register the new module in the
         
     | 
| 
      
 100 
     | 
    
         
            +
            ``app.module.js`` file.
         
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
      
 102 
     | 
    
         
            +
            #### Create a Directive
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
            ```bash
         
     | 
| 
      
 105 
     | 
    
         
            +
            rugular generate directive <directive_name>
         
     | 
| 
      
 106 
     | 
    
         
            +
            ```
         
     | 
| 
      
 107 
     | 
    
         
            +
             
     | 
| 
      
 108 
     | 
    
         
            +
            This command will create a directive and controller namespaced with a new
         
     | 
| 
      
 109 
     | 
    
         
            +
            module of the feature name if one does not already exist. It will also register
         
     | 
| 
      
 110 
     | 
    
         
            +
            the new module in the ``app.module.js`` file.
         
     | 
| 
      
 111 
     | 
    
         
            +
             
     | 
| 
      
 112 
     | 
    
         
            +
            #### Create a Factory (TODO)
         
     | 
| 
      
 113 
     | 
    
         
            +
             
     | 
| 
      
 114 
     | 
    
         
            +
            ```bash
         
     | 
| 
      
 115 
     | 
    
         
            +
            rugular generate factory <factory_name>
         
     | 
| 
      
 116 
     | 
    
         
            +
            ```
         
     | 
| 
      
 117 
     | 
    
         
            +
             
     | 
| 
      
 118 
     | 
    
         
            +
            This command will create contain a factory namespaced with a new module of the
         
     | 
| 
      
 119 
     | 
    
         
            +
            feature name if one does not already exist. It will also register the new
         
     | 
| 
      
 120 
     | 
    
         
            +
            module in the ``app.module.js`` file.
         
     | 
| 
      
 121 
     | 
    
         
            +
             
     | 
| 
      
 122 
     | 
    
         
            +
            ### Creating a component
         
     | 
| 
      
 123 
     | 
    
         
            +
             
     | 
| 
      
 124 
     | 
    
         
            +
            A component refers to shareable, abstracted angular modules. To create a
         
     | 
| 
      
 125 
     | 
    
         
            +
            component, simply run any generator command with the ``-c`` option and the
         
     | 
| 
      
 126 
     | 
    
         
            +
            service will be created in the ``src/components`` folder.
         
     | 
| 
      
 127 
     | 
    
         
            +
             
     | 
| 
      
 128 
     | 
    
         
            +
             
     | 
| 
      
 129 
     | 
    
         
            +
            ## TODO (need to build)
         
     | 
| 
      
 130 
     | 
    
         
            +
             
     | 
| 
      
 131 
     | 
    
         
            +
            ### Building the app
         
     | 
| 
      
 132 
     | 
    
         
            +
             
     | 
| 
      
 133 
     | 
    
         
            +
            Rugular builds a minified, compressed version of your app in the ``/dist``
         
     | 
| 
      
 134 
     | 
    
         
            +
            folder. To build the app run:
         
     | 
| 
      
 135 
     | 
    
         
            +
             
     | 
| 
      
 136 
     | 
    
         
            +
            ```
         
     | 
| 
      
 137 
     | 
    
         
            +
            rugular build
         
     | 
| 
      
 138 
     | 
    
         
            +
            ```
         
     | 
| 
      
 139 
     | 
    
         
            +
             
     | 
| 
      
 140 
     | 
    
         
            +
            ## Contributing
         
     | 
| 
      
 141 
     | 
    
         
            +
             
     | 
| 
      
 142 
     | 
    
         
            +
            1. Fork it ( https://github.com/currica/rugular/fork )
         
     | 
| 
      
 143 
     | 
    
         
            +
            2. Create your feature branch (`git checkout -b my-new-feature`)
         
     | 
| 
      
 144 
     | 
    
         
            +
            3. Commit your changes (`git commit -am 'Add some feature'`)
         
     | 
| 
      
 145 
     | 
    
         
            +
            4. Push to the branch (`git push origin my-new-feature`)
         
     | 
| 
      
 146 
     | 
    
         
            +
            5. Create a new Pull Request
         
     | 
| 
      
 147 
     | 
    
         
            +
             
     | 
| 
      
 148 
     | 
    
         
            +
            ## License
         
     | 
| 
      
 149 
     | 
    
         
            +
            Copyright 2014. Q-Centrix. MIT License.
         
     | 
    
        data/Rakefile
    ADDED
    
    
    
        data/bin/rugular
    ADDED
    
    
| 
         @@ -0,0 +1,35 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Feature: Rugular CLI
         
     | 
| 
      
 2 
     | 
    
         
            +
              In order to generate an application route
         
     | 
| 
      
 3 
     | 
    
         
            +
              As a user of the rugular framework
         
     | 
| 
      
 4 
     | 
    
         
            +
              I want to bootstrap the templates necessary to carry this out
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              Scenario: Generating a route
         
     | 
| 
      
 7 
     | 
    
         
            +
                When I set up Rugular and run "rugular generate directive test"
         
     | 
| 
      
 8 
     | 
    
         
            +
                And the file "my-app/src/app/test/test.directive.coffee" should contain:
         
     | 
| 
      
 9 
     | 
    
         
            +
                  """
         
     | 
| 
      
 10 
     | 
    
         
            +
                  angular.module('test').controller('testController', testController)
         
     | 
| 
      
 11 
     | 
    
         
            +
                  """
         
     | 
| 
      
 12 
     | 
    
         
            +
                And the file "my-app/src/app/test/test.directive.spec.coffee" should contain:
         
     | 
| 
      
 13 
     | 
    
         
            +
                  """
         
     | 
| 
      
 14 
     | 
    
         
            +
                  describe 'testController', ->
         
     | 
| 
      
 15 
     | 
    
         
            +
                  """
         
     | 
| 
      
 16 
     | 
    
         
            +
                And the file "my-app/src/app/test/test.haml" should contain:
         
     | 
| 
      
 17 
     | 
    
         
            +
                  """
         
     | 
| 
      
 18 
     | 
    
         
            +
                  %h1 test
         
     | 
| 
      
 19 
     | 
    
         
            +
                  """
         
     | 
| 
      
 20 
     | 
    
         
            +
                And the file "my-app/src/app/app.module.coffee" should contain:
         
     | 
| 
      
 21 
     | 
    
         
            +
                  """
         
     | 
| 
      
 22 
     | 
    
         
            +
                  'test'
         
     | 
| 
      
 23 
     | 
    
         
            +
                  """
         
     | 
| 
      
 24 
     | 
    
         
            +
                And the file "my-app/src/app/test/test.module.coffee" should contain:
         
     | 
| 
      
 25 
     | 
    
         
            +
                  """
         
     | 
| 
      
 26 
     | 
    
         
            +
                  angular.module 'test', [
         
     | 
| 
      
 27 
     | 
    
         
            +
                  ]
         
     | 
| 
      
 28 
     | 
    
         
            +
                  """
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
              Scenario: Generating a route in the components directory
         
     | 
| 
      
 31 
     | 
    
         
            +
                When I set up Rugular and run "rugular generate directive -c test"
         
     | 
| 
      
 32 
     | 
    
         
            +
                And the file "my-app/src/components/test/test.directive.coffee" should contain:
         
     | 
| 
      
 33 
     | 
    
         
            +
                  """
         
     | 
| 
      
 34 
     | 
    
         
            +
                  angular.module('test').controller('testController', testController)
         
     | 
| 
      
 35 
     | 
    
         
            +
                  """
         
     | 
| 
         @@ -0,0 +1,40 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Feature: Rugular CLI
         
     | 
| 
      
 2 
     | 
    
         
            +
              In order to generate an application route
         
     | 
| 
      
 3 
     | 
    
         
            +
              As a user of the rugular framework
         
     | 
| 
      
 4 
     | 
    
         
            +
              I want to bootstrap the templates necessary to carry this out
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              Scenario: Generating a route
         
     | 
| 
      
 7 
     | 
    
         
            +
                When I set up Rugular and run "rugular generate route test"
         
     | 
| 
      
 8 
     | 
    
         
            +
                And the file "my-app/src/app/test/test.controller.coffee" should contain:
         
     | 
| 
      
 9 
     | 
    
         
            +
                  """
         
     | 
| 
      
 10 
     | 
    
         
            +
                  angular.module('test').controller('testController', testController)
         
     | 
| 
      
 11 
     | 
    
         
            +
                  """
         
     | 
| 
      
 12 
     | 
    
         
            +
                And the file "my-app/src/app/test/test.routes.coffee" should contain:
         
     | 
| 
      
 13 
     | 
    
         
            +
                  """
         
     | 
| 
      
 14 
     | 
    
         
            +
                  angular.module('test').config(testRouting)
         
     | 
| 
      
 15 
     | 
    
         
            +
                  """
         
     | 
| 
      
 16 
     | 
    
         
            +
                And the file "my-app/src/app/test/test.controller.spec.coffee" should contain:
         
     | 
| 
      
 17 
     | 
    
         
            +
                  """
         
     | 
| 
      
 18 
     | 
    
         
            +
                  describe 'testController', ->
         
     | 
| 
      
 19 
     | 
    
         
            +
                  """
         
     | 
| 
      
 20 
     | 
    
         
            +
                And the file "my-app/src/app/test/test.haml" should contain:
         
     | 
| 
      
 21 
     | 
    
         
            +
                  """
         
     | 
| 
      
 22 
     | 
    
         
            +
                  %h1 test
         
     | 
| 
      
 23 
     | 
    
         
            +
                  """
         
     | 
| 
      
 24 
     | 
    
         
            +
                And the file "my-app/src/app/app.module.coffee" should contain:
         
     | 
| 
      
 25 
     | 
    
         
            +
                  """
         
     | 
| 
      
 26 
     | 
    
         
            +
                  'test'
         
     | 
| 
      
 27 
     | 
    
         
            +
                  """
         
     | 
| 
      
 28 
     | 
    
         
            +
                And the file "my-app/src/app/test/test.module.coffee" should contain:
         
     | 
| 
      
 29 
     | 
    
         
            +
                  """
         
     | 
| 
      
 30 
     | 
    
         
            +
                  angular.module 'test', [
         
     | 
| 
      
 31 
     | 
    
         
            +
                    'ui.router'
         
     | 
| 
      
 32 
     | 
    
         
            +
                  ]
         
     | 
| 
      
 33 
     | 
    
         
            +
                  """
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
              Scenario: Generating a route in the components directory
         
     | 
| 
      
 36 
     | 
    
         
            +
                When I set up Rugular and run "rugular generate route -c test"
         
     | 
| 
      
 37 
     | 
    
         
            +
                And the file "my-app/src/components/test/test.controller.coffee" should contain:
         
     | 
| 
      
 38 
     | 
    
         
            +
                  """
         
     | 
| 
      
 39 
     | 
    
         
            +
                  angular.module('test').controller('testController', testController)
         
     | 
| 
      
 40 
     | 
    
         
            +
                  """
         
     | 
| 
         @@ -0,0 +1,29 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Feature: Rugular CLI
         
     | 
| 
      
 2 
     | 
    
         
            +
              In order to generate initial files
         
     | 
| 
      
 3 
     | 
    
         
            +
              As a user of the rugular framework
         
     | 
| 
      
 4 
     | 
    
         
            +
              I want bootstrap the files necessary to start hacking!
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              Scenario: New
         
     | 
| 
      
 7 
     | 
    
         
            +
                When I run `rugular new my-app`
         
     | 
| 
      
 8 
     | 
    
         
            +
                Then the exit status should be 0
         
     | 
| 
      
 9 
     | 
    
         
            +
                Then the file "my-app/.gitignore" should contain:
         
     | 
| 
      
 10 
     | 
    
         
            +
                  """
         
     | 
| 
      
 11 
     | 
    
         
            +
                  bower_components
         
     | 
| 
      
 12 
     | 
    
         
            +
                  """
         
     | 
| 
      
 13 
     | 
    
         
            +
                And the file "my-app/bower.json" should contain:
         
     | 
| 
      
 14 
     | 
    
         
            +
                  """
         
     | 
| 
      
 15 
     | 
    
         
            +
                  "name": "my-app",
         
     | 
| 
      
 16 
     | 
    
         
            +
                  """
         
     | 
| 
      
 17 
     | 
    
         
            +
                And the file "my-app/package.json" should contain:
         
     | 
| 
      
 18 
     | 
    
         
            +
                  """
         
     | 
| 
      
 19 
     | 
    
         
            +
                  "name": "my-app",
         
     | 
| 
      
 20 
     | 
    
         
            +
                  """
         
     | 
| 
      
 21 
     | 
    
         
            +
                And the file "my-app/karma.conf.js" should contain:
         
     | 
| 
      
 22 
     | 
    
         
            +
                  """
         
     | 
| 
      
 23 
     | 
    
         
            +
                  frameworks: ['mocha', 'chai', 'sinon', 'chai-sinon'],
         
     | 
| 
      
 24 
     | 
    
         
            +
                  """
         
     | 
| 
      
 25 
     | 
    
         
            +
                And the file "my-app/src/index.haml" should contain:
         
     | 
| 
      
 26 
     | 
    
         
            +
                  """
         
     | 
| 
      
 27 
     | 
    
         
            +
                  = javascript_include_tag("./bower_components/angular-ui-router/release/angular-ui-router.js")
         
     | 
| 
      
 28 
     | 
    
         
            +
                  """
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
         @@ -0,0 +1,27 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Dir.glob("#{__dir__}/helpers/**/*.rb").each {|file| require file}
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Rugular
         
     | 
| 
      
 4 
     | 
    
         
            +
              class Build < Thor::Group
         
     | 
| 
      
 5 
     | 
    
         
            +
                include Thor::Actions
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                desc('Creates a minified, compressed version in the dist folder')
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                Rugular::AppChecker.check_rugular!(self.name, new.destination_root)
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                # TODO: build from the ./.tmp folder
         
     | 
| 
      
 12 
     | 
    
         
            +
                def compile_coffeescript
         
     | 
| 
      
 13 
     | 
    
         
            +
                  puts CoffeeScript.compile File.read("app.coffee")
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                def uglify_css
         
     | 
| 
      
 17 
     | 
    
         
            +
                  puts Uglifier.compile(CoffeeScript.compile File.read("app.coffee"))
         
     | 
| 
      
 18 
     | 
    
         
            +
                end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                def interpret_sass
         
     | 
| 
      
 21 
     | 
    
         
            +
                  template = File.load('stylesheets/sassy.sass')
         
     | 
| 
      
 22 
     | 
    
         
            +
                  sass_engine = Sass::Engine.new(template)
         
     | 
| 
      
 23 
     | 
    
         
            +
                  output = sass_engine.render
         
     | 
| 
      
 24 
     | 
    
         
            +
                  puts output
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
      
 26 
     | 
    
         
            +
              end
         
     | 
| 
      
 27 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,28 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Dir.glob("#{__dir__}/helpers/**/*.rb").each {|file| require file}
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Rugular
         
     | 
| 
      
 4 
     | 
    
         
            +
              class Dependencies < Thor::Group
         
     | 
| 
      
 5 
     | 
    
         
            +
                include Thor::Actions
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                desc('Installs dependencies (bundle, bower and npm)')
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                Rugular::AppChecker.check_rugular!(self.name, new.destination_root)
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                def bundle
         
     | 
| 
      
 12 
     | 
    
         
            +
                  `bundle install`
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                def bower
         
     | 
| 
      
 16 
     | 
    
         
            +
                  `bower install`
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                def npm_install
         
     | 
| 
      
 20 
     | 
    
         
            +
                  `npm install`
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                # Protractor needs to be installed globally
         
     | 
| 
      
 24 
     | 
    
         
            +
                def install_protractor
         
     | 
| 
      
 25 
     | 
    
         
            +
                  `npm install -g protractor coffee-script mocha`
         
     | 
| 
      
 26 
     | 
    
         
            +
                end
         
     | 
| 
      
 27 
     | 
    
         
            +
              end
         
     | 
| 
      
 28 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,81 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'ostruct'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Rugular
         
     | 
| 
      
 4 
     | 
    
         
            +
              class GeneratorBase < Thor::Group
         
     | 
| 
      
 5 
     | 
    
         
            +
                include Thor::Actions
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                argument :name, desc: 'Name for your route'
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                # specify a component
         
     | 
| 
      
 10 
     | 
    
         
            +
                class_option(
         
     | 
| 
      
 11 
     | 
    
         
            +
                  :c,
         
     | 
| 
      
 12 
     | 
    
         
            +
                  type: :boolean,
         
     | 
| 
      
 13 
     | 
    
         
            +
                  desc: 'create the route in the component folder'
         
     | 
| 
      
 14 
     | 
    
         
            +
                )
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                def self.source_root
         
     | 
| 
      
 17 
     | 
    
         
            +
                  __dir__.chomp('/tasks/generate')
         
     | 
| 
      
 18 
     | 
    
         
            +
                end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                def create_route_folders
         
     | 
| 
      
 21 
     | 
    
         
            +
                  route_pathnames.each do |pathname|
         
     | 
| 
      
 22 
     | 
    
         
            +
                    next(
         
     | 
| 
      
 23 
     | 
    
         
            +
                      "#{destination_file(pathname)} already exists"
         
     | 
| 
      
 24 
     | 
    
         
            +
                    ) if File.exists? destination_file(pathname)
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                    create_file destination_file(pathname) do
         
     | 
| 
      
 27 
     | 
    
         
            +
                      ERB.new(pathname.read).result(
         
     | 
| 
      
 28 
     | 
    
         
            +
                        open_struct.instance_eval { binding }
         
     | 
| 
      
 29 
     | 
    
         
            +
                      )
         
     | 
| 
      
 30 
     | 
    
         
            +
                    end
         
     | 
| 
      
 31 
     | 
    
         
            +
                  end
         
     | 
| 
      
 32 
     | 
    
         
            +
                end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                def inject_module_into_app_module
         
     | 
| 
      
 35 
     | 
    
         
            +
                  insert_into_file(
         
     | 
| 
      
 36 
     | 
    
         
            +
                    app_module_file,
         
     | 
| 
      
 37 
     | 
    
         
            +
                    module_declaration,
         
     | 
| 
      
 38 
     | 
    
         
            +
                    after: "angular.module 'app', [\n"
         
     | 
| 
      
 39 
     | 
    
         
            +
                  ) unless module_declaration_present?
         
     | 
| 
      
 40 
     | 
    
         
            +
                end
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
                def template_files; []; end
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                protected
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                def folder
         
     | 
| 
      
 47 
     | 
    
         
            +
                  options[:c] ? "src/components/#{name}" : "src/app/#{name}"
         
     | 
| 
      
 48 
     | 
    
         
            +
                end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                def route_pathnames
         
     | 
| 
      
 51 
     | 
    
         
            +
                  Dir.glob(template_files).map do |file_name|
         
     | 
| 
      
 52 
     | 
    
         
            +
                    Pathname.new(file_name)
         
     | 
| 
      
 53 
     | 
    
         
            +
                  end
         
     | 
| 
      
 54 
     | 
    
         
            +
                end
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
                def destination_file(pathname)
         
     | 
| 
      
 57 
     | 
    
         
            +
                  "#{folder}/#{pathname.basename('.erb').to_s.gsub('app', name)}"
         
     | 
| 
      
 58 
     | 
    
         
            +
                end
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
                def open_struct
         
     | 
| 
      
 61 
     | 
    
         
            +
                  @_open_struct ||= OpenStruct.new(name: name)
         
     | 
| 
      
 62 
     | 
    
         
            +
                end
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
                def lib_directory
         
     | 
| 
      
 65 
     | 
    
         
            +
                  __dir__.chomp('/tasks/generate')
         
     | 
| 
      
 66 
     | 
    
         
            +
                end
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
                def app_module_file
         
     | 
| 
      
 69 
     | 
    
         
            +
                  'src/app/app.module.coffee'
         
     | 
| 
      
 70 
     | 
    
         
            +
                end
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
                def module_declaration
         
     | 
| 
      
 73 
     | 
    
         
            +
                  "  '#{name}'\n"
         
     | 
| 
      
 74 
     | 
    
         
            +
                end
         
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
      
 76 
     | 
    
         
            +
                def module_declaration_present?
         
     | 
| 
      
 77 
     | 
    
         
            +
                  File.read(app_module_file).include? module_declaration
         
     | 
| 
      
 78 
     | 
    
         
            +
                end
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
      
 80 
     | 
    
         
            +
              end
         
     | 
| 
      
 81 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,44 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Dir.glob("#{__dir__}/helpers/**/*.rb").each {|file| require file}
         
     | 
| 
      
 2 
     | 
    
         
            +
            Dir.glob("#{__dir__}/generate/**/*.rb").each {|file| require file}
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            module Rugular
         
     | 
| 
      
 5 
     | 
    
         
            +
              class Generate < Thor
         
     | 
| 
      
 6 
     | 
    
         
            +
                include Thor::Actions
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                Rugular::AppChecker.check_rugular!(self.name, new.destination_root)
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                desc(
         
     | 
| 
      
 11 
     | 
    
         
            +
                  'generate <angular_service> <name>',
         
     | 
| 
      
 12 
     | 
    
         
            +
                  'generates an angular service'
         
     | 
| 
      
 13 
     | 
    
         
            +
                )
         
     | 
| 
      
 14 
     | 
    
         
            +
                long_desc <<-LONGDESC
         
     | 
| 
      
 15 
     | 
    
         
            +
                  The generate command creates a new angular service in either the app
         
     | 
| 
      
 16 
     | 
    
         
            +
                  folder (default) or the components folder with the `-c` option.
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                  The angular services this command can create include:
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                  * A route (includes a route, controller, controller_spec and view)
         
     | 
| 
      
 21 
     | 
    
         
            +
                  * A controller
         
     | 
| 
      
 22 
     | 
    
         
            +
                  * A factory
         
     | 
| 
      
 23 
     | 
    
         
            +
                  * A directive (includes a view)
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                  The name that is passed in is the name of the angular service. The
         
     | 
| 
      
 26 
     | 
    
         
            +
                  command will also create an angular module if one does not already exist.
         
     | 
| 
      
 27 
     | 
    
         
            +
                LONGDESC
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                register(
         
     | 
| 
      
 30 
     | 
    
         
            +
                  Rugular::Route,
         
     | 
| 
      
 31 
     | 
    
         
            +
                  'route',
         
     | 
| 
      
 32 
     | 
    
         
            +
                  'route',
         
     | 
| 
      
 33 
     | 
    
         
            +
                  'build an angular route'
         
     | 
| 
      
 34 
     | 
    
         
            +
                )
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                register(
         
     | 
| 
      
 37 
     | 
    
         
            +
                  Rugular::Directive,
         
     | 
| 
      
 38 
     | 
    
         
            +
                  'directive',
         
     | 
| 
      
 39 
     | 
    
         
            +
                  'directive',
         
     | 
| 
      
 40 
     | 
    
         
            +
                  'build an angular directive'
         
     | 
| 
      
 41 
     | 
    
         
            +
                )
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
              end
         
     | 
| 
      
 44 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,41 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Rugular
         
     | 
| 
      
 2 
     | 
    
         
            +
              class AppChecker
         
     | 
| 
      
 3 
     | 
    
         
            +
                include Thor::Shell
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
                def self.check_rugular!(task_name, root_directory)
         
     | 
| 
      
 6 
     | 
    
         
            +
                  new(task_name: task_name, root_directory: root_directory).check_rugular!
         
     | 
| 
      
 7 
     | 
    
         
            +
                end
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                def initialize(task_name:, root_directory:)
         
     | 
| 
      
 10 
     | 
    
         
            +
                  @task_name = task_name
         
     | 
| 
      
 11 
     | 
    
         
            +
                  @root_directory = root_directory
         
     | 
| 
      
 12 
     | 
    
         
            +
                end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                def check_rugular!
         
     | 
| 
      
 15 
     | 
    
         
            +
                  error(rugular_app_message) unless rugular_app?
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                private
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                attr_reader :task_name, :root_directory
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                def rugular_app_message
         
     | 
| 
      
 23 
     | 
    
         
            +
                  "#{task_name} requires a pre-existing Rugular application"
         
     | 
| 
      
 24 
     | 
    
         
            +
                end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                def rugular_app?
         
     | 
| 
      
 27 
     | 
    
         
            +
                  [
         
     | 
| 
      
 28 
     | 
    
         
            +
                    'bower.json',
         
     | 
| 
      
 29 
     | 
    
         
            +
                    'package.json',
         
     | 
| 
      
 30 
     | 
    
         
            +
                    'src/index.haml',
         
     | 
| 
      
 31 
     | 
    
         
            +
                    'Gemfile',
         
     | 
| 
      
 32 
     | 
    
         
            +
                    '.tmp'
         
     | 
| 
      
 33 
     | 
    
         
            +
                  ].each do |file_name|
         
     | 
| 
      
 34 
     | 
    
         
            +
                    destination_file_name = root_directory + '/' + file_name
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                    return false unless File.exists?(destination_file_name)
         
     | 
| 
      
 37 
     | 
    
         
            +
                  end
         
     | 
| 
      
 38 
     | 
    
         
            +
                end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
              end
         
     | 
| 
      
 41 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,52 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'ostruct'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'pathname'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            module Rugular
         
     | 
| 
      
 5 
     | 
    
         
            +
              class New < Thor::Group
         
     | 
| 
      
 6 
     | 
    
         
            +
                include Thor::Actions
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                argument :app_name, desc: 'Name for your application'
         
     | 
| 
      
 9 
     | 
    
         
            +
                desc('Creates an initial folder structure for developing apps')
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                def self.source_root
         
     | 
| 
      
 12 
     | 
    
         
            +
                  __dir__.chomp('/tasks')
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                def create_application_directory
         
     | 
| 
      
 16 
     | 
    
         
            +
                  directory "#{lib_directory}/templates/new/", app_open_struct.name
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                def create_custom_files
         
     | 
| 
      
 20 
     | 
    
         
            +
                  Dir.glob("#{lib_directory}/templates/new_erb/*.erb").each do |file_name|
         
     | 
| 
      
 21 
     | 
    
         
            +
                    pathname = Pathname.new(file_name)
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                    create_file "#{app_name}/#{pathname.basename('.erb').to_s}" do
         
     | 
| 
      
 24 
     | 
    
         
            +
                      ERB.new(pathname.read).result(
         
     | 
| 
      
 25 
     | 
    
         
            +
                        app_open_struct.instance_eval { binding }
         
     | 
| 
      
 26 
     | 
    
         
            +
                      )
         
     | 
| 
      
 27 
     | 
    
         
            +
                    end
         
     | 
| 
      
 28 
     | 
    
         
            +
                  end
         
     | 
| 
      
 29 
     | 
    
         
            +
                end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                def create_component_directory
         
     | 
| 
      
 32 
     | 
    
         
            +
                  empty_directory "#{app_name}/components"
         
     | 
| 
      
 33 
     | 
    
         
            +
                end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                def installation_complete
         
     | 
| 
      
 36 
     | 
    
         
            +
                  puts "Thank you for installing Rugular, please finish setting up your "\
         
     | 
| 
      
 37 
     | 
    
         
            +
                    "project with: `cd #{app_open_struct.name} && bundle install && "\
         
     | 
| 
      
 38 
     | 
    
         
            +
                    "rugular dependencies`"
         
     | 
| 
      
 39 
     | 
    
         
            +
                end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                private
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                def app_open_struct
         
     | 
| 
      
 44 
     | 
    
         
            +
                  @_app_open_struct ||= OpenStruct.new(name: app_name)
         
     | 
| 
      
 45 
     | 
    
         
            +
                end
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                def lib_directory
         
     | 
| 
      
 48 
     | 
    
         
            +
                  __dir__.chomp('/tasks')
         
     | 
| 
      
 49 
     | 
    
         
            +
                end
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
              end
         
     | 
| 
      
 52 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,22 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Only watch the src folder
         
     | 
| 
      
 2 
     | 
    
         
            +
            directories %w(src)
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            # Create .tmp folder for localhost server and karma
         
     | 
| 
      
 5 
     | 
    
         
            +
            ['haml', 'sass'].each do |language|
         
     | 
| 
      
 6 
     | 
    
         
            +
              guard language, input: 'src', output: '.tmp', run_at_start: true do
         
     | 
| 
      
 7 
     | 
    
         
            +
                watch %r{^src/.+\.#{language}}
         
     | 
| 
      
 8 
     | 
    
         
            +
              end
         
     | 
| 
      
 9 
     | 
    
         
            +
            end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            input_dir = 'src'
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            coffeescript_options = {
         
     | 
| 
      
 15 
     | 
    
         
            +
              input: input_dir,
         
     | 
| 
      
 16 
     | 
    
         
            +
              output: '.tmp',
         
     | 
| 
      
 17 
     | 
    
         
            +
              patterns: [%r{^#{input_dir}/(.+\.(?:coffee|coffee\.md|litcoffee))$}]
         
     | 
| 
      
 18 
     | 
    
         
            +
            }
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            guard 'coffeescript', coffeescript_options do
         
     | 
| 
      
 21 
     | 
    
         
            +
              coffeescript_options[:patterns].each { |pattern| watch(pattern) }
         
     | 
| 
      
 22 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,28 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Dir.glob("#{__dir__}/helpers/**/*.rb").each {|file| require file}
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'open3'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            module Rugular
         
     | 
| 
      
 5 
     | 
    
         
            +
              class Server < Thor::Group
         
     | 
| 
      
 6 
     | 
    
         
            +
                include Thor::Actions
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                Rugular::AppChecker.check_rugular!(self.name, new.destination_root)
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                desc(
         
     | 
| 
      
 11 
     | 
    
         
            +
                  "runs the test suite and a dev server on localhost:8080 "\
         
     | 
| 
      
 12 
     | 
    
         
            +
                  "(set in lib/rugular/tasks/server/Procfile)"
         
     | 
| 
      
 13 
     | 
    
         
            +
                )
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                def start_server
         
     | 
| 
      
 16 
     | 
    
         
            +
                  system(
         
     | 
| 
      
 17 
     | 
    
         
            +
                    "bundle exec foreman start --color --root=#{destination_root} " \
         
     | 
| 
      
 18 
     | 
    
         
            +
                    "--procfile=#{rugular_procfile}"
         
     | 
| 
      
 19 
     | 
    
         
            +
                  )
         
     | 
| 
      
 20 
     | 
    
         
            +
                end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                private
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                def rugular_procfile
         
     | 
| 
      
 25 
     | 
    
         
            +
                  "#{__dir__}/server/Procfile"
         
     | 
| 
      
 26 
     | 
    
         
            +
                end
         
     | 
| 
      
 27 
     | 
    
         
            +
              end
         
     | 
| 
      
 28 
     | 
    
         
            +
            end
         
     |