tau 0.0.1 → 0.1.0

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.
data/README.md CHANGED
@@ -62,12 +62,26 @@ written in sass or scss. For example if you have **code/js/script.coffee**
62
62
  script and **code/js/style.sass** spreadsheet you can include it to html by
63
63
  lines:
64
64
  ```html
65
- <script src='js/script.js' type="text/javascript"></script>
66
- <link rel="stylesheet" href="css/style.css" type="text/css" />
65
+ <script src='js/script.js'></script>
66
+ <link rel="stylesheet" href="css/style.css">
67
67
  ```
68
68
  Anytime you change any file you can see updated version in browser. You don't
69
69
  need to compile anything by hand.
70
70
 
71
+ ### Building project
72
+
73
+ If you want to compile all files for releasing it in internet you don't need do
74
+ it by hand. `tau build` command compiles all sass, haml and other files and put
75
+ them into **build/** directory. Any files from **img** directory and not a haml, sass
76
+ or coffee-script files will copied without any changes. For example:
77
+ ```
78
+ code/index.haml -> build/index.html
79
+ code/js/script.coffee -> build/js/script.js
80
+ code/img/logo.png -> build/img/logo.png
81
+ code/humans.txt -> build/humans.txt
82
+ etc...
83
+ ```
84
+
71
85
  License
72
86
  -------
73
87
 
data/bin/tau CHANGED
@@ -1,13 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
- require 'tau/server'
3
- require 'tau/projecter'
2
+ require 'tau/cli'
4
3
 
5
- Tau::Server.start if ARGV.first == "server"
6
- if ARGV.first == "new"
7
- project_name = ARGV[1]
8
- begin
9
- Tau::Projecter.new_project(Dir.pwd, project_name)
10
- rescue Exception => e
11
- puts e.message
12
- end
13
- end
4
+ Tau::Cli.start
@@ -0,0 +1,41 @@
1
+ Feature: Builder
2
+ In order to avoid compiling all files by hand
3
+ As a web developer
4
+ I want tau compile all files for me
5
+
6
+ Background: making project
7
+ Given I successfully run `tau new project2build`
8
+ And I cd to "project2build"
9
+
10
+ Scenario: building project
11
+ Given a file named "code/hamltest.haml" with:
12
+ """
13
+ %h1 Hello, world!
14
+ %strong I'm tau ;)
15
+ """
16
+ And a file named "code/js/coffeetest.coffee" with:
17
+ """
18
+ square = (x) -> x * x
19
+ cube = (x) -> square(x) * x
20
+ """
21
+ And a file named "code/css/sasstest.sass" with:
22
+ """
23
+ $blue: #3bbfce
24
+ .content-navigation
25
+ border-color: $blue
26
+ color: darken($blue, 9%)
27
+ """
28
+ And a file named "code/css/scsstest.scss" with:
29
+ """
30
+ $blue: #3bbfce;
31
+ .content-navigation {
32
+ border-color: $blue;
33
+ color:
34
+ darken($blue, 9%);
35
+ }
36
+ """
37
+ When I successfully run `tau build`
38
+ Then I should see file "build/hamltest.html" compiled from haml in "code/hamltest.haml"
39
+ And I should see file "build/js/coffeetest.js" compiled from coffee-script in "code/js/coffeetest.coffee"
40
+ And I should see file "build/css/sasstest.css" compiled from sass in "code/css/sasstest.sass"
41
+ And I should see file "build/css/scsstest.css" compiled from scss in "code/css/scsstest.scss"
@@ -0,0 +1,22 @@
1
+ Feature: Cli
2
+ As a tau user
3
+ I should be able to see usage information
4
+
5
+ Scenario: viewing help by default
6
+ When I run `tau`
7
+ Then I should see usage information
8
+
9
+ Scenario: viewing help
10
+ When I run `tau --help`
11
+ Then I should see usage information
12
+
13
+ Scenario: tau commands should be described
14
+ When I run `tau --help`
15
+ Then I should see commands described:
16
+ | help |
17
+ | new |
18
+ | server |
19
+
20
+ Scenario: viewing version of tau
21
+ When I run `tau -v`
22
+ Then I should see version
@@ -4,5 +4,17 @@ Feature: Making new projects
4
4
  I want tau make project for me
5
5
 
6
6
  Scenario: making new project by tau
7
- When I successfully run `tau new testproject`
8
- And there should be right project directory "testproject"
7
+ When I successfully run `tau new test_project`
8
+ Then there should be right project directory "test_project"
9
+
10
+ Scenario: making project with dot in project name
11
+ When I successfully run `tau new .test.project.`
12
+ Then there should be right project directory ".test.project."
13
+
14
+ Scenario: making project with cyrillic name
15
+ When I successfully run `tau new тест`
16
+ Then there should be right project directory "тест"
17
+
18
+ Scenario: making project with "-" symbol in project name
19
+ When I successfully run `tau new -test-project-`
20
+ Then there should be right project directory "-test-project-"
@@ -0,0 +1,14 @@
1
+ Then /^I should see usage information$/ do
2
+ step %q(the output should match /tau\s+[\w\s\[\]]+#[\w \.]+/)
3
+ end
4
+
5
+ Then /^I should see commands described:$/ do |commands|
6
+ commands.raw.each do |command|
7
+ command = command.first
8
+ step "the output should match /tau #{command}\\s+[\\w\\s\\[\\]]+#[\\w \\.]+/"
9
+ end
10
+ end
11
+
12
+ Then /^I should see version$/ do
13
+ step %q(the output should match /\d\.\d\.\d/)
14
+ end
@@ -1,10 +1,20 @@
1
- Then /^there should be right project directory "(.*)"$/ do |project_dir|
2
- tau_dirs = ['/code', 'code/js', 'code/css', 'code/img'].map { |dir| "#{project_dir}/#{dir}" }
3
- check_directory_presence(tau_dirs, true)
4
- tau_files = ['tau.yaml'].map { |file| "#{project_dir}/#{file}" }
5
- check_file_presence(tau_files, true)
6
- end
7
-
8
- Given /^I'm on sandbox project directory$/ do
9
- @dirs = [SANDBOX_PROJECT_DIR]
10
- end
1
+ Then /^there should be right project directory "(.*)"$/ do |project_dir|
2
+ tau_dirs = ['/code', 'code/js', 'code/css', 'code/img'].map { |dir| "#{project_dir}/#{dir}" }
3
+ check_directory_presence(tau_dirs, true)
4
+ tau_files = ['tau.yml'].map { |file| "#{project_dir}/#{file}" }
5
+ check_file_presence(tau_files, true)
6
+ end
7
+
8
+ Then /^I should see file "(.*)" compiled from (haml|sass|scss|coffee-script) in "(.*)"$/ do |compiled_file, lang, src_file|
9
+ compiled_file_content = nil
10
+ src_file_content = nil
11
+ in_current_dir do
12
+ compiled_file_content = File.read compiled_file
13
+ src_file_content = File.read src_file
14
+ end
15
+ compiled_file_content.should == render(src_file_content, lang)
16
+ end
17
+
18
+ Given /^I'm on sandbox project directory$/ do
19
+ @dirs = [SANDBOX_PROJECT_DIR]
20
+ end
@@ -0,0 +1,34 @@
1
+ require 'tau/projecter'
2
+ require 'tau/renderer'
3
+
4
+ module Tau
5
+ class Builder
6
+ class << self
7
+
8
+ def build
9
+ raise "You are not in the project directory" unless Projecter.project_dir?(Dir.pwd)
10
+
11
+ FileUtils.rm_rf('build')
12
+ Dir['code/**/*'].each do |filename|
13
+ if File.directory?(filename)
14
+ FileUtils.mkdir_p filename.sub('code/', 'build/')
15
+ elsif not Renderer.need_render? filename
16
+ FileUtils.cp filename, destination_for(filename)
17
+ else
18
+ Renderer.render_to_file destination_for(filename), filename
19
+ end
20
+ end
21
+ end
22
+
23
+ private
24
+
25
+ def destination_for(filename)
26
+ filename.sub('code/', 'build/').sub(/\.sass$/, '.css')
27
+ .sub(/\.scss$/, '.css')
28
+ .sub(/\.haml$/, '.html')
29
+ .sub(/\.coffee$/, '.js')
30
+ end
31
+
32
+ end
33
+ end
34
+ end
data/lib/tau/cli.rb ADDED
@@ -0,0 +1,35 @@
1
+ require 'thor'
2
+ require 'tau/projecter'
3
+ require 'tau/server'
4
+ require 'tau/version'
5
+ require 'tau/builder'
6
+
7
+ module Tau
8
+ class Cli < Thor
9
+ map '-v' => :version
10
+
11
+ desc "new PROJECT_NAME", "Making new project"
12
+ def new(project_name)
13
+ begin
14
+ Tau::Projecter.new_project(Dir.pwd, project_name)
15
+ rescue Exception => e
16
+ puts e.message
17
+ end
18
+ end
19
+
20
+ desc :server, "Starting server for development"
21
+ def server
22
+ Tau::Server.start
23
+ end
24
+
25
+ desc :build, "Building project"
26
+ def build
27
+ Tau::Builder.build
28
+ end
29
+
30
+ desc :version, "Show tau version"
31
+ def version
32
+ puts "Tau #{Tau::VERSION}"
33
+ end
34
+ end
35
+ end
data/lib/tau/projecter.rb CHANGED
@@ -1,30 +1,30 @@
1
- module Tau
2
- class Projecter
3
- def self.new_project(directory, project_name)
4
- Dir.chdir(directory)
5
-
6
- raise "This already is the project directory" if project_dir?(directory)
7
- raise "Wrong project name" unless project_name =~ /^\w+$/
8
- raise "Directory exists" if Dir.exist?(project_name)
9
-
10
- Dir.mkdir(project_name)
11
- Dir.chdir(project_name) do
12
- puts("\tcreate\tcode")
13
- Dir.mkdir('code')
14
- puts("\tcreate\tcode/js")
15
- Dir.mkdir('code/js')
16
- puts("\tcreate\tcode/css")
17
- Dir.mkdir('code/css')
18
- puts("\tcreate\tcode/img")
19
- Dir.mkdir('code/img')
20
- puts("\tcreate\ttau.yaml")
21
- File.new('tau.yaml', 'w')
22
- end
23
- end
24
-
25
- def self.project_dir?(directory)
26
- Dir.chdir(directory)
27
- Dir.exist?('code') and File.exist?('tau.yaml')
28
- end
29
- end
30
- end
1
+ module Tau
2
+ class Projecter
3
+ def self.new_project(directory, project_name)
4
+ Dir.chdir(directory)
5
+
6
+ raise "This already is the project directory" if project_dir?(directory)
7
+ raise "Wrong project name" unless project_name =~ /^[[:word:]\.-]+$/
8
+ raise "Directory exists" if Dir.exist?(project_name)
9
+
10
+ Dir.mkdir(project_name)
11
+ Dir.chdir(project_name) do
12
+ puts("\tcreate\tcode")
13
+ Dir.mkdir('code')
14
+ puts("\tcreate\tcode/js")
15
+ Dir.mkdir('code/js')
16
+ puts("\tcreate\tcode/css")
17
+ Dir.mkdir('code/css')
18
+ puts("\tcreate\tcode/img")
19
+ Dir.mkdir('code/img')
20
+ puts("\tcreate\ttau.yaml")
21
+ File.new('tau.yml', 'w')
22
+ end
23
+ end
24
+
25
+ def self.project_dir?(directory)
26
+ Dir.chdir(directory)
27
+ Dir.exist?('code') and File.exist?('tau.yml')
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,55 @@
1
+ module Tau
2
+ class Renderer
3
+ class << self
4
+
5
+ def render(content, lang)
6
+ return sass content if lang == :sass
7
+ return scss content if lang == :scss
8
+ return haml content if lang == :haml
9
+ return coffee content if lang == :coffee
10
+ end
11
+
12
+ def render_file(filename)
13
+ raise "File is not exist" unless File.exist?(filename)
14
+
15
+ content = File.read filename
16
+ return content unless need_render?(filename)
17
+ return sass content if filename.end_with?('.sass')
18
+ return scss content if filename.end_with?('.scss')
19
+ return haml content if filename.end_with?('.haml')
20
+ return coffee content if filename.end_with?('.coffee')
21
+ end
22
+
23
+ def render_to_file(dst_filename, filename)
24
+ File.write dst_filename, render_file(filename)
25
+ end
26
+
27
+ def need_render?(filename)
28
+ return true if filename.end_with?('.sass') or
29
+ filename.end_with?('.scss') or
30
+ filename.end_with?('.haml') or
31
+ filename.end_with?('.coffee')
32
+ false
33
+ end
34
+
35
+ private
36
+
37
+ def sass(content)
38
+ Sass::Engine.new(content).render
39
+ end
40
+
41
+ def scss(content)
42
+ Sass::Engine.new(content, syntax: :scss).render
43
+ end
44
+
45
+ def haml(content)
46
+ Haml::Engine.new(content).render
47
+ end
48
+
49
+ def coffee(content)
50
+ CoffeeScript.compile(content)
51
+ end
52
+
53
+ end
54
+ end
55
+ end
data/lib/tau/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Tau
2
- VERSION = "0.0.1"
2
+ VERSION = "0.1.0"
3
3
  end
