chrome_packager 0.0.6 → 0.0.7

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.
@@ -0,0 +1,79 @@
1
+ # Chrome packager: a simple tool to create chrome packaged applications
2
+
3
+ Don't you know what a chrome packaged application is? [read this first](http://developer.chrome.com/trunk/apps/about_apps.html).
4
+
5
+ Chrome packager brings all the goodness of the [Rails asset pipeline](http://guides.rubyonrails.org/asset_pipeline.html) but without Rails, this is intended to write pure javascript applications.
6
+
7
+ What you can do with chrome packager:
8
+
9
+ - Write your apps as if you were writing it in the Rails asset pipeline
10
+ - Write your app with coffescript
11
+ - Write your stylesheets using sass
12
+ - Write your templates with hamljs(This is fixed now, but in the future you'll be able to use any sprockets compatible template engine)
13
+ - Once your app is ready, you can pack it with one command
14
+
15
+ ## Installation
16
+
17
+ Install chrome packager form RubyGems:
18
+
19
+ gem install chrome_packager
20
+
21
+ ## Creating a new application
22
+
23
+ Once you have installed the gem:
24
+
25
+ chrome-packager new [your app name]
26
+
27
+ You'll have the following file structure
28
+
29
+ -app
30
+ -assets
31
+ -javascripts
32
+ - application.js
33
+ -stylesheets
34
+ - application.css
35
+ -views
36
+ - index.haml
37
+ - background.js
38
+ - manifest.json
39
+ - config.ru
40
+ - Gemfile
41
+ - Gemfile.lock
42
+
43
+ Start writing your application, application.js and application.css are manifest files, you can use the [sprockets directive processor](https://github.com/sstephenson/sprockets#the-directive-processor) here, so you can manage your dependencies easily.
44
+
45
+ You must write your basic html inside the app/views/index.haml file, this is supposed to be a single page application so you don't need more files, all the markup should be inside javascript templates.
46
+
47
+ You'll also want to modify the [manifest.json](http://developer.chrome.com/trunk/apps/manifest.html) and [background.js](http://developer.chrome.com/trunk/apps/app_lifecycle.html) file to fix your needs.
48
+
49
+ ## Running the application
50
+
51
+ Chrome packager creates a rack application, you only need to run this command:
52
+
53
+ rackup
54
+
55
+ After this, your application should be running in the 9292 port, now you can open it in your browser with the following url:
56
+
57
+ http://localhost:9292/
58
+
59
+ ## Packing
60
+
61
+ Once you are done with your app or you want to try it as a chrome app, you have to pack it. Run the following command in the root of your app:
62
+
63
+ chrome-packager pack
64
+
65
+ This command will compile all your javascripts and css's and will put them in the packaged dir.
66
+
67
+ After this just follow [this instructions](http://developer.chrome.com/trunk/apps/first_app.html#five) and point chrome to your app dir.
68
+
69
+ ## TODO
70
+ - Compile the index.haml view to html
71
+ - Integrate [Jasmine](http://pivotal.github.com/jasmine/)
72
+ - Every config is fixed now, add way to config the app will be good
73
+
74
+ ## Contributing
75
+
76
+ I made this in one night, so I'm sure there will be bugs, feel free to fork and send a pull request.
77
+
78
+
79
+
@@ -6,11 +6,24 @@ require 'haml-sprockets'
6
6
  require 'thor/group'
7
7
  require 'thor/actions'
8
8
  require 'fileutils'
9
+ require 'haml'
9
10
 
10
11
  class Generator < Thor::Group
11
12
  include Thor::Actions
12
13
  end
13
14
 
15
+ module Haml
16
+ module Helpers
17
+ def stylesheet_link_tag(asset)
18
+ "<link href='/stylesheets/#{asset}.css' media='screen' rel='stylesheet' type='text/css'>"
19
+ end
20
+
21
+ def javascript_include_tag(asset)
22
+ "<script src='/javascripts/#{asset}.js'></script>"
23
+ end
24
+ end
25
+ end
26
+
14
27
  Generator.source_root File.expand_path('../lib/templates', File.dirname(__FILE__))
15
28
 
16
29
  def pack
@@ -24,6 +37,7 @@ def pack
24
37
  environment.find_asset("#{Dir.pwd}/app/assets/javascripts/application.js").to_s
25
38
  generator.create_file 'packaged/stylesheets/application.css',
26
39
  environment.find_asset("#{Dir.pwd}/app/assets/javascripts/application.css").to_s
40
+ generator.create_file 'packaged/index.html', parse_index
27
41
  end
28
42
 
29
43
  def create_new_app(name)
@@ -45,6 +59,11 @@ def create_new_app(name)
45
59
  end
46
60
  end
47
61
 
62
+ def parse_index
63
+ file = File.read "#{Dir.pwd}/app/views/index.haml"
64
+ Haml::Engine.new(file).render
65
+ end
66
+
48
67
  case
49
68
  when ARGV[0] == 'new'
50
69
  if ARGV.size == 2 && !ARGV[1].empty?
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'chrome_packager'
3
- s.version = '0.0.6'
3
+ s.version = '0.0.7'
4
4
  s.date = '2012-09-23'
5
5
  s.summary = "Create packaged chrome apps"
6
6
  s.description = "A simple tool to create packaged chrome apps"
@@ -1,6 +1,18 @@
1
1
  require 'haml'
2
2
  require 'sinatra'
3
3
 
4
+ module Haml
5
+ module Helpers
6
+ def stylesheet_link_tag(asset)
7
+ "<link href='/assets/#{asset}.css' media='screen' rel='stylesheet' type='text/css'>"
8
+ end
9
+
10
+ def javascript_include_tag(asset)
11
+ "<script src='/assets/#{asset}.js'></script>"
12
+ end
13
+ end
14
+ end
15
+
4
16
  module ChromePackager
5
17
  class Application < Sinatra::Base
6
18
  set :root, 'app'
@@ -1,3 +1,3 @@
1
1
  module ChromePackager
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
@@ -2,7 +2,7 @@
2
2
  %html
3
3
  %head
4
4
  %title Chrome packaged app
5
- %script{ src: '/assets/application.js' }
6
- %link{ rel: 'stylesheet', href: '/assets/application.css', type: 'text/css', media: 'screen' }
5
+ = javascript_include_tag 'application'
6
+ = stylesheet_link_tag 'application'
7
7
  %body
8
8
  %h1 Hello world
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chrome_packager
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -132,6 +132,7 @@ extra_rdoc_files: []
132
132
  files:
133
133
  - .gitignore
134
134
  - Gemfile
135
+ - README.md
135
136
  - Rakefile
136
137
  - bin/chrome-packager
137
138
  - chrome_packager.gemspec