bixbite 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/LICENSE +20 -0
- data/README.markdown +49 -0
- data/VERSION +1 -0
- data/bin/bixbite +73 -0
- data/lib/bixbite.rb +13 -0
- data/lib/bixbite/command.rb +14 -0
- data/lib/bixbite/create.rb +76 -0
- data/template/Rakefile +25 -0
- data/template/assets/bixbite/Rakefile.rb +297 -0
- data/template/assets/naturaldocs/NaturalDocs/Config/Languages.txt +286 -0
- data/template/assets/naturaldocs/NaturalDocs/Config/Topics.txt +382 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/customizinglanguages.html +52 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/customizingtopics.html +74 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/documenting.html +58 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/documenting/reference.html +146 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/documenting/walkthrough.html +180 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/example/Default.css +528 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/example/NaturalDocs.js +204 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/examples.css +90 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/images/header/background.png +0 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/images/header/leftside.png +0 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/images/header/logo.png +0 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/images/header/overbody.png +0 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/images/header/overbodybg.png +0 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/images/header/overleftmargin.png +0 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/images/header/overmenu.png +0 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/images/header/overmenubg.png +0 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/images/header/rightside.png +0 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/images/logo.gif +0 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/images/menu/about.png +0 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/images/menu/background.png +0 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/images/menu/bottomleft.png +0 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/images/menu/bottomright.png +0 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/images/menu/community.png +0 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/images/menu/customizing.png +0 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/images/menu/using.png +0 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/index.html +9 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/javascript/BrowserStyles.js +77 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/javascript/PNGHandling.js +72 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/keywords.html +38 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/languages.html +32 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/menu.html +79 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/output.html +84 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/running.html +40 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/styles.css +290 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/styles.html +52 -0
- data/template/assets/naturaldocs/NaturalDocs/Help/troubleshooting.html +18 -0
- data/template/assets/naturaldocs/NaturalDocs/Info/CSSGuide.txt +947 -0
- data/template/assets/naturaldocs/NaturalDocs/Info/File Parsing.txt +83 -0
- data/template/assets/naturaldocs/NaturalDocs/Info/HTMLTestCases.pm +269 -0
- data/template/assets/naturaldocs/NaturalDocs/Info/Languages.txt +107 -0
- data/template/assets/naturaldocs/NaturalDocs/Info/NDMarkup.txt +91 -0
- data/template/assets/naturaldocs/NaturalDocs/Info/Symbol Management.txt +59 -0
- data/template/assets/naturaldocs/NaturalDocs/Info/images/Logo.png +0 -0
- data/template/assets/naturaldocs/NaturalDocs/JavaScript/NaturalDocs.js +836 -0
- data/template/assets/naturaldocs/NaturalDocs/License-GPL.txt +341 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/BinaryFile.pm +294 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Builder.pm +280 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Builder/Base.pm +348 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Builder/FramedHTML.pm +345 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Builder/HTML.pm +398 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Builder/HTMLBase.pm +3693 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/ClassHierarchy.pm +860 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/ClassHierarchy/Class.pm +412 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/ClassHierarchy/File.pm +157 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/ConfigFile.pm +497 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Constants.pm +165 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/DefineMembers.pm +100 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Error.pm +305 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/File.pm +540 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/ImageReferenceTable.pm +383 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/ImageReferenceTable/Reference.pm +44 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/ImageReferenceTable/String.pm +110 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages.pm +1475 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/ActionScript.pm +1473 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Ada.pm +38 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Advanced.pm +828 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Advanced/Scope.pm +95 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Advanced/ScopeChange.pm +70 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Base.pm +832 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/CSharp.pm +1484 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/PLSQL.pm +319 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Pascal.pm +143 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Perl.pm +1370 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Prototype.pm +92 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Prototype/Parameter.pm +87 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Simple.pm +503 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Tcl.pm +219 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Menu.pm +3406 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Menu/Entry.pm +201 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/NDMarkup.pm +76 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Parser.pm +1331 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Parser/JavaDoc.pm +464 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Parser/Native.pm +1060 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Parser/ParsedTopic.pm +253 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Project.pm +1402 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Project/ImageFile.pm +160 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Project/SourceFile.pm +113 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/ReferenceString.pm +334 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Settings.pm +1418 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Settings/BuildTarget.pm +66 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SourceDB.pm +678 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SourceDB/Extension.pm +84 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SourceDB/File.pm +129 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SourceDB/Item.pm +201 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SourceDB/ItemDefinition.pm +45 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SourceDB/WatchedFileDefinitions.pm +159 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/StatusMessage.pm +102 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SymbolString.pm +212 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SymbolTable.pm +1984 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SymbolTable/File.pm +186 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SymbolTable/IndexElement.pm +522 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SymbolTable/Reference.pm +273 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SymbolTable/ReferenceTarget.pm +97 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SymbolTable/Symbol.pm +428 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SymbolTable/SymbolDefinition.pm +96 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Topics.pm +1319 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Topics/Type.pm +151 -0
- data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Version.pm +384 -0
- data/template/assets/naturaldocs/NaturalDocs/NaturalDocs +400 -0
- data/template/assets/naturaldocs/NaturalDocs/NaturalDocs.bat +17 -0
- data/template/assets/naturaldocs/NaturalDocs/Styles/Default.css +767 -0
- data/template/assets/naturaldocs/NaturalDocs/Styles/Roman.css +765 -0
- data/template/assets/naturaldocs/NaturalDocs/Styles/Small.css +763 -0
- data/template/assets/utilities/pngout +0 -0
- data/template/deploy/public_html/.htaccess +0 -0
- data/template/documentation/js/.htaccess +0 -0
- data/template/src/html/.htaccess +76 -0
- data/template/src/html/css/cmn/global.css +96 -0
- data/template/src/html/css/cmn/ie.css +15 -0
- data/template/src/html/css/cmn/ie6.css +15 -0
- data/template/src/html/images/cmn/.htaccess +0 -0
- data/template/src/html/images/tmp/.htaccess +0 -0
- data/template/src/html/includes/debug.inc +5 -0
- data/template/src/html/includes/footer.inc +52 -0
- data/template/src/html/includes/header.inc +61 -0
- data/template/src/html/includes/html.inc +3 -0
- data/template/src/html/includes/namespace.inc +19 -0
- data/template/src/html/includes/page.inc +151 -0
- data/template/src/html/index.html +35 -0
- data/template/src/html/js/cmn/bootstrap.js +74 -0
- data/template/src/html/js/cmn/global.js +142 -0
- data/template/src/html/js/cmn/lib/LAB.js +348 -0
- data/template/src/html/min/.htaccess +4 -0
- data/template/src/html/min/MinifyCLI.php +19 -0
- data/template/src/html/min/README.txt +132 -0
- data/template/src/html/min/builder/_index.js +242 -0
- data/template/src/html/min/builder/bm.js +36 -0
- data/template/src/html/min/builder/index.php +182 -0
- data/template/src/html/min/builder/ocCheck.php +36 -0
- data/template/src/html/min/builder/rewriteTest.js +1 -0
- data/template/src/html/min/config.php +187 -0
- data/template/src/html/min/groupsConfig.php +34 -0
- data/template/src/html/min/index.php +66 -0
- data/template/src/html/min/lib/FirePHP.php +1370 -0
- data/template/src/html/min/lib/HTTP/ConditionalGet.php +348 -0
- data/template/src/html/min/lib/HTTP/Encoder.php +326 -0
- data/template/src/html/min/lib/JSMin.php +314 -0
- data/template/src/html/min/lib/JSMinPlus.php +1872 -0
- data/template/src/html/min/lib/Minify.php +532 -0
- data/template/src/html/min/lib/Minify/Build.php +103 -0
- data/template/src/html/min/lib/Minify/CSS.php +83 -0
- data/template/src/html/min/lib/Minify/CSS/Compressor.php +250 -0
- data/template/src/html/min/lib/Minify/CSS/UriRewriter.php +270 -0
- data/template/src/html/min/lib/Minify/Cache/APC.php +130 -0
- data/template/src/html/min/lib/Minify/Cache/File.php +125 -0
- data/template/src/html/min/lib/Minify/Cache/Memcache.php +137 -0
- data/template/src/html/min/lib/Minify/ClosureCompiler.php +85 -0
- data/template/src/html/min/lib/Minify/CommentPreserver.php +90 -0
- data/template/src/html/min/lib/Minify/Controller/Base.php +202 -0
- data/template/src/html/min/lib/Minify/Controller/Files.php +78 -0
- data/template/src/html/min/lib/Minify/Controller/Groups.php +94 -0
- data/template/src/html/min/lib/Minify/Controller/MinApp.php +132 -0
- data/template/src/html/min/lib/Minify/Controller/Page.php +82 -0
- data/template/src/html/min/lib/Minify/Controller/Version1.php +118 -0
- data/template/src/html/min/lib/Minify/HTML.php +245 -0
- data/template/src/html/min/lib/Minify/ImportProcessor.php +157 -0
- data/template/src/html/min/lib/Minify/Lines.php +131 -0
- data/template/src/html/min/lib/Minify/Logger.php +45 -0
- data/template/src/html/min/lib/Minify/Packer.php +37 -0
- data/template/src/html/min/lib/Minify/Source.php +187 -0
- data/template/src/html/min/lib/Minify/YUICompressor.php +139 -0
- data/template/src/html/min/lib/Solar/Dir.php +199 -0
- data/template/src/html/min/lib/closure-compiler.jar +0 -0
- data/template/src/html/min/lib/yuicompressor-2.4.2.jar +0 -0
- data/template/src/html/min/utils.php +90 -0
- data/template/src/templates/css/template.css +7 -0
- data/template/src/templates/js/template.js +72 -0
- data/template/src/templates/template.html +18 -0
- data/template/src/yaml/config.yml +46 -0
- data/template/src/yaml/deploy.yml +35 -0
- data/test/bixbite_test.rb +7 -0
- data/test/test_helper.rb +10 -0
- metadata +278 -0
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2009 Richard Herrera
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.markdown
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
# Bixbite Project Initializer
|
2
|
+
|
3
|
+
Bixbite creates a project structure optimal for client-side development.
|
4
|
+
|
5
|
+
* Downloads the latest versions of [Google Ajax API Libraries](http://code.google.com/apis/ajaxlibs/)
|
6
|
+
* Uses [LABjs](http://labjs.com/) for parallelized script management
|
7
|
+
* Allows full use of PHP includes for shared module management
|
8
|
+
* Bundles a customized [PHP Minify](http://code.google.com/p/minify/) package for on-the-fly compression tests
|
9
|
+
* Dynamic to static publishing eliminates server-side dependencies on delivery
|
10
|
+
|
11
|
+
Additionally, Bixbite includes rake tasks to automatically:
|
12
|
+
|
13
|
+
* Create new page templates & associated JS/CSS files
|
14
|
+
* Prepare files for deployment
|
15
|
+
* Generate NaturalDocs-compliant documentation
|
16
|
+
* Compress PNG files using [PNGout](http://advsys.net/ken/utils.htm)
|
17
|
+
* Gracefully degrade 24-bit PNG files for Internet Explorer 6
|
18
|
+
* Deliver compressed versions of CSS & JavaScript files
|
19
|
+
* Add new files, remove outdated files from Subversion
|
20
|
+
* Generate diff reports for each delivery
|
21
|
+
|
22
|
+
## Links
|
23
|
+
|
24
|
+
* [Wiki](http://wiki.github.com/doctyper/bixbite)
|
25
|
+
* [Bugs](http://github.com/doctyper/bixbite/issues)
|
26
|
+
|
27
|
+
## Installing
|
28
|
+
|
29
|
+
# Install the gem:
|
30
|
+
gem install bixbite
|
31
|
+
|
32
|
+
# Usage
|
33
|
+
|
34
|
+
# Generating a Bixbite template
|
35
|
+
|
36
|
+
Run the Bixbite gem to generate a new template:
|
37
|
+
|
38
|
+
bixbite "The Foo Project" FOO
|
39
|
+
|
40
|
+
This command will generate a template with a project name of "The Foo Project" and support files (JS/PHP) using the FOO namespace.
|
41
|
+
|
42
|
+
You may also specify arguments when invoked. Via `bixbite --help`:
|
43
|
+
|
44
|
+
* --js-lib [ARG]: use specified JavaScript library (options: jQuery, YUI, MooTools)
|
45
|
+
* --source-directory [ARG]: override bundled template with user-defined template
|
46
|
+
|
47
|
+
# Wiki
|
48
|
+
|
49
|
+
See the [Bixbite wiki](http://wiki.github.com/doctyper/bixbite) for details on how to utilize the generated template. It also contains details on how to use a customized template if you so wish.
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.1.0
|
data/bin/bixbite
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bixbite"
|
4
|
+
require "optparse"
|
5
|
+
require "yaml"
|
6
|
+
require "fileutils"
|
7
|
+
require "net/http"
|
8
|
+
require "highline/import"
|
9
|
+
|
10
|
+
# Argument defaults
|
11
|
+
options = {
|
12
|
+
:source => File.expand_path(File.dirname(__FILE__) + "/../template/"),
|
13
|
+
:destination => File.expand_path(Dir.getwd),
|
14
|
+
:lib => 'jQuery'
|
15
|
+
}
|
16
|
+
|
17
|
+
USER_TEMPLATE = File.expand_path(File.dirname(__FILE__) + "/../user-defined-template")
|
18
|
+
options[:source] = USER_TEMPLATE if File.exists?(USER_TEMPLATE)
|
19
|
+
|
20
|
+
# Config YAML File
|
21
|
+
options[:config] = YAML.load_file(File.join(options[:source], "src", "yaml", "config.yml"));
|
22
|
+
|
23
|
+
# Get arguments
|
24
|
+
opts = OptionParser.new do |o|
|
25
|
+
o.banner = 'Usage: bixbite "Project Title" PROJECTNAMESPACE [source] [destination]'
|
26
|
+
o.separator ""
|
27
|
+
|
28
|
+
o.on("-l", "--js-lib [ARG]", "Use specified JavaScript library (options: jQuery, YUI, MooTools)") do |lib|
|
29
|
+
options[:lib] = lib
|
30
|
+
end
|
31
|
+
|
32
|
+
o.on_tail("-s", "--source-directory [ARG]", "Override bundled template with user-defined template") do |path|
|
33
|
+
override = ask("Override bundled template with #{File.expand_path(path)} (admin privileges required)? [Y/n] ")
|
34
|
+
|
35
|
+
if (override.downcase == "y")
|
36
|
+
system %(sudo rm -rf #{USER_TEMPLATE}) if File.exists?(USER_TEMPLATE)
|
37
|
+
system %(sudo cp -r #{File.expand_path(path)} #{USER_TEMPLATE})
|
38
|
+
end
|
39
|
+
|
40
|
+
exit
|
41
|
+
end
|
42
|
+
|
43
|
+
o.separator ""
|
44
|
+
|
45
|
+
# Help
|
46
|
+
o.on_tail("-h", "--help", "Show this message") do
|
47
|
+
puts opts
|
48
|
+
exit
|
49
|
+
end
|
50
|
+
|
51
|
+
o.separator ""
|
52
|
+
|
53
|
+
# Version
|
54
|
+
o.on_tail("-v", "--version", "Show version") do
|
55
|
+
puts "bixbite " + Bixbite.version
|
56
|
+
exit
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
opts.parse! # Parse arguments into `options` hash
|
61
|
+
|
62
|
+
# Get source and destintation from command line
|
63
|
+
if (ARGV.size >= 2)
|
64
|
+
options[:title] = ARGV[0]
|
65
|
+
options[:namespace] = ARGV[1]
|
66
|
+
options[:source] = ARGV[2] if ARGV[2]
|
67
|
+
options[:destination] = ARGV[3] if ARGV[3]
|
68
|
+
else
|
69
|
+
puts opts
|
70
|
+
exit
|
71
|
+
end
|
72
|
+
|
73
|
+
Bixbite::Command.new(options).run!
|
data/lib/bixbite.rb
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
module Bixbite
|
2
|
+
class Create
|
3
|
+
attr_accessor :source, :destination, :options
|
4
|
+
|
5
|
+
def initialize options
|
6
|
+
@options = options
|
7
|
+
@config = @options[:config]
|
8
|
+
|
9
|
+
copy @options[:source], @options[:destination]
|
10
|
+
download @options[:lib], @options[:destination]
|
11
|
+
parse @config["parse"], @options[:destination], @options[:title], @options[:namespace]
|
12
|
+
end
|
13
|
+
|
14
|
+
def parse list, source, name, namespace
|
15
|
+
puts "Building project..."
|
16
|
+
list.each do |glob|
|
17
|
+
files = Dir[File.join(source, "template", glob)]
|
18
|
+
files.each do |file|
|
19
|
+
File.open(file, "r+") do |f|
|
20
|
+
lines = f.readlines
|
21
|
+
lines.each do |line|
|
22
|
+
line.gsub!(/__PROJECT_NAME__/, name);
|
23
|
+
line.gsub!(/__PROJECT_NAMESPACE__/, namespace);
|
24
|
+
line.gsub!(/__JS_LIB__/, @options[:lib]);
|
25
|
+
line.gsub!(/__JS_LIB_LOWERCASE__/, @options[:lib].downcase);
|
26
|
+
end
|
27
|
+
f.pos = 0
|
28
|
+
f.print lines
|
29
|
+
f.truncate(f.pos)
|
30
|
+
end unless File.directory?(file)
|
31
|
+
|
32
|
+
File.rename(file, file.gsub(/__PROJECT_NAME__/, name)) if file.match(/__PROJECT_NAME__/)
|
33
|
+
File.rename(file, file.gsub(/__JS_LIB_LOWERCASE__/, @options[:lib].downcase)) if file.match(/__JS_LIB_LOWERCASE__/)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
puts "All done!"
|
37
|
+
end
|
38
|
+
|
39
|
+
def copy source, destination
|
40
|
+
puts "Copying to #{destination}..."
|
41
|
+
FileUtils.cp_r(source, destination)
|
42
|
+
puts "Done!"
|
43
|
+
end
|
44
|
+
|
45
|
+
def download lib, destination
|
46
|
+
require 'net/http'
|
47
|
+
|
48
|
+
def get domain, source, destination
|
49
|
+
Net::HTTP.start(domain) { |http|
|
50
|
+
resp = http.get(source)
|
51
|
+
open(destination, "wb") { |file|
|
52
|
+
file.write(resp.body)
|
53
|
+
puts "Done!"
|
54
|
+
}
|
55
|
+
}
|
56
|
+
end
|
57
|
+
|
58
|
+
google = 'ajax.googleapis.com'
|
59
|
+
file = '__JS_LIB_LOWERCASE__-latest.js'
|
60
|
+
dest = File.join(destination, "template", @config["directories"]["src"]["html"][0], "js/cmn/lib", file)
|
61
|
+
|
62
|
+
puts "Downloading #{lib} from #{google}"
|
63
|
+
|
64
|
+
case lib
|
65
|
+
when 'jQuery'
|
66
|
+
get google, '/ajax/libs/jquery/1/jquery.js', dest
|
67
|
+
when 'YUI'
|
68
|
+
get google, '/ajax/libs/yui/2/build/yuiloader/yuiloader.js', dest
|
69
|
+
when 'MooTools'
|
70
|
+
get google, '/ajax/libs/mootools/1.2/mootools.js', dest
|
71
|
+
else
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
76
|
+
end
|
data/template/Rakefile
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'assets/bixbite/Rakefile'
|
2
|
+
|
3
|
+
###############################################################################
|
4
|
+
#
|
5
|
+
# __PROJECT_NAME__ Build Tasks
|
6
|
+
# See assets/bixbite/Rakefile for more information
|
7
|
+
#
|
8
|
+
# Tasks for pages:
|
9
|
+
# - Update deploy directory: rake prep
|
10
|
+
#
|
11
|
+
# How the delivery is assembled from source:
|
12
|
+
# - The source of the project is kept in src/html
|
13
|
+
# - The directory src/yaml contains a "deploy.yml" file
|
14
|
+
# - The deploy file contains arrays of global patterns for copying files
|
15
|
+
# (files:) and rendering files through the PHP command line interface (render:)
|
16
|
+
# - Run rake prep from the root of trunk.
|
17
|
+
# This will wipe out the existing files in the deploy
|
18
|
+
# folder before copying/rendering files back again. This allows you to
|
19
|
+
# run "svn status" to check to see if files were removed.
|
20
|
+
# - Committing the deploy folder lets you see how the stable, deploy-
|
21
|
+
# ready project changes over time, making changelogs easier to write
|
22
|
+
# - The task will also output/update NaturalDocs-compatible JavaScript documentation
|
23
|
+
# The documentation can be found in documentation/js
|
24
|
+
#
|
25
|
+
###############################################################################
|
@@ -0,0 +1,297 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
require "yaml"
|
4
|
+
require "fileutils"
|
5
|
+
require "highline/import"
|
6
|
+
|
7
|
+
# YAML Files
|
8
|
+
@config = YAML.load_file(File.join("src", "yaml", "config.yml"))
|
9
|
+
@deploy = YAML.load_file(File.join("src", "yaml", "deploy.yml"))
|
10
|
+
|
11
|
+
@dirs = @config["directories"]
|
12
|
+
@project = File.expand_path(File.dirname(__FILE__)).split(@dirs["assets"]["root"][0])[0]
|
13
|
+
|
14
|
+
# Globals
|
15
|
+
@globs = {
|
16
|
+
:project => @project,
|
17
|
+
:utilities => @dirs["assets"]["utilities"][0],
|
18
|
+
:deploy => @dirs["deploy"]["public_html"]["root"][0],
|
19
|
+
:source => @dirs["src"][0],
|
20
|
+
:html => @dirs["src"]["html"][0],
|
21
|
+
:yaml => @dirs["src"]["yaml"][0],
|
22
|
+
:template_path => @dirs["src"]["templates"][0],
|
23
|
+
:name => @config["name"][0],
|
24
|
+
:namespace => @config["namespace"][0],
|
25
|
+
:natdocs => @dirs["assets"]["natural-docs"][0],
|
26
|
+
:jsdocs => @dirs["documentation"]["js-docs"][0]
|
27
|
+
}
|
28
|
+
|
29
|
+
@globs[:files] = Dir[File.join(@globs[:project], @globs[:template_path], "**/*.*")]
|
30
|
+
|
31
|
+
desc "Prep deploy files"
|
32
|
+
task :prep => ["files:generate", "documentation:generate", "svn:prep"] do
|
33
|
+
puts "Ready for commit!"
|
34
|
+
end
|
35
|
+
|
36
|
+
namespace :bixbite do
|
37
|
+
|
38
|
+
desc "Generates a new HTML page and its associated CSS/JS files"
|
39
|
+
task :page do
|
40
|
+
|
41
|
+
def make_new_files
|
42
|
+
name = @globs[:page_name]
|
43
|
+
fname = @globs[:page_filename]
|
44
|
+
|
45
|
+
@globs[:files].each do |file|
|
46
|
+
new_file = File.join(@globs[:html], file.split(@globs[:template_path])[1].gsub(/template/, fname))
|
47
|
+
dest = File.dirname(new_file)
|
48
|
+
|
49
|
+
puts "Creating #{new_file}"
|
50
|
+
|
51
|
+
FileUtils.mkpath(dest)
|
52
|
+
FileUtils.cp(file, new_file) unless File.directory?(file)
|
53
|
+
|
54
|
+
caps = name.split(" ").each{|word| word.capitalize!}.join(" ")
|
55
|
+
File.open(new_file, "r+") do |f|
|
56
|
+
lines = f.readlines
|
57
|
+
lines.each do |line|
|
58
|
+
line.gsub!(/__PAGE_TEMPLATE_UPPERCASE__/, fname.upcase);
|
59
|
+
line.gsub!(/__PAGE_TEMPLATE_LOWERCASE__/, fname.downcase);
|
60
|
+
line.gsub!(/__PAGE_TEMPLATE_CAPITALIZE__/, fname.capitalize);
|
61
|
+
line.gsub!(/__PAGE_NAME_CAPITALIZE__/, caps);
|
62
|
+
line.gsub!(/__PROJECT_NAME__/, @globs[:name]);
|
63
|
+
line.gsub!(/__PROJECT_NAMESPACE__/, @globs[:namespace]);
|
64
|
+
end
|
65
|
+
f.pos = 0
|
66
|
+
f.print lines
|
67
|
+
f.truncate(f.pos)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
puts "Done!"
|
72
|
+
end
|
73
|
+
|
74
|
+
@globs[:page_name] = ask('Name of page? (i.e. "Foo Page") ')
|
75
|
+
@globs[:page_filename] = ask('Page file name? (i.e. foo-page) ')
|
76
|
+
|
77
|
+
make_new_files
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
namespace :svn do
|
82
|
+
|
83
|
+
desc "Prepares directory for svn commit"
|
84
|
+
task :prep => [:add, :remove, :diff]
|
85
|
+
|
86
|
+
desc "Adds files with an svn status flag of '?'"
|
87
|
+
task :add do
|
88
|
+
puts "Adding new files to version control..."
|
89
|
+
system %(svn status | awk '/\\?/ {print $2}' | xargs svn add)
|
90
|
+
end
|
91
|
+
|
92
|
+
desc "Removes files with an svn status flag of '!'"
|
93
|
+
task :remove do
|
94
|
+
puts "Removing missing files from version control..."
|
95
|
+
system %(svn status | awk '/\\!/ {print $2}' | xargs svn remove)
|
96
|
+
end
|
97
|
+
|
98
|
+
desc "Generates diff file with current committed revision"
|
99
|
+
task :diff do
|
100
|
+
puts "Generating diff..."
|
101
|
+
diff = File.join(@globs[:deploy], @globs[:name] + ".diff")
|
102
|
+
system %(svn diff -r COMMITTED #{@globs[:deploy]} > '#{diff}')
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
namespace :documentation do
|
107
|
+
desc "Render NaturalDocs documentation"
|
108
|
+
task :generate do
|
109
|
+
def render_documentation(executable, input, output, project_path)
|
110
|
+
system %(#{executable} -i #{input} -o HTML #{output} -p #{project_path})
|
111
|
+
end
|
112
|
+
|
113
|
+
puts "Parsing JavaScript documentation..."
|
114
|
+
render_documentation File.join(@globs[:natdocs], "NaturalDocs", "NaturalDocs"), File.join(@globs[:deploy], "js"), @globs[:jsdocs], @globs[:natdocs]
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
namespace :png do
|
119
|
+
desc "Compresses PNGs with pngout"
|
120
|
+
task :compress do
|
121
|
+
pngs = Dir[File.join(@globs[:html], "**/*.png")]
|
122
|
+
original_total = new_total = 0
|
123
|
+
pngs.each do |png|
|
124
|
+
original = File.size(png)
|
125
|
+
original_total += original
|
126
|
+
system %(#{File.join(@globs[:utilities], "pngout")} #{png} -kbKGD -y)
|
127
|
+
new_size = File.size(png)
|
128
|
+
new_total += new_size
|
129
|
+
puts "\n"
|
130
|
+
end
|
131
|
+
puts %(Original Size: #{original_total})
|
132
|
+
puts %(New Size: #{new_total})
|
133
|
+
puts %(Change: #{original_total - new_total})
|
134
|
+
end
|
135
|
+
|
136
|
+
desc "Adds a white background fallback for < IE 6 support. Files render with full transparency in all other browsers."
|
137
|
+
task :ie6 do
|
138
|
+
error = "This task requires ImageMagick. Download at http://www.imagemagick.org/"
|
139
|
+
pngs = Dir[File.join(@globs[:html], "**/*.png")]
|
140
|
+
pngs.each do |png|
|
141
|
+
result = system "convert #{png} -background 'rgb(255,255,255)' #{png}"
|
142
|
+
if result
|
143
|
+
puts "Converted #{png}"
|
144
|
+
else
|
145
|
+
raise Exception.new(error)
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
puts "All PNGs converted."
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
namespace :files do
|
154
|
+
|
155
|
+
desc "Generate files for delivery"
|
156
|
+
task :generate => [:empty, :copy, :render] do
|
157
|
+
puts "All files generated!"
|
158
|
+
end
|
159
|
+
|
160
|
+
desc "Copy files"
|
161
|
+
task :copy do
|
162
|
+
puts "Copying static files..."
|
163
|
+
|
164
|
+
def copy_files list, parent, from, to
|
165
|
+
list.each do |glob|
|
166
|
+
filelist = Dir[File.join(parent, from, glob)]
|
167
|
+
|
168
|
+
filelist.each do |file|
|
169
|
+
new_file = parent + to + file.split(from)[1];
|
170
|
+
dest = File.dirname(new_file)
|
171
|
+
FileUtils.mkpath(dest)
|
172
|
+
FileUtils.cp file, new_file unless File.directory?(file)
|
173
|
+
end
|
174
|
+
end unless !list
|
175
|
+
end
|
176
|
+
|
177
|
+
copy_files @deploy["files"], @globs[:project], @globs[:html], @globs[:deploy]
|
178
|
+
|
179
|
+
end
|
180
|
+
|
181
|
+
desc "Render files"
|
182
|
+
task :render do
|
183
|
+
puts "Rendering dynamic files..."
|
184
|
+
|
185
|
+
def render_php_file file, output
|
186
|
+
system %(php -f #{file} true > #{output})
|
187
|
+
end
|
188
|
+
|
189
|
+
def render_files list, from, to
|
190
|
+
list.each do |glob|
|
191
|
+
filelist = Dir[File.join(from, glob)]
|
192
|
+
|
193
|
+
filelist.each do |file|
|
194
|
+
new_file = to + file.gsub(from, "");
|
195
|
+
dest = File.dirname(new_file)
|
196
|
+
|
197
|
+
FileUtils.mkpath(dest)
|
198
|
+
render_php_file file, new_file unless File.directory?(file)
|
199
|
+
end
|
200
|
+
end unless !list
|
201
|
+
end
|
202
|
+
|
203
|
+
render_files @deploy["render"], @globs[:html], @globs[:deploy]
|
204
|
+
|
205
|
+
end
|
206
|
+
|
207
|
+
desc "Empty folders"
|
208
|
+
task :empty do
|
209
|
+
puts "Emptying delivery folder..."
|
210
|
+
|
211
|
+
def remove_files directory
|
212
|
+
all = Dir[File.join(directory, "**/**")]
|
213
|
+
all.each do |entry|
|
214
|
+
unless File.directory?(entry)
|
215
|
+
FileUtils.rm entry
|
216
|
+
end
|
217
|
+
end
|
218
|
+
|
219
|
+
end
|
220
|
+
|
221
|
+
remove_files @globs[:deploy]
|
222
|
+
end
|
223
|
+
|
224
|
+
desc "Compress files"
|
225
|
+
task :compress do
|
226
|
+
require "closure-compiler"
|
227
|
+
require "yui/compressor"
|
228
|
+
|
229
|
+
JS_FILES = @deploy["compress"]["js"]
|
230
|
+
CSS_FILES = @deploy["compress"]["css"]
|
231
|
+
|
232
|
+
PUB = @dirs["deploy"]["public_html"]
|
233
|
+
|
234
|
+
JS_DIR = File.join(@globs[:deploy], JS_FILES["min-dir"][0]).sub(PUB["js"][0], "")
|
235
|
+
CSS_DIR = File.join(@globs[:deploy], CSS_FILES["min-dir"][0]).sub(PUB["css"][0], "")
|
236
|
+
|
237
|
+
JS_FILES.delete("min-dir")
|
238
|
+
CSS_FILES.delete("min-dir")
|
239
|
+
|
240
|
+
def minify parse
|
241
|
+
code = String.new
|
242
|
+
files = Dir[File.join(@globs[:deploy], parse)]
|
243
|
+
files.each do |file|
|
244
|
+
if file.include?(".js")
|
245
|
+
code << Closure::Compiler.new.compile(File.open(file, "r"))
|
246
|
+
else
|
247
|
+
code << YUI::CssCompressor.new.compress(File.open(file, "r"))
|
248
|
+
end
|
249
|
+
end
|
250
|
+
code
|
251
|
+
end
|
252
|
+
|
253
|
+
def combine files, destination
|
254
|
+
code = String.new
|
255
|
+
files.each do |file|
|
256
|
+
code << minify(file)
|
257
|
+
end
|
258
|
+
write code, destination
|
259
|
+
end
|
260
|
+
|
261
|
+
def write code, destination
|
262
|
+
FileUtils.mkpath(File.dirname(destination))
|
263
|
+
new_file = File.new(destination, "w")
|
264
|
+
new_file.puts(code)
|
265
|
+
puts "Compressed #{destination}"
|
266
|
+
end
|
267
|
+
|
268
|
+
def compress type, array, dir
|
269
|
+
array.each_pair do |key, value|
|
270
|
+
case key
|
271
|
+
when "standalone"
|
272
|
+
value.each do |parse|
|
273
|
+
files = Dir[File.join(@globs[:deploy], parse)]
|
274
|
+
files.each do |file|
|
275
|
+
if type.include?("js")
|
276
|
+
code = Closure::Compiler.new.compile(File.open(file, "r"))
|
277
|
+
else
|
278
|
+
code = YUI::CssCompressor.new.compress(File.open(file, "r"))
|
279
|
+
end
|
280
|
+
|
281
|
+
dest = File.join(PUB[type][0], dir, file.split(PUB[type][0])[1])
|
282
|
+
write code, dest
|
283
|
+
end
|
284
|
+
end
|
285
|
+
else combine value, File.join(PUB[type][0], dir, key)
|
286
|
+
end
|
287
|
+
end
|
288
|
+
end
|
289
|
+
|
290
|
+
puts "Compressing JavaScript files (might take a bit)"
|
291
|
+
compress "js", JS_FILES, JS_DIR
|
292
|
+
|
293
|
+
puts "Compressing CSS files"
|
294
|
+
compress "css", CSS_FILES, CSS_DIR
|
295
|
+
|
296
|
+
end
|
297
|
+
end
|