data/tau.gemspec CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |s|
20
20
  s.add_development_dependency dependecy
21
21
  end
22
22
 
23
- ['sinatra', 'sass', 'coffee-script', 'haml'].each do |dependecy|
23
+ ['sinatra', 'sass', 'coffee-script', 'haml', 'thor'].each do |dependecy|
24
24
  s.add_dependency dependecy
25
25
  end
26
26
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tau
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-04 00:00:00.000000000 Z
12
+ date: 2012-05-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: cucumber
16
- requirement: &13643180 !ruby/object:Gem::Requirement
16
+ requirement: &10883440 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *13643180
24
+ version_requirements: *10883440
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: aruba
27
- requirement: &13641560 !ruby/object:Gem::Requirement
27
+ requirement: &10940900 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *13641560
35
+ version_requirements: *10940900
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: childprocess
38
- requirement: &13640800 !ruby/object:Gem::Requirement
38
+ requirement: &10939680 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *13640800
46
+ version_requirements: *10939680
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: sinatra
49
- requirement: &13702480 !ruby/object:Gem::Requirement
49
+ requirement: &10937760 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *13702480
57
+ version_requirements: *10937760
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: sass
60
- requirement: &13701880 !ruby/object:Gem::Requirement
60
+ requirement: &10936900 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *13701880
68
+ version_requirements: *10936900
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: coffee-script
71
- requirement: &13701240 !ruby/object:Gem::Requirement
71
+ requirement: &10999060 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *13701240
79
+ version_requirements: *10999060
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: haml
82
- requirement: &13700140 !ruby/object:Gem::Requirement
82
+ requirement: &10998500 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,7 +87,18 @@ dependencies:
87
87
  version: '0'
88
88
  type: :runtime
89
89
  prerelease: false
90
- version_requirements: *13700140
90
+ version_requirements: *10998500
91
+ - !ruby/object:Gem::Dependency
92
+ name: thor
93
+ requirement: &10997880 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ type: :runtime
100
+ prerelease: false
101
+ version_requirements: *10997880
91
102
  description: tau provide you write web pages on haml, stylesheets on sass and scripts
92
103
  on coffee.
93
104
  email:
@@ -102,14 +113,20 @@ files:
102
113
  - README.md
103
114
  - Rakefile
104
115
  - bin/tau
116
+ - features/builder.feature
117
+ - features/cli.feature
105
118
  - features/making_projects.feature
106
119
  - features/server.feature
120
+ - features/step_definitions/cli.rb
107
121
  - features/step_definitions/fs.rb
108
122
  - features/step_definitions/network.rb
109
123
  - features/support/cukegem.rb
110
124
  - features/support/env.rb
111
125
  - lib/tau.rb
126
+ - lib/tau/builder.rb
127
+ - lib/tau/cli.rb
112
128
  - lib/tau/projecter.rb
129
+ - lib/tau/renderer.rb
113
130
  - lib/tau/server.rb
114
131
  - lib/tau/version.rb
115
132
  - tau.gemspec
@@ -138,8 +155,11 @@ signing_key:
138
155
  specification_version: 3
139
156
  summary: Tool for web designers want to use haml, sass, coffee-script and others.
140
157
  test_files:
158
+ - features/builder.feature
159
+ - features/cli.feature
141
160
  - features/making_projects.feature
142
161
  - features/server.feature
162
+ - features/step_definitions/cli.rb
143
163
  - features/step_definitions/fs.rb
144
164
  - features/step_definitions/network.rb
145
165
  - features/support/cukegem.rb