zync-gen 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,3 @@
1
+ pkg/*
2
+ *.gem
3
+ .bundle
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
data/README.md ADDED
File without changes
data/Rakefile ADDED
@@ -0,0 +1,7 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require 'rspec/core/rake_task'
5
+ RSpec::Core::RakeTask.new(:spec) do |spec|
6
+ spec.pattern = 'spec/**/*_spec.rb'
7
+ end
data/bin/zync ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+ $:.unshift File.expand_path("../../lib", __FILE__)
3
+
4
+ require 'zync-gen'
5
+ require 'zync-gen/generators/cli'
6
+
7
+ Zync::Generators::Cli.start(ARGV)
data/lib/zync-gen.rb ADDED
@@ -0,0 +1,3 @@
1
+ require 'active_support/core_ext/object/blank'
2
+ require 'active_support/core_ext/string'
3
+ require 'zync-gen/generators'
@@ -0,0 +1,28 @@
1
+ module Zync
2
+ module Generators
3
+ extend self
4
+
5
+ autoload :Base, 'zync-gen/generators/base'
6
+ autoload :Actions, 'zync-gen/generators/actions'
7
+ autoload :NamedBase, 'zync-gen/generators/named_base'
8
+
9
+
10
+ ##
11
+ # Return a ordered list of task with their class
12
+ #
13
+ def mappings
14
+ @_mappings ||= {}
15
+ end
16
+
17
+ ##
18
+ # Add a generator
19
+ #
20
+ def add_generator(name, klass)
21
+ mappings[name] = klass
22
+ end
23
+
24
+ end
25
+ end
26
+
27
+ require 'zync-gen/generators/app'
28
+ require 'zync-gen/generators/cli'
@@ -0,0 +1,23 @@
1
+ require 'active_support/concern'
2
+
3
+ module Zync
4
+ module Generators
5
+ module Actions
6
+ extend ActiveSupport::Concern
7
+
8
+ module ClassMethods
9
+
10
+ # Tell to zync that for this Thor::Group is necessary a task to run
11
+ def require_arguments!
12
+ @require_arguments = true
13
+ end
14
+
15
+ # Return true if we need an arguments for our Thor::Group
16
+ def require_arguments?
17
+ @require_arguments
18
+ end
19
+
20
+ end
21
+ end
22
+ end # Generators
23
+ end # Zync
@@ -0,0 +1,136 @@
1
+ module Zync
2
+ module Generators
3
+
4
+ class AppBuilder
5
+ attr_reader :options
6
+
7
+ def initialize(generator)
8
+ @generator = generator
9
+ @options = generator.options
10
+ end
11
+
12
+ def app
13
+ directory 'app'
14
+ end
15
+
16
+ def config
17
+ empty_directory "config"
18
+
19
+ inside "config" do
20
+ template "application.rb"
21
+ template "boot.rb"
22
+ template "environment.rb"
23
+ empty_directory "environments"
24
+ empty_directory "initializers"
25
+ template "routes.rb"
26
+ template 'settings.yml'
27
+ end
28
+ end
29
+
30
+ def configru
31
+ template "config.ru"
32
+ end
33
+
34
+ def gemfile
35
+ template "Gemfile"
36
+ end
37
+
38
+ def lib
39
+ empty_directory 'lib'
40
+ end
41
+
42
+ def log
43
+ empty_directory 'log'
44
+
45
+ inside "log" do
46
+ %w( server production development test ).each do |file|
47
+ create_file "#{file}.log"
48
+ chmod "#{file}.log", 0666, :verbose => false
49
+ end
50
+ end
51
+ end
52
+
53
+ def script
54
+ directory 'script'
55
+ chmod "script", 0755, :verbose => false
56
+ end
57
+
58
+ def tmp
59
+ empty_directory 'tmp'
60
+ end
61
+
62
+ def vendor
63
+ empty_directory 'vendor'
64
+ end
65
+
66
+ private
67
+
68
+ def method_missing(meth, *args, &block)
69
+ @generator.send(meth, *args, &block)
70
+ end
71
+
72
+ end
73
+
74
+ class AppGenerator < NamedBase
75
+ Zync::Generators.add_generator(:new, self)
76
+
77
+ def create_root
78
+ self.destination_root = File.expand_path(name, destination_root)
79
+ empty_directory '.'
80
+ FileUtils.cd(destination_root)
81
+ end
82
+
83
+ def create_root_files
84
+ build(:configru)
85
+ build(:gemfile)
86
+ end
87
+
88
+ def create_app_files
89
+ build(:app)
90
+ end
91
+
92
+ def create_config_files
93
+ build(:config)
94
+ end
95
+
96
+ def create_lib_files
97
+ build(:lib)
98
+ end
99
+
100
+ def create_log_files
101
+ build(:log)
102
+ end
103
+
104
+ def create_script_files
105
+ build(:script)
106
+ end
107
+
108
+ def create_tmp_files
109
+ build(:tmp)
110
+ end
111
+
112
+ def create_vendor_files
113
+ build(:vendor)
114
+ end
115
+
116
+ protected
117
+
118
+ def app_const_base
119
+ @app_const_base ||= name.gsub(/\W/, '_').squeeze('_').camelize
120
+ end
121
+
122
+ def app_const
123
+ @app_const ||= "#{app_const_base}::Application"
124
+ end
125
+
126
+ def builder
127
+ @builder ||= AppBuilder.new(self)
128
+ end
129
+
130
+ def build(meth, *args)
131
+ builder.send(meth, *args) if builder.respond_to?(meth)
132
+ end
133
+ end
134
+
135
+ end # Generators
136
+ end # Zync
@@ -0,0 +1,4 @@
1
+ source :rubygems
2
+
3
+ gem 'zync'
4
+ gem 'thin'
@@ -0,0 +1,3 @@
1
+ class ApplicationController < Zync::Controller
2
+
3
+ end
@@ -0,0 +1,4 @@
1
+ # This file is used by Rack-based servers to start the application.
2
+
3
+ require ::File.expand_path('../config/environment', __FILE__)
4
+ run <%= app_const %>
@@ -0,0 +1,13 @@
1
+ require File.expand_path('../boot', __FILE__)
2
+
3
+ # Load Zync framework:
4
+ require 'zync'
5
+
6
+ # If you have a Gemfile, require the gems listed there, including any gems
7
+ # you've limited to :test, :development, or :production.
8
+ Bundler.require(:default) if defined?(Bundler)
9
+
10
+ module <%= app_const_base %>
11
+ class Application < Zync::Application
12
+ end
13
+ end
@@ -0,0 +1,24 @@
1
+ require 'rubygems'
2
+
3
+ ZYNC_ROOT = File.expand_path('../../', __FILE__)
4
+
5
+ # Set up gems listed in the Gemfile.
6
+ gemfile = "#{ZYNC_ROOT}/Gemfile"
7
+ begin
8
+ ENV['BUNDLE_GEMFILE'] = gemfile
9
+ require 'bundler'
10
+ Bundler.setup
11
+ rescue Bundler::GemNotFound => e
12
+ STDERR.puts e.message
13
+ STDERR.puts "Try running `bundle install`."
14
+ exit!
15
+ end if File.exist?(gemfile)
16
+
17
+ # Load libraries in the vendor directory
18
+ vendor_path = "#{ZYNC_ROOT}/vendor"
19
+ Dir.entries(vendor_path).each do |vendor|
20
+ vendor_lib = "#{vendor_path}/#{vendor}/lib"
21
+ if File.directory?(vendor_lib) && vendor != '..'
22
+ $:.unshift vendor_lib
23
+ end
24
+ end if File.exists?(vendor_path)
@@ -0,0 +1,5 @@
1
+ # Load the rails application
2
+ require File.expand_path('../application', __FILE__)
3
+
4
+ # Initialize the application
5
+ <%= app_const %>.initialize!
@@ -0,0 +1,3 @@
1
+ <%= app_const %>.routes.draw do
2
+ # match '/', :to => 'hello#index'
3
+ end
@@ -0,0 +1,5 @@
1
+ development:
2
+
3
+ test:
4
+
5
+ production:
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler'
4
+ Bundler.setup
5
+
6
+ require 'eventmachine'
7
+
8
+ EM.run do
9
+ gem 'thin'
10
+ load Gem.bin_path('thin')
11
+ end
@@ -0,0 +1,52 @@
1
+ begin
2
+ require 'thor/group'
3
+ rescue LoadError
4
+ puts "Thor is not available"
5
+ exit
6
+ end
7
+
8
+ module Zync
9
+ module Generators
10
+
11
+ class Error < Thor::Error
12
+ end
13
+
14
+ class Base < Thor::Group
15
+ include Thor::Actions
16
+ include Zync::Generators::Actions
17
+
18
+ # Returns the base root for a common set of generators.
19
+ def self.base_root
20
+ File.dirname(__FILE__)
21
+ end
22
+
23
+ # Returns the source root for this generator
24
+ def self.source_root(path=nil)
25
+ @_source_root = path if path
26
+ @_source_root ||= default_source_root
27
+ end
28
+
29
+ # Returns the default source root for a given generator.
30
+ def self.default_source_root
31
+ return unless generator_name
32
+ path = File.expand_path(File.join(generator_name, 'templates'), base_root)
33
+ path if File.exists?(path)
34
+ end
35
+
36
+ protected
37
+
38
+ # Removes the namespaces and get the generator name. For example,
39
+ # Zync::Generators::ModelGenerator will return "model" as generator name.
40
+ #
41
+ def self.generator_name
42
+ @generator_name ||= begin
43
+ if generator = name.to_s.split('::').last
44
+ generator.sub!(/Generator$/, '')
45
+ generator.underscore
46
+ end
47
+ end
48
+ end
49
+
50
+ end
51
+ end # Generators
52
+ end #Zync
@@ -0,0 +1,21 @@
1
+ module Zync
2
+ module Generators
3
+ class Cli < Thor::Group
4
+ include Thor::Actions
5
+
6
+ def setup
7
+ generator_kind = ARGV.delete_at(0).to_s.downcase.to_sym if ARGV[0].present?
8
+ generator_class = Zync::Generators.mappings[generator_kind]
9
+
10
+ if generator_class
11
+ args = ARGV.empty? && generator_class.require_arguments? ? ["-h"] : ARGV
12
+ generator_class.start(args)
13
+ else
14
+ puts "FAIL"
15
+ # TODO: specify generators
16
+ end
17
+ end
18
+
19
+ end
20
+ end # Generators
21
+ end # Zync
@@ -0,0 +1,10 @@
1
+ module Zync
2
+ module Generators
3
+ class NamedBase < Base
4
+ argument :name, :type => :string
5
+
6
+ require_arguments!
7
+ end
8
+ end # Generators
9
+ #
10
+ end # Zync
@@ -0,0 +1,5 @@
1
+ module Zync
2
+ module Generators
3
+ VERSION = "0.1.0"
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ require 'spec_helper'
2
+
3
+ describe Zync::Generators::AppGenerator do
4
+
5
+ end
@@ -0,0 +1,21 @@
1
+ begin
2
+ require 'bundler'
3
+ Bundler.setup(:default, :development)
4
+ rescue LoadError => e
5
+ # Fall back on doing an unlocked resolve at runtime.
6
+ STDERR.puts e.message
7
+ STDERR.puts "Try running `bundle install`."
8
+ exit!
9
+ end
10
+
11
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
12
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
13
+
14
+ require 'zync-gen'
15
+ require 'rspec'
16
+
17
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
18
+
19
+ RSpec.configure do |config|
20
+ config.mock_with :rspec
21
+ end
data/zync-gen.gemspec ADDED
@@ -0,0 +1,27 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "zync-gen/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "zync-gen"
7
+ s.version = Zync::Generators::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Peter Kieltyka", "Kevin Faustino"]
10
+ s.email = ["kevin.faustino@nulayer.com"]
11
+ s.homepage = "http://github.com/nulayer/zync"
12
+ s.summary = %q{Generators for Zync}
13
+ s.description = %q{A Collection of generators for the Zync Web Framework}
14
+
15
+ s.rubyforge_project = "zync-gen"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
21
+
22
+ s.add_dependency("thor", ["~> 0.14.6"])
23
+ s.add_dependency("activesupport", ["~> 3.0.3"])
24
+ s.add_dependency("i18n")
25
+
26
+ s.add_development_dependency("rspec", ["~> 2.3.0"])
27
+ end
metadata ADDED
@@ -0,0 +1,148 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: zync-gen
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 1
8
+ - 0
9
+ version: 0.1.0
10
+ platform: ruby
11
+ authors:
12
+ - Peter Kieltyka
13
+ - Kevin Faustino
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-12-14 00:00:00 -05:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: thor
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ segments:
30
+ - 0
31
+ - 14
32
+ - 6
33
+ version: 0.14.6
34
+ type: :runtime
35
+ version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
37
+ name: activesupport
38
+ prerelease: false
39
+ requirement: &id002 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ~>
43
+ - !ruby/object:Gem::Version
44
+ segments:
45
+ - 3
46
+ - 0
47
+ - 3
48
+ version: 3.0.3
49
+ type: :runtime
50
+ version_requirements: *id002
51
+ - !ruby/object:Gem::Dependency
52
+ name: i18n
53
+ prerelease: false
54
+ requirement: &id003 !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ segments:
60
+ - 0
61
+ version: "0"
62
+ type: :runtime
63
+ version_requirements: *id003
64
+ - !ruby/object:Gem::Dependency
65
+ name: rspec
66
+ prerelease: false
67
+ requirement: &id004 !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ~>
71
+ - !ruby/object:Gem::Version
72
+ segments:
73
+ - 2
74
+ - 3
75
+ - 0
76
+ version: 2.3.0
77
+ type: :development
78
+ version_requirements: *id004
79
+ description: A Collection of generators for the Zync Web Framework
80
+ email:
81
+ - kevin.faustino@nulayer.com
82
+ executables:
83
+ - zync
84
+ extensions: []
85
+
86
+ extra_rdoc_files: []
87
+
88
+ files:
89
+ - .gitignore
90
+ - Gemfile
91
+ - README.md
92
+ - Rakefile
93
+ - bin/zync
94
+ - lib/zync-gen.rb
95
+ - lib/zync-gen/generators.rb
96
+ - lib/zync-gen/generators/actions.rb
97
+ - lib/zync-gen/generators/app.rb
98
+ - lib/zync-gen/generators/app/templates/Gemfile
99
+ - lib/zync-gen/generators/app/templates/app/controllers/application_controller.rb
100
+ - lib/zync-gen/generators/app/templates/config.ru
101
+ - lib/zync-gen/generators/app/templates/config/application.rb
102
+ - lib/zync-gen/generators/app/templates/config/boot.rb
103
+ - lib/zync-gen/generators/app/templates/config/environment.rb
104
+ - lib/zync-gen/generators/app/templates/config/routes.rb
105
+ - lib/zync-gen/generators/app/templates/config/settings.yml
106
+ - lib/zync-gen/generators/app/templates/script/server
107
+ - lib/zync-gen/generators/base.rb
108
+ - lib/zync-gen/generators/cli.rb
109
+ - lib/zync-gen/generators/named_base.rb
110
+ - lib/zync-gen/version.rb
111
+ - spec/generators/app_spec.rb
112
+ - spec/spec_helper.rb
113
+ - zync-gen.gemspec
114
+ has_rdoc: true
115
+ homepage: http://github.com/nulayer/zync
116
+ licenses: []
117
+
118
+ post_install_message:
119
+ rdoc_options: []
120
+
121
+ require_paths:
122
+ - lib
123
+ required_ruby_version: !ruby/object:Gem::Requirement
124
+ none: false
125
+ requirements:
126
+ - - ">="
127
+ - !ruby/object:Gem::Version
128
+ segments:
129
+ - 0
130
+ version: "0"
131
+ required_rubygems_version: !ruby/object:Gem::Requirement
132
+ none: false
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ segments:
137
+ - 0
138
+ version: "0"
139
+ requirements: []
140
+
141
+ rubyforge_project: zync-gen
142
+ rubygems_version: 1.3.7
143
+ signing_key:
144
+ specification_version: 3
145
+ summary: Generators for Zync
146
+ test_files:
147
+ - spec/generators/app_spec.rb
148
+ - spec/spec_helper.rb