jenerator 0.0.1

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 ADDED
@@ -0,0 +1,29 @@
1
+ # Details
2
+
3
+ Jenerator is a dummy/scaffold for generator for Joomla! extensions. It follows a Nooku style structure and generates
4
+ extensions that can be symlinked automatically using the Nooku Symlinker.
5
+
6
+ Currently generates *components* but the rest of the extension types are planned.
7
+
8
+ # Installation and Usage
9
+
10
+ ## Install:
11
+
12
+ - `$ gem install jenerator`
13
+
14
+ ## To list available generators run
15
+
16
+ - `$ jenerator`
17
+
18
+ ## To generate an extension just past a name
19
+
20
+ - `$ jenerator component helloworld`
21
+
22
+ ## To get help for a generator run:
23
+
24
+ - `$ jenerator generator_name -h`
25
+
26
+ e.g
27
+ - `$ jenerator component -h`
28
+
29
+ # More Docs Coming Soon
data/jenerator.gemspec ADDED
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env gem build
2
+ # encoding: utf-8
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "jenerator"
6
+ s.rubyforge_project = "jenerator"
7
+ s.authors = ["Ken Erickson"]
8
+ s.email = "bookworm.productions@gmail.com"
9
+ s.summary = "Joomla Generators"
10
+ s.homepage = "http://github.com/bookworm/jenerator"
11
+ s.description = "Generators for easily creating dummy/base Joomla! extensions"
12
+ s.required_rubygems_version = ">= 1.3.6"
13
+ s.version = '0.0.1'
14
+ s.date = Time.now.strftime("%Y-%m-%d")
15
+
16
+ s.extra_rdoc_files = Dir["*.rdoc"]
17
+ s.files = `git ls-files`.split("\n") | Dir.glob("{lib}/**/*")
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
+ s.rdoc_options = ["--charset=UTF-8"]
22
+
23
+ s.add_dependency("bundler", "~> 1.0")
24
+ s.add_dependency("thor")
25
+ s.add_dependency("ffaker")
26
+ s.add_dependency("active_support")
27
+ end
data/lib/jenerator.rb ADDED
@@ -0,0 +1,30 @@
1
+ require 'active_support/core_ext'
2
+ require 'active_support/ordered_hash'
3
+ require 'ffaker'
4
+
5
+ module Jenerator
6
+ module Generators
7
+ # Path To Source Folder
8
+ DEV_PATH = File.expand_path("../../", File.dirname(__FILE__))
9
+
10
+ class << self
11
+ def load_paths
12
+ @_files ||= []
13
+ end
14
+
15
+ def mappings
16
+ @_mappings ||= ActiveSupport::OrderedHash.new
17
+ end
18
+
19
+ def add_generator(name, klass)
20
+ mappings[name] = klass
21
+ end
22
+
23
+ def load_components!
24
+ load_paths.flatten.each { |file| require file }
25
+ end
26
+ end
27
+ end
28
+ end
29
+
30
+ Jenerator::Generators.load_paths << Dir[File.dirname(__FILE__) + '/jenerator/generators/{actions,component}.rb']
@@ -0,0 +1,26 @@
1
+ require 'thor/group'
2
+
3
+ module Jenerator
4
+ class CLI < Thor::Group
5
+ include Thor::Actions
6
+
7
+ class_option :root, :desc => "The root destination", :aliases => '-r', :default => ".", :type => :string
8
+ class_option :help, :type => :boolean, :desc => "Show help usage"
9
+
10
+ # Loads the components available for all generators.
11
+ # @private
12
+ def setup
13
+ Jenerator::Generators.load_components!
14
+
15
+ generator_kind = ARGV.delete_at(0).to_s.downcase.to_sym if ARGV[0].present?
16
+ generator_class = Jenerator::Generators.mappings[generator_kind]
17
+
18
+ if generator_class
19
+ args = ARGV.empty? && generator_class.require_arguments? ? ["-h"] : ARGV
20
+ generator_class.start(args)
21
+ else
22
+ puts "Please specify generator to use (#{Jenerator::Generators.mappings.keys.join(", ")})"
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,21 @@
1
+ module Jenerator
2
+ module Actions
3
+ def self.included(base)
4
+ base.extend(ClassMethods)
5
+ end
6
+
7
+ def destination_root(*paths)
8
+ File.expand_path(File.join(@destination_stack.last, paths))
9
+ end
10
+
11
+ module ClassMethods
12
+ def require_arguments!
13
+ @require_arguments = true
14
+ end
15
+
16
+ def require_arguments?
17
+ @require_arguments
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,50 @@
1
+ module Jenerator
2
+ module Generators
3
+ class Component < Thor::Group
4
+ include Thor::Actions
5
+ include Jenerator::Actions
6
+
7
+ Jenerator::Generators.add_generator(:component, self)
8
+
9
+ def self.source_root; File.expand_path(File.dirname(__FILE__)); end
10
+ def self.banner; "jenerator component [name]"; end
11
+
12
+ desc "Description:\n\n\tjenerator component generates a new Joomla! Component"
13
+
14
+ argument :name, :desc => "The name of the component"
15
+
16
+ class_option :joomla_version, :desc => 'Joomla version', :default => '2.5'
17
+ class_option :element, :desc => "The name of the component", :default => "com_NAME"
18
+ class_option :author, :desc => "The author", :default => Faker::Name.name
19
+ class_option :copyright, :desc => "The copyright", :default => "Copyright Author"
20
+ class_option :licenser, :desc => "The license", :default => "GPL V3"
21
+ class_option :author_emai, :desc => "The author's email", :default => Faker::Internet.email
22
+ class_option :author_url, :desc => "The author's url", :default => "http://#{Faker::Internet.domain_name}"
23
+ class_option :version, :desc => "The version", :default => "#{rand(100)}.#{rand(100)}.#{rand(100)}"
24
+ class_option :description, :desc => "The description", :default => Faker::Lorem.paragraphs(1).join("\n")
25
+
26
+ require_arguments!
27
+
28
+ def create_component
29
+ new_options = options.dup
30
+ options = new_options
31
+
32
+ options[:element] = "com_#{self.name.downcase}" if options[:element] == 'com_NAME'
33
+ options[:copyright] = "Copyright #{options[:author]}" if options[:copyright] == "Copyright Author"
34
+
35
+
36
+ self.destination_root = File.join(self.destination_root, options[:element])
37
+ empty_directory "code/administrator/components/#{options[:element]}"
38
+ empty_directory "code/site/components/#{options[:element]}"
39
+ empty_directory "packages"
40
+ empty_directory "tasks"
41
+
42
+ template "templates/joomla#{options[:joomla_version]}/component/manifest.xml.tt", destination_root("code", "manifest.xml"), options
43
+ template "templates/joomla#{options[:joomla_version]}/component/admin.php.tt",
44
+ destination_root("code/administrator/components/#{options[:element]}", "#{self.name.downcase}.php"), options
45
+ template "templates/joomla#{options[:joomla_version]}/component/site.php.tt",
46
+ destination_root("code/site/components/#{options[:element]}", "#{self.name.downcase}.php"), options
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,6 @@
1
+ <?php
2
+
3
+ // No direct access to this file
4
+ defined('_JEXEC') or die('Restricted access');
5
+
6
+ echo 'Hello World';
@@ -0,0 +1,39 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <install type="component" version="2.5.0" method="upgrade">
3
+ <name><%= @name =></name>
4
+ <author><%= config[:author] =></author>
5
+ <creationDate><%= config[:creation_date] =></creationDate>
6
+ <copyright><%= config[:copyright] =></copyright>
7
+ <license><%= config[:license] =></license>
8
+ <authorEmail><%= config[:author_email] =></authorEmail>
9
+ <authorUrl><%= config[:author_url] =></authorUrl>
10
+ <version><%= config[:version] =></version>
11
+ <description><%= config[:description] =></description>
12
+
13
+ <install> <!-- Runs on install -->
14
+ <sql>
15
+ <file driver="mysql" charset="utf8">sql/install.mysql.utf8.sql</file>
16
+ </sql>
17
+ </install>
18
+ <uninstall> <!-- Runs on uninstall -->
19
+ <sql>
20
+ <file driver="mysql" charset="utf8">sql/uninstall.mysql.utf8.sql</file>
21
+ </sql>
22
+ </uninstall>
23
+ <update> <!-- Runs on update; New in 1.6 -->
24
+ <schemas>
25
+ <schemapath type="mysql">sql/updates/mysql</schemapath>
26
+ </schemas>
27
+ </update>
28
+
29
+ <files folder="site/components/<%= @element =>">
30
+ <filename><= @name =>.php</filename>
31
+ </files>
32
+
33
+ <administration>
34
+ <files folder="administrator/components/<%= @element =>">
35
+ <filename><%= @name =>.php</filename>
36
+ <folder>sql</folder>
37
+ </files>
38
+ </administration>
39
+ </install>
@@ -0,0 +1,6 @@
1
+ <?php
2
+
3
+ // No direct access to this file
4
+ defined('_JEXEC') or die('Restricted access');
5
+
6
+ echo 'Hello World';
metadata ADDED
@@ -0,0 +1,99 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jenerator
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Ken Erickson
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-08-16 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: &2161096400 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '1.0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *2161096400
25
+ - !ruby/object:Gem::Dependency
26
+ name: thor
27
+ requirement: &2161095940 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *2161095940
36
+ - !ruby/object:Gem::Dependency
37
+ name: ffaker
38
+ requirement: &2161095280 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *2161095280
47
+ - !ruby/object:Gem::Dependency
48
+ name: active_support
49
+ requirement: &2161094860 !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: *2161094860
58
+ description: Generators for easily creating dummy/base Joomla! extensions
59
+ email: bookworm.productions@gmail.com
60
+ executables: []
61
+ extensions: []
62
+ extra_rdoc_files: []
63
+ files:
64
+ - README.md
65
+ - jenerator.gemspec
66
+ - lib/jenerator.rb
67
+ - lib/jenerator/cli.rb
68
+ - lib/jenerator/generators/actions.rb
69
+ - lib/jenerator/generators/component.rb
70
+ - lib/jenerator/generators/templates/joomla2.5/component/admin.php.tt
71
+ - lib/jenerator/generators/templates/joomla2.5/component/manifest.xml.tt
72
+ - lib/jenerator/generators/templates/joomla2.5/component/site.php.tt
73
+ homepage: http://github.com/bookworm/jenerator
74
+ licenses: []
75
+ post_install_message:
76
+ rdoc_options:
77
+ - --charset=UTF-8
78
+ require_paths:
79
+ - lib
80
+ required_ruby_version: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ required_rubygems_version: !ruby/object:Gem::Requirement
87
+ none: false
88
+ requirements:
89
+ - - ! '>='
90
+ - !ruby/object:Gem::Version
91
+ version: 1.3.6
92
+ requirements: []
93
+ rubyforge_project: jenerator
94
+ rubygems_version: 1.8.11
95
+ signing_key:
96
+ specification_version: 3
97
+ summary: Joomla Generators
98
+ test_files: []
99
+ has_rdoc: