architecture-js 0.1.11 → 0.1.12
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/Gemfile +1 -0
- data/Gemfile.lock +11 -0
- data/VERSION +1 -1
- data/architecture-js.gemspec +7 -5
- data/lib/architecture-js.rb +27 -9
- data/lib/architecture-js/architect.rb +101 -66
- data/lib/architecture-js/project.rb +7 -6
- data/spec/architect_spec.rb +78 -0
- data/spec/architecture-js_spec.rb +7 -7
- data/spec/fixtures/test_framework.rb +21 -0
- data/spec/project_spec.rb +1 -1
- data/spec/spec_helper.rb +2 -1
- metadata +38 -28
- data/lib/architecture-js/command.rb +0 -89
- data/spec/cli_spec.rb +0 -42
- data/spec/command_spec.rb +0 -61
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -2,6 +2,13 @@ GEM
|
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
4
|
ZenTest (4.6.2)
|
5
|
+
architecture-js (0.1.11)
|
6
|
+
fssm
|
7
|
+
fssm (~> 0.2.8.1)
|
8
|
+
jsmin
|
9
|
+
jsmin (~> 1.0.1)
|
10
|
+
sprockets (= 1.0.2)
|
11
|
+
sprockets (= 1.0.2)
|
5
12
|
autotest-growl (0.2.16)
|
6
13
|
diff-lcs (1.1.3)
|
7
14
|
fssm (0.2.8.1)
|
@@ -13,6 +20,9 @@ GEM
|
|
13
20
|
rdoc
|
14
21
|
jsmin (1.0.1)
|
15
22
|
json (1.6.5)
|
23
|
+
modjs-architecture (0.1.1)
|
24
|
+
architecture-js (~> 0.1.11)
|
25
|
+
architecture-js (~> 0.1.11)
|
16
26
|
multi_json (1.0.4)
|
17
27
|
rake (0.9.2.2)
|
18
28
|
rdoc (3.12)
|
@@ -41,6 +51,7 @@ DEPENDENCIES
|
|
41
51
|
fssm (~> 0.2.8.1)
|
42
52
|
jeweler (~> 1.8.3)
|
43
53
|
jsmin (~> 1.0.1)
|
54
|
+
modjs-architecture
|
44
55
|
rspec (~> 2.8.0)
|
45
56
|
simplecov (~> 0.5.4)
|
46
57
|
sprockets (= 1.0.2)
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.12
|
data/architecture-js.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "architecture-js"
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.12"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Dayton Nolan"]
|
12
|
-
s.date = "2012-02-
|
12
|
+
s.date = "2012-02-17"
|
13
13
|
s.description = "Architecture.js helps you generate scaffolding, manage third-party packages, compile, and compress your application."
|
14
14
|
s.email = "daytonn@gmail.com"
|
15
15
|
s.executables = ["architect"]
|
@@ -31,7 +31,6 @@ Gem::Specification.new do |s|
|
|
31
31
|
"bin/architect",
|
32
32
|
"lib/architecture-js.rb",
|
33
33
|
"lib/architecture-js/architect.rb",
|
34
|
-
"lib/architecture-js/command.rb",
|
35
34
|
"lib/architecture-js/dependencies.rb",
|
36
35
|
"lib/architecture-js/generator.rb",
|
37
36
|
"lib/architecture-js/helpers.rb",
|
@@ -39,9 +38,8 @@ Gem::Specification.new do |s|
|
|
39
38
|
"lib/architecture-js/project.rb",
|
40
39
|
"repository/modjs/plugins/jquery-elements.js",
|
41
40
|
"spec/.DS_Store",
|
41
|
+
"spec/architect_spec.rb",
|
42
42
|
"spec/architecture-js_spec.rb",
|
43
|
-
"spec/cli_spec.rb",
|
44
|
-
"spec/command_spec.rb",
|
45
43
|
"spec/fixtures/.DS_Store",
|
46
44
|
"spec/fixtures/_hidden.js",
|
47
45
|
"spec/fixtures/compiled_src.js",
|
@@ -57,6 +55,7 @@ Gem::Specification.new do |s|
|
|
57
55
|
"spec/fixtures/src_file.js",
|
58
56
|
"spec/fixtures/templates/test_template_one.js",
|
59
57
|
"spec/fixtures/templates/test_template_two.js",
|
58
|
+
"spec/fixtures/test_framework.rb",
|
60
59
|
"spec/fixtures/test_template_options.js",
|
61
60
|
"spec/fixtures/test_template_two.js",
|
62
61
|
"spec/fixtures/update.architecture",
|
@@ -81,6 +80,7 @@ Gem::Specification.new do |s|
|
|
81
80
|
s.add_runtime_dependency(%q<fssm>, ["~> 0.2.8.1"])
|
82
81
|
s.add_runtime_dependency(%q<jsmin>, ["~> 1.0.1"])
|
83
82
|
s.add_runtime_dependency(%q<sprockets>, ["= 1.0.2"])
|
83
|
+
s.add_runtime_dependency(%q<modjs-architecture>, [">= 0"])
|
84
84
|
s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
|
85
85
|
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
86
86
|
s.add_development_dependency(%q<jeweler>, ["~> 1.8.3"])
|
@@ -93,6 +93,7 @@ Gem::Specification.new do |s|
|
|
93
93
|
s.add_dependency(%q<fssm>, ["~> 0.2.8.1"])
|
94
94
|
s.add_dependency(%q<jsmin>, ["~> 1.0.1"])
|
95
95
|
s.add_dependency(%q<sprockets>, ["= 1.0.2"])
|
96
|
+
s.add_dependency(%q<modjs-architecture>, [">= 0"])
|
96
97
|
s.add_dependency(%q<rspec>, ["~> 2.8.0"])
|
97
98
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
98
99
|
s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
|
@@ -106,6 +107,7 @@ Gem::Specification.new do |s|
|
|
106
107
|
s.add_dependency(%q<fssm>, ["~> 0.2.8.1"])
|
107
108
|
s.add_dependency(%q<jsmin>, ["~> 1.0.1"])
|
108
109
|
s.add_dependency(%q<sprockets>, ["= 1.0.2"])
|
110
|
+
s.add_dependency(%q<modjs-architecture>, [">= 0"])
|
109
111
|
s.add_dependency(%q<rspec>, ["~> 2.8.0"])
|
110
112
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
111
113
|
s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
|
data/lib/architecture-js.rb
CHANGED
@@ -1,14 +1,23 @@
|
|
1
|
-
|
1
|
+
module ArchitectureJS
|
2
|
+
end
|
3
|
+
|
4
|
+
require "architecture-js/helpers"
|
2
5
|
|
3
6
|
module ArchitectureJS
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
7
|
+
def base_directory
|
8
|
+
File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
9
|
+
end
|
10
|
+
|
11
|
+
def lib_directory
|
12
|
+
File.expand_path(File.join(File.dirname(__FILE__)))
|
13
|
+
end
|
14
|
+
|
15
|
+
def root_directory
|
16
|
+
File.expand_path(File.join(File.dirname(Dir.getwd)))
|
17
|
+
end
|
9
18
|
|
10
19
|
def register_framework(name, constructor)
|
11
|
-
FRAMEWORKS[name] = constructor
|
20
|
+
ArchitectureJS::FRAMEWORKS[name] = constructor
|
12
21
|
end
|
13
22
|
|
14
23
|
def create_project_from_config(project_dir = nil)
|
@@ -25,8 +34,17 @@ module ArchitectureJS
|
|
25
34
|
project = ArchitectureJS::FRAMEWORKS[config[:framework]].new(config, project_dir)
|
26
35
|
end
|
27
36
|
|
28
|
-
module_function :
|
37
|
+
module_function :base_directory,
|
38
|
+
:lib_directory,
|
39
|
+
:register_framework,
|
29
40
|
:create_project_from_config
|
30
41
|
end
|
31
42
|
|
32
|
-
|
43
|
+
module ArchitectureJS
|
44
|
+
VERSION = File.read("#{base_directory}/VERSION")
|
45
|
+
FRAMEWORKS = Hash.new
|
46
|
+
end
|
47
|
+
|
48
|
+
%w(dependencies generator notification project architect).each do |lib|
|
49
|
+
require "architecture-js/#{lib}"
|
50
|
+
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
|
1
3
|
module Architect
|
2
4
|
|
3
5
|
class << self
|
@@ -12,96 +14,129 @@ module Architect
|
|
12
14
|
|
13
15
|
attr_reader :args,
|
14
16
|
:command,
|
15
|
-
:
|
16
|
-
:options,
|
17
|
-
:subcommands
|
18
|
-
|
19
|
-
def initialize
|
20
|
-
@command = ARGV[0].to_sym if ARGV[0]
|
21
|
-
@args = Array.try_convert(ARGV)
|
22
|
-
@args.shift
|
23
|
-
@options = {}
|
24
|
-
@subcommands = {}
|
25
|
-
@commands = [:create, :generate, :compile, :watch]
|
26
|
-
@help = create_help
|
27
|
-
end
|
17
|
+
:options
|
28
18
|
|
29
|
-
def
|
30
|
-
|
31
|
-
|
32
|
-
if options[:h]
|
33
|
-
help @command
|
34
|
-
else
|
35
|
-
if @commands.include? @command
|
36
|
-
self.send @command
|
37
|
-
else
|
38
|
-
puts ArchitectureJS::Notification.error "#{@command} is not a valid command"
|
39
|
-
end
|
40
|
-
end
|
19
|
+
def initialize(path = nil)
|
20
|
+
if path
|
21
|
+
@root = File.expand_path(path)
|
41
22
|
else
|
42
|
-
|
23
|
+
@root = File.expand_path(Dir.getwd)
|
43
24
|
end
|
44
25
|
end
|
45
26
|
|
46
|
-
def
|
47
|
-
|
48
|
-
|
27
|
+
def run
|
28
|
+
parse_options
|
29
|
+
self.send(@command)
|
30
|
+
end
|
49
31
|
|
50
|
-
|
51
|
-
|
52
|
-
|
32
|
+
def create
|
33
|
+
app_name = @args.first
|
34
|
+
if @args[1]
|
35
|
+
sub_dir = @args[1] unless @args[1].match /^-/
|
53
36
|
end
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
37
|
+
framework = @options[:framework]
|
38
|
+
|
39
|
+
raise 'you must specify a project name: architect create [project_name]' if args[0].nil?
|
40
|
+
|
41
|
+
@root = File.expand_path sub_dir if sub_dir
|
42
|
+
config = { name: app_name, framework: framework }
|
43
|
+
|
44
|
+
require "#{framework}-architecture" unless framework == 'none'
|
45
|
+
|
46
|
+
project = ArchitectureJS::FRAMEWORKS[framework].new(config, @root)
|
47
|
+
project.create
|
58
48
|
end
|
59
49
|
|
60
50
|
def generate
|
61
51
|
puts 'To be implemented'
|
52
|
+
|
53
|
+
#conf_path = "#{config[:project].root}/ninjs.conf"
|
54
|
+
#raise "ninjs.conf was not located in #{conf_path}" unless File.exists? conf_path
|
55
|
+
#generator = ArchitectureJS::Generator.new(config)
|
56
|
+
#generator.generate
|
62
57
|
end
|
63
58
|
|
64
59
|
def compile
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
ArchitectureJS::Command.compile
|
69
|
-
end
|
60
|
+
project = ArchitectureJS::create_project_from_config(File.expand_path(Dir.getwd))
|
61
|
+
project.config[:output] = 'compressed' if options[:c] || options[:compress]
|
62
|
+
project.update
|
70
63
|
end
|
71
64
|
|
72
65
|
def watch
|
73
|
-
|
74
|
-
|
66
|
+
require "fssm"
|
67
|
+
path ||= Dir.getwd
|
68
|
+
path = File.expand_path(path)
|
69
|
+
|
70
|
+
puts ArchitectureJS::Notification.log "architect is watching for changes. Press Ctrl-C to stop."
|
71
|
+
project = ArchitectureJS::Project::new_from_config(path)
|
72
|
+
project.update
|
73
|
+
watch_hash = Hash.new
|
74
|
+
watch_files = Dir["#{path}/**/"]
|
75
|
+
watch_files.shift # remove the project root
|
76
|
+
remove the build_dir
|
77
|
+
watch_files.reject! { |dir| dir.match(/#{path}\/#{project.config[:build_dir]}/) }
|
78
|
+
|
79
|
+
watch_files.each do |dir|
|
80
|
+
watch_hash[dir] = "**/*.js"
|
81
|
+
end
|
75
82
|
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
83
|
+
watch_hash[path] = "**/*.architecture"
|
84
|
+
watch_hash["#{ArchitectureJS::base_directory}/repository"] = "**/*.js" # check changes to the repository as well
|
85
|
+
|
86
|
+
FSSM.monitor do
|
87
|
+
watch_hash.each do |dir, g|
|
88
|
+
path "#{dir}" do
|
89
|
+
glob g
|
90
|
+
|
91
|
+
update do |base, relative|
|
92
|
+
puts ArchitectureJS::Notification.event "change detected in #{relative}"
|
93
|
+
project.config.read if relative.match(/conf$/)
|
94
|
+
project.update
|
95
|
+
end
|
96
|
+
|
97
|
+
create do |base, relative|
|
98
|
+
puts ArchitectureJS::Notification.event "#{relative} created"
|
99
|
+
project.update
|
100
|
+
end
|
101
|
+
|
102
|
+
delete do |base, relative|
|
103
|
+
puts ArchitectureJS::Notification.event "#{relative} deleted"
|
104
|
+
project.update
|
105
|
+
end
|
85
106
|
end
|
86
107
|
end
|
87
108
|
end
|
109
|
+
end
|
88
110
|
|
89
|
-
|
90
|
-
|
91
|
-
@options
|
92
|
-
|
93
|
-
|
111
|
+
private
|
112
|
+
def parse_options
|
113
|
+
@options = {}
|
114
|
+
OptionParser.new do |opts|
|
115
|
+
opts.banner = "Usage: example.rb [options]"
|
116
|
+
|
117
|
+
options[:version] = false
|
118
|
+
opts.on("-v", "--version", "Version info") do
|
119
|
+
@options[:version] = true
|
120
|
+
end
|
94
121
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
122
|
+
options[:framework] = 'none'
|
123
|
+
opts.on('-f', '--framework FRAMEWORK', 'with framework') do |framework|
|
124
|
+
@options[:framework] = framework
|
125
|
+
end
|
126
|
+
|
127
|
+
@options[:compress] = false
|
128
|
+
opts.on('-c', '--compress', 'with compression') do
|
129
|
+
@options[:compress] = true
|
130
|
+
end
|
131
|
+
|
132
|
+
opts.on('-h', '--help', 'Display help') do
|
133
|
+
puts 'Show help'
|
134
|
+
end
|
135
|
+
end.parse!
|
102
136
|
|
103
|
-
|
104
|
-
|
137
|
+
@command = ARGV[0].to_sym
|
138
|
+
@args = Array.try_convert(ARGV)
|
139
|
+
@args.shift # remove command
|
105
140
|
end
|
106
141
|
|
107
142
|
def help(command = nil)
|
@@ -1,4 +1,5 @@
|
|
1
1
|
module ArchitectureJS
|
2
|
+
|
2
3
|
class Project
|
3
4
|
attr_accessor :root,
|
4
5
|
:src_files,
|
@@ -9,9 +10,6 @@ module ArchitectureJS
|
|
9
10
|
:generator,
|
10
11
|
:config
|
11
12
|
|
12
|
-
# this line adds the default framework to ArchitectureJS
|
13
|
-
ArchitectureJS::register_framework 'none', self
|
14
|
-
|
15
13
|
def self.new_from_config(path)
|
16
14
|
config_file = Dir.entries(path).select {|f| f =~ /\.architecture$/ }.first
|
17
15
|
|
@@ -30,7 +28,7 @@ module ArchitectureJS
|
|
30
28
|
@config_file = "#{config[:name].downcase}.architecture"
|
31
29
|
root ||= Dir.getwd
|
32
30
|
@root = File.expand_path(root)
|
33
|
-
@template_directories = ["#{ArchitectureJS::
|
31
|
+
@template_directories = ["#{ArchitectureJS::base_directory}/templates", "#{@root}/templates"]
|
34
32
|
@directories = ['lib', 'src']
|
35
33
|
@src_files = Array.new
|
36
34
|
@config = {
|
@@ -123,7 +121,7 @@ module ArchitectureJS
|
|
123
121
|
|
124
122
|
def compile_src_file(file_path, file_name)
|
125
123
|
sprockets = Sprockets::Secretary.new(
|
126
|
-
root: ArchitectureJS::
|
124
|
+
root: ArchitectureJS::base_directory,
|
127
125
|
asset_root: @config[:asset_root],
|
128
126
|
load_path: ['repository'],
|
129
127
|
source_files: [file_path]
|
@@ -154,4 +152,7 @@ module ArchitectureJS
|
|
154
152
|
end
|
155
153
|
|
156
154
|
end # class Project
|
157
|
-
end # module ArchitectureJS
|
155
|
+
end # module ArchitectureJS
|
156
|
+
|
157
|
+
# this line adds the default framework to ArchitectureJS
|
158
|
+
ArchitectureJS::register_framework('none', ArchitectureJS::Project)
|
@@ -0,0 +1,78 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'architect' do
|
4
|
+
|
5
|
+
context "CLI" do
|
6
|
+
before :each do
|
7
|
+
@bin = "#{ArchitectureJS::base_directory}/bin/architect"
|
8
|
+
FileUtils.mkdir "#{TMP_DIR}" unless File.exists? "#{TMP_DIR}"
|
9
|
+
`cd #{TMP_DIR}; #{@bin} create myapp`
|
10
|
+
FileUtils.cp "#{FIXTURES}/lib1.js", "#{TMP_DIR}/src/lib1.js"
|
11
|
+
FileUtils.cp "#{FIXTURES}/lib2.js", "#{TMP_DIR}/src/lib2.js"
|
12
|
+
FileUtils.cp "#{FIXTURES}/src_file.js", "#{TMP_DIR}/src/myapp.js"
|
13
|
+
end
|
14
|
+
|
15
|
+
after :each do
|
16
|
+
FileUtils.rm_rf "#{TMP_DIR}" if File.exists? "#{TMP_DIR}"
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'should create a new application' do
|
20
|
+
"#{TMP_DIR}/myapp.architecture".should be_same_file_as "#{FIXTURES}/myapp.architecture"
|
21
|
+
File.directory?("#{TMP_DIR}/lib").should be_true
|
22
|
+
File.directory?("#{TMP_DIR}/src").should be_true
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should create a new application in a subdirectory' do
|
26
|
+
suppress_output { %x(cd #{TMP_DIR}; #{@bin} create myapp sub) }
|
27
|
+
"#{TMP_DIR}/sub/myapp.architecture".should be_same_file_as "#{FIXTURES}/myapp.architecture"
|
28
|
+
File.directory?("#{TMP_DIR}/sub/lib").should be_true
|
29
|
+
File.directory?("#{TMP_DIR}/sub/src").should be_true
|
30
|
+
File.exists?("#{TMP_DIR}/sub/src/myapp.js").should be_true
|
31
|
+
FileUtils.rm_rf "#{TMP_DIR}/sub"
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'should compile the application' do
|
35
|
+
suppress_output { %x(cd #{TMP_DIR}; #{@bin} compile) }
|
36
|
+
File.exists?("#{TMP_DIR}/lib/myapp.js").should be_true
|
37
|
+
"#{TMP_DIR}/lib/myapp.js".should be_same_file_as "#{FIXTURES}/compressed.js"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
=begin
|
41
|
+
context 'alternate framework' do
|
42
|
+
|
43
|
+
before :each do
|
44
|
+
@bin = "#{ArchitectureJS::base_directory}/bin/architect"
|
45
|
+
FileUtils.mkdir TMP_DIR unless File.exists? TMP_DIR
|
46
|
+
end
|
47
|
+
|
48
|
+
after :each do
|
49
|
+
FileUtils.rm_rf TMP_DIR if File.exists? TMP_DIR
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'should create a new application with an alternate framework' do
|
53
|
+
puts `cd #{TMP_DIR}; #{@bin} create myapp -f modjs`
|
54
|
+
|
55
|
+
File.directory?("#{TMP_DIR}/application").should be_true
|
56
|
+
File.directory?("#{TMP_DIR}/elements").should be_true
|
57
|
+
File.directory?("#{TMP_DIR}/lib").should be_true
|
58
|
+
File.directory?("#{TMP_DIR}/models").should be_true
|
59
|
+
File.directory?("#{TMP_DIR}/modules").should be_true
|
60
|
+
File.directory?("#{TMP_DIR}/plugins").should be_true
|
61
|
+
File.directory?("#{TMP_DIR}/spec").should be_true
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'should create a new application in a subdirectory with an alternate framework' do
|
65
|
+
puts `cd #{TMP_DIR}; #{@bin} create myapp sub -f modjs`
|
66
|
+
|
67
|
+
File.directory?("#{TMP_DIR}/sub/application").should be_true
|
68
|
+
File.directory?("#{TMP_DIR}/sub/elements").should be_true
|
69
|
+
File.directory?("#{TMP_DIR}/sub/lib").should be_true
|
70
|
+
File.directory?("#{TMP_DIR}/sub/models").should be_true
|
71
|
+
File.directory?("#{TMP_DIR}/sub/modules").should be_true
|
72
|
+
File.directory?("#{TMP_DIR}/sub/plugins").should be_true
|
73
|
+
File.directory?("#{TMP_DIR}/sub/spec").should be_true
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
77
|
+
=end
|
78
|
+
end
|
@@ -1,20 +1,20 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe ArchitectureJS do
|
4
|
-
it 'should have a
|
5
|
-
ArchitectureJS::
|
4
|
+
it 'should have a base_directory constant' do
|
5
|
+
ArchitectureJS::base_directory.should_not be_nil
|
6
6
|
end
|
7
7
|
|
8
|
-
it 'should have a
|
9
|
-
ArchitectureJS::
|
8
|
+
it 'should have a lib_directory constant' do
|
9
|
+
ArchitectureJS::lib_directory.should_not be_nil
|
10
10
|
end
|
11
11
|
|
12
|
-
it 'should have a
|
13
|
-
ArchitectureJS::
|
12
|
+
it 'should have a lib_directory' do
|
13
|
+
ArchitectureJS::lib_directory.should_not be_nil
|
14
14
|
end
|
15
15
|
|
16
16
|
it 'should have the correct VERSION' do
|
17
|
-
version = File.open("#{ArchitectureJS::
|
17
|
+
version = File.open("#{ArchitectureJS::base_directory}/VERSION").read
|
18
18
|
ArchitectureJS::VERSION.should === version
|
19
19
|
end
|
20
20
|
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module TestFramework
|
2
|
+
class Project < ArchitectureJS::Project
|
3
|
+
|
4
|
+
def initialize(config, root = nil)
|
5
|
+
@config = {
|
6
|
+
framework: 'test',
|
7
|
+
src_dir: 'modules',
|
8
|
+
build_dir: 'application',
|
9
|
+
dependencies: [],
|
10
|
+
autoload: []
|
11
|
+
}
|
12
|
+
@config.merge! config unless config.nil?
|
13
|
+
|
14
|
+
super(@config, root)
|
15
|
+
@directories = %w'application elements lib models modules plugins spec'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
# this line adds the default framework to ArchitectureJS
|
21
|
+
ArchitectureJS::register_framework('test', TestFramework::Project)
|
data/spec/project_spec.rb
CHANGED
@@ -39,7 +39,7 @@ describe ArchitectureJS::Project do
|
|
39
39
|
end
|
40
40
|
|
41
41
|
it "should have template_directories" do
|
42
|
-
@project.template_directories.should == ["#{ArchitectureJS::
|
42
|
+
@project.template_directories.should == ["#{ArchitectureJS::base_directory}/templates", "#{TMP_DIR}/templates"]
|
43
43
|
end
|
44
44
|
|
45
45
|
it "should have a generator" do
|
data/spec/spec_helper.rb
CHANGED
@@ -4,6 +4,7 @@ require 'architecture-js'
|
|
4
4
|
require 'fileutils'
|
5
5
|
require 'rspec'
|
6
6
|
require 'digest/md5'
|
7
|
+
require 'fixtures/test_framework.rb'
|
7
8
|
|
8
9
|
RSpec.configure do |config|
|
9
10
|
config.color_enabled = true
|
@@ -32,6 +33,6 @@ def suppress_output(&block)
|
|
32
33
|
fake.string
|
33
34
|
end
|
34
35
|
|
35
|
-
SPEC_DIR = "#{ArchitectureJS::
|
36
|
+
SPEC_DIR = "#{ArchitectureJS::base_directory}/spec"
|
36
37
|
TMP_DIR = "#{SPEC_DIR}/tmp"
|
37
38
|
FIXTURES = "#{SPEC_DIR}/fixtures"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: architecture-js
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.12
|
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-02-
|
12
|
+
date: 2012-02-17 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: fssm
|
16
|
-
requirement: &
|
16
|
+
requirement: &70245509245260 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.2.8.1
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70245509245260
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: jsmin
|
27
|
-
requirement: &
|
27
|
+
requirement: &70245509244780 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 1.0.1
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70245509244780
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: sprockets
|
38
|
-
requirement: &
|
38
|
+
requirement: &70245509233900 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - =
|
@@ -43,10 +43,21 @@ dependencies:
|
|
43
43
|
version: 1.0.2
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70245509233900
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: modjs-architecture
|
49
|
+
requirement: &70245509233300 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70245509233300
|
47
58
|
- !ruby/object:Gem::Dependency
|
48
59
|
name: rspec
|
49
|
-
requirement: &
|
60
|
+
requirement: &70245509232700 !ruby/object:Gem::Requirement
|
50
61
|
none: false
|
51
62
|
requirements:
|
52
63
|
- - ~>
|
@@ -54,10 +65,10 @@ dependencies:
|
|
54
65
|
version: 2.8.0
|
55
66
|
type: :development
|
56
67
|
prerelease: false
|
57
|
-
version_requirements: *
|
68
|
+
version_requirements: *70245509232700
|
58
69
|
- !ruby/object:Gem::Dependency
|
59
70
|
name: bundler
|
60
|
-
requirement: &
|
71
|
+
requirement: &70245509232100 !ruby/object:Gem::Requirement
|
61
72
|
none: false
|
62
73
|
requirements:
|
63
74
|
- - ~>
|
@@ -65,10 +76,10 @@ dependencies:
|
|
65
76
|
version: 1.0.0
|
66
77
|
type: :development
|
67
78
|
prerelease: false
|
68
|
-
version_requirements: *
|
79
|
+
version_requirements: *70245509232100
|
69
80
|
- !ruby/object:Gem::Dependency
|
70
81
|
name: jeweler
|
71
|
-
requirement: &
|
82
|
+
requirement: &70245509231520 !ruby/object:Gem::Requirement
|
72
83
|
none: false
|
73
84
|
requirements:
|
74
85
|
- - ~>
|
@@ -76,10 +87,10 @@ dependencies:
|
|
76
87
|
version: 1.8.3
|
77
88
|
type: :development
|
78
89
|
prerelease: false
|
79
|
-
version_requirements: *
|
90
|
+
version_requirements: *70245509231520
|
80
91
|
- !ruby/object:Gem::Dependency
|
81
92
|
name: ZenTest
|
82
|
-
requirement: &
|
93
|
+
requirement: &70245509230980 !ruby/object:Gem::Requirement
|
83
94
|
none: false
|
84
95
|
requirements:
|
85
96
|
- - ~>
|
@@ -87,10 +98,10 @@ dependencies:
|
|
87
98
|
version: 4.6.2
|
88
99
|
type: :development
|
89
100
|
prerelease: false
|
90
|
-
version_requirements: *
|
101
|
+
version_requirements: *70245509230980
|
91
102
|
- !ruby/object:Gem::Dependency
|
92
103
|
name: autotest-growl
|
93
|
-
requirement: &
|
104
|
+
requirement: &70245509230400 !ruby/object:Gem::Requirement
|
94
105
|
none: false
|
95
106
|
requirements:
|
96
107
|
- - ~>
|
@@ -98,10 +109,10 @@ dependencies:
|
|
98
109
|
version: 0.2.16
|
99
110
|
type: :development
|
100
111
|
prerelease: false
|
101
|
-
version_requirements: *
|
112
|
+
version_requirements: *70245509230400
|
102
113
|
- !ruby/object:Gem::Dependency
|
103
114
|
name: jsmin
|
104
|
-
requirement: &
|
115
|
+
requirement: &70245509229780 !ruby/object:Gem::Requirement
|
105
116
|
none: false
|
106
117
|
requirements:
|
107
118
|
- - ! '>='
|
@@ -109,10 +120,10 @@ dependencies:
|
|
109
120
|
version: '0'
|
110
121
|
type: :runtime
|
111
122
|
prerelease: false
|
112
|
-
version_requirements: *
|
123
|
+
version_requirements: *70245509229780
|
113
124
|
- !ruby/object:Gem::Dependency
|
114
125
|
name: fssm
|
115
|
-
requirement: &
|
126
|
+
requirement: &70245509229300 !ruby/object:Gem::Requirement
|
116
127
|
none: false
|
117
128
|
requirements:
|
118
129
|
- - ! '>='
|
@@ -120,10 +131,10 @@ dependencies:
|
|
120
131
|
version: '0'
|
121
132
|
type: :runtime
|
122
133
|
prerelease: false
|
123
|
-
version_requirements: *
|
134
|
+
version_requirements: *70245509229300
|
124
135
|
- !ruby/object:Gem::Dependency
|
125
136
|
name: sprockets
|
126
|
-
requirement: &
|
137
|
+
requirement: &70245509228800 !ruby/object:Gem::Requirement
|
127
138
|
none: false
|
128
139
|
requirements:
|
129
140
|
- - =
|
@@ -131,7 +142,7 @@ dependencies:
|
|
131
142
|
version: 1.0.2
|
132
143
|
type: :runtime
|
133
144
|
prerelease: false
|
134
|
-
version_requirements: *
|
145
|
+
version_requirements: *70245509228800
|
135
146
|
description: Architecture.js helps you generate scaffolding, manage third-party packages,
|
136
147
|
compile, and compress your application.
|
137
148
|
email: daytonn@gmail.com
|
@@ -155,7 +166,6 @@ files:
|
|
155
166
|
- bin/architect
|
156
167
|
- lib/architecture-js.rb
|
157
168
|
- lib/architecture-js/architect.rb
|
158
|
-
- lib/architecture-js/command.rb
|
159
169
|
- lib/architecture-js/dependencies.rb
|
160
170
|
- lib/architecture-js/generator.rb
|
161
171
|
- lib/architecture-js/helpers.rb
|
@@ -163,9 +173,8 @@ files:
|
|
163
173
|
- lib/architecture-js/project.rb
|
164
174
|
- repository/modjs/plugins/jquery-elements.js
|
165
175
|
- spec/.DS_Store
|
176
|
+
- spec/architect_spec.rb
|
166
177
|
- spec/architecture-js_spec.rb
|
167
|
-
- spec/cli_spec.rb
|
168
|
-
- spec/command_spec.rb
|
169
178
|
- spec/fixtures/.DS_Store
|
170
179
|
- spec/fixtures/_hidden.js
|
171
180
|
- spec/fixtures/compiled_src.js
|
@@ -181,6 +190,7 @@ files:
|
|
181
190
|
- spec/fixtures/src_file.js
|
182
191
|
- spec/fixtures/templates/test_template_one.js
|
183
192
|
- spec/fixtures/templates/test_template_two.js
|
193
|
+
- spec/fixtures/test_framework.rb
|
184
194
|
- spec/fixtures/test_template_options.js
|
185
195
|
- spec/fixtures/test_template_two.js
|
186
196
|
- spec/fixtures/update.architecture
|
@@ -206,7 +216,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
206
216
|
version: '0'
|
207
217
|
segments:
|
208
218
|
- 0
|
209
|
-
hash:
|
219
|
+
hash: -4407288014740277425
|
210
220
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
211
221
|
none: false
|
212
222
|
requirements:
|
@@ -1,89 +0,0 @@
|
|
1
|
-
module ArchitectureJS
|
2
|
-
module Command
|
3
|
-
def watch(path = nil)
|
4
|
-
require "fssm"
|
5
|
-
path ||= Dir.getwd
|
6
|
-
path = File.expand_path(path)
|
7
|
-
|
8
|
-
puts ArchitectureJS::Notification.log "ArchitectureJS are watching for changes. Press Ctrl-C to stop."
|
9
|
-
project = ArchitectureJS::Project::new_from_config(path)
|
10
|
-
project.update
|
11
|
-
watch_hash = Hash.new
|
12
|
-
watch_files = Dir["#{path}/**/"]
|
13
|
-
watch_files.shift # remove the project root
|
14
|
-
# remove the build_dir
|
15
|
-
watch_files.reject! { |dir| dir.match(/#{path}\/#{project.config[:build_dir]}/) }
|
16
|
-
|
17
|
-
watch_files.each do |dir|
|
18
|
-
watch_hash[dir] = "**/*.js"
|
19
|
-
end
|
20
|
-
|
21
|
-
watch_hash[path] = "**/*.architecture"
|
22
|
-
watch_hash["#{ArchitectureJS::BASE_DIR}/repository"] = "**/*.js" # check changes to the repository as well
|
23
|
-
|
24
|
-
FSSM.monitor do
|
25
|
-
watch_hash.each do |dir, g|
|
26
|
-
path "#{dir}" do
|
27
|
-
glob g
|
28
|
-
|
29
|
-
update do |base, relative|
|
30
|
-
puts ArchitectureJS::Notification.event "change detected in #{relative}"
|
31
|
-
project.config.read if relative.match(/conf$/)
|
32
|
-
project.update
|
33
|
-
end
|
34
|
-
|
35
|
-
create do |base, relative|
|
36
|
-
puts ArchitectureJS::Notification.event "#{relative} created"
|
37
|
-
project.update
|
38
|
-
end
|
39
|
-
|
40
|
-
delete do |base, relative|
|
41
|
-
puts ArchitectureJS::Notification.event "#{relative} deleted"
|
42
|
-
project.update
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end # watch
|
48
|
-
|
49
|
-
def create(config = nil)
|
50
|
-
settings = {
|
51
|
-
name: nil,
|
52
|
-
root: File.expand_path(Dir.getwd)
|
53
|
-
}
|
54
|
-
|
55
|
-
settings.merge!(config) unless config.nil?
|
56
|
-
|
57
|
-
raise 'you must specify a project name: architect create ProjectName' if settings[:name].nil?
|
58
|
-
|
59
|
-
project = ArchitectureJS::Project.new({ name: settings[:name] }, settings[:root])# TODO add settings[:framework]
|
60
|
-
project.create
|
61
|
-
end
|
62
|
-
|
63
|
-
def compile(options = nil)
|
64
|
-
settings = {
|
65
|
-
force_compress: false,
|
66
|
-
path: File.expand_path(Dir.getwd)
|
67
|
-
}
|
68
|
-
|
69
|
-
settings.merge!(options) if options
|
70
|
-
|
71
|
-
project = ArchitectureJS::create_project_from_config(settings[:path])
|
72
|
-
project.config[:output] = 'compressed' if settings[:force_compress]
|
73
|
-
project.update
|
74
|
-
end
|
75
|
-
|
76
|
-
# TODO make generate generic to accept a type, look up in either local templates or master, and pass it options and flags parsed for use in erb files
|
77
|
-
def generate(config)
|
78
|
-
conf_path = "#{config[:project].root}/ninjs.conf"
|
79
|
-
raise "ninjs.conf was not located in #{conf_path}" unless File.exists? conf_path
|
80
|
-
generator = ArchitectureJS::Generator.new(config)
|
81
|
-
generator.generate
|
82
|
-
end
|
83
|
-
|
84
|
-
module_function :create,
|
85
|
-
:watch,
|
86
|
-
:compile,
|
87
|
-
:generate
|
88
|
-
end
|
89
|
-
end
|
data/spec/cli_spec.rb
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
# TODO write tests for CLI
|
3
|
-
describe 'CLI' do
|
4
|
-
before :each do
|
5
|
-
@bin = "#{ArchitectureJS::BASE_DIR}/bin/architect"
|
6
|
-
FileUtils.mkdir "#{TMP_DIR}" unless File.exists? "#{TMP_DIR}"
|
7
|
-
suppress_output { %x(cd #{TMP_DIR}; #{@bin} create myapp) }
|
8
|
-
FileUtils.cp "#{FIXTURES}/lib1.js", "#{TMP_DIR}/src/lib1.js"
|
9
|
-
FileUtils.cp "#{FIXTURES}/lib2.js", "#{TMP_DIR}/src/lib2.js"
|
10
|
-
FileUtils.cp "#{FIXTURES}/src_file.js", "#{TMP_DIR}/src/myapp.js"
|
11
|
-
end
|
12
|
-
|
13
|
-
after :each do
|
14
|
-
FileUtils.rm_rf "#{TMP_DIR}" if File.exists? "#{TMP_DIR}"
|
15
|
-
end
|
16
|
-
|
17
|
-
it 'should create a new application' do
|
18
|
-
"#{TMP_DIR}/myapp.architecture".should be_same_file_as "#{FIXTURES}/myapp.architecture"
|
19
|
-
File.directory? "#{TMP_DIR}/lib"
|
20
|
-
File.directory? "#{TMP_DIR}/src"
|
21
|
-
end
|
22
|
-
|
23
|
-
it 'should create a new application in a subdirectory' do
|
24
|
-
suppress_output { %x(cd #{TMP_DIR}; #{@bin} create myapp sub) }
|
25
|
-
"#{TMP_DIR}/sub/myapp.architecture".should be_same_file_as "#{FIXTURES}/myapp.architecture"
|
26
|
-
File.directory? "#{TMP_DIR}/sub/lib"
|
27
|
-
File.directory? "#{TMP_DIR}/sub/src"
|
28
|
-
File.exists? "#{TMP_DIR}/sub/myapp.js"
|
29
|
-
FileUtils.rm_rf "#{TMP_DIR}/sub"
|
30
|
-
end
|
31
|
-
|
32
|
-
it 'should compile the application' do
|
33
|
-
suppress_output { %x(cd #{TMP_DIR}; #{@bin} compile) }
|
34
|
-
File.exists?("#{TMP_DIR}/lib/myapp.js").should be_true
|
35
|
-
"#{TMP_DIR}/lib/myapp.js".should be_same_file_as "#{FIXTURES}/compressed.js"
|
36
|
-
end
|
37
|
-
|
38
|
-
it 'should generate a template' do
|
39
|
-
#suppress_output { %x`cd #{TMP_DIR}; #{@bin} generate blank test` }
|
40
|
-
#File.exists?("#{TMP_DIR}/test.js").should be_true
|
41
|
-
end
|
42
|
-
end
|
data/spec/command_spec.rb
DELETED
@@ -1,61 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe ArchitectureJS::Command do
|
4
|
-
|
5
|
-
context 'API' do
|
6
|
-
before :each do
|
7
|
-
suppress_output do
|
8
|
-
@project = ArchitectureJS::Project.new({ name: 'myapp' }, TMP_DIR)
|
9
|
-
@project.create
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
after :each do
|
14
|
-
FileUtils.rm_rf TMP_DIR
|
15
|
-
end
|
16
|
-
|
17
|
-
it 'should have a watch command' do
|
18
|
-
ArchitectureJS::Command.should respond_to :watch
|
19
|
-
end
|
20
|
-
|
21
|
-
it 'should have a compile command' do
|
22
|
-
ArchitectureJS::Command.should respond_to :compile
|
23
|
-
end
|
24
|
-
|
25
|
-
it 'should have a generate command' do
|
26
|
-
ArchitectureJS::Command.should respond_to :generate
|
27
|
-
end
|
28
|
-
|
29
|
-
it 'should have a create command' do
|
30
|
-
ArchitectureJS::Command.should respond_to :create
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
context 'Usage' do
|
35
|
-
before :each do
|
36
|
-
suppress_output { ArchitectureJS::Command.create({ name: 'myapp', root: TMP_DIR }) }
|
37
|
-
end
|
38
|
-
|
39
|
-
after :each do
|
40
|
-
FileUtils.rm_rf TMP_DIR
|
41
|
-
end
|
42
|
-
|
43
|
-
it 'should create a new application' do
|
44
|
-
"#{TMP_DIR}/myapp.architecture".should be_same_file_as "#{FIXTURES}/myapp.architecture"
|
45
|
-
File.directory?("#{TMP_DIR}/lib").should be_true
|
46
|
-
File.directory?("#{TMP_DIR}/src").should be_true
|
47
|
-
end
|
48
|
-
|
49
|
-
it 'should compile the application' do
|
50
|
-
FileUtils.cp "#{FIXTURES}/lib1.js", "#{TMP_DIR}/src/lib1.js"
|
51
|
-
FileUtils.cp "#{FIXTURES}/lib2.js", "#{TMP_DIR}/src/lib2.js"
|
52
|
-
FileUtils.cp "#{FIXTURES}/src_file.js", "#{TMP_DIR}/src/myapp.js"
|
53
|
-
|
54
|
-
suppress_output { ArchitectureJS::Command.compile({ path: TMP_DIR }) }
|
55
|
-
|
56
|
-
File.exists?("#{TMP_DIR}/lib/myapp.js").should be_true
|
57
|
-
"#{TMP_DIR}/lib/myapp.js".should be_same_file_as "#{FIXTURES}/compressed.js"
|
58
|
-
end
|
59
|
-
|
60
|
-
end # Usage
|
61
|
-
end
|