neverprint 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/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source "http://rubygems.org"
2
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ (The MIT License)
2
+
3
+ Copyright (c) 2013 Antoine Lafontaine
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.markdown ADDED
@@ -0,0 +1 @@
1
+ Neverprint extends Jekyll
data/ROADMAP.markdown ADDED
File without changes
data/Rakefile ADDED
@@ -0,0 +1,93 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'rdoc'
4
+ require 'date'
5
+
6
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), *%w[lib]))
7
+
8
+ #############################################################################
9
+ #
10
+ # Helper functions
11
+ #
12
+ #############################################################################
13
+
14
+ def name
15
+ @name ||= Dir['*.gemspec'].first.split('.').first
16
+ end
17
+
18
+ def version
19
+ line = File.read("lib/#{name}.rb")[/^\s*VERSION\s*=\s*.*/]
20
+ line.match(/.*VERSION\s*=\s*['"](.*)['"]/)[1]
21
+ end
22
+
23
+ def date
24
+ Date.today.to_s
25
+ end
26
+
27
+ def rubyforge_project
28
+ name
29
+ end
30
+
31
+ def gemspec_file
32
+ "#{name}.gemspec"
33
+ end
34
+
35
+ def gem_file
36
+ "#{name}-#{version}.gem"
37
+ end
38
+
39
+ def replace_header(head, header_name)
40
+ head.sub!(/(\.#{header_name}\s*= ').*'/) { "#{$1}#{send(header_name)}'"}
41
+ end
42
+
43
+ #############################################################################
44
+ #
45
+ # Packaging tasks
46
+ #
47
+ #############################################################################
48
+
49
+ task :release => :build do
50
+ unless `git branch` =~ /^\* master$/
51
+ puts "You must be on the master branch to release!"
52
+ exit!
53
+ end
54
+ sh "git commit --allow-empty -m 'Release #{version}'"
55
+ sh "git tag v#{version}"
56
+ sh "git push origin master"
57
+ sh "git push origin v#{version}"
58
+ sh "gem push pkg/#{name}-#{version}.gem"
59
+ end
60
+
61
+ task :build => :gemspec do
62
+ sh "mkdir -p pkg"
63
+ sh "gem build #{gemspec_file}"
64
+ sh "mv #{gem_file} pkg"
65
+ end
66
+
67
+ task :gemspec do
68
+ # read spec file and split out manifest section
69
+ spec = File.read(gemspec_file)
70
+ head, manifest, tail = spec.split(" # = MANIFEST =\n")
71
+
72
+ # replace name version and date
73
+ replace_header(head, :name)
74
+ replace_header(head, :version)
75
+ replace_header(head, :date)
76
+ #comment this out if your rubyforge_project has a different name
77
+ replace_header(head, :rubyforge_project)
78
+
79
+ # determine file list from git ls-files
80
+ files = `git ls-files`.
81
+ split("\n").
82
+ sort.
83
+ reject { |file| file =~ /^\./ }.
84
+ reject { |file| file =~ /^(rdoc|pkg|coverage)/ }.
85
+ map { |file| " #{file}" }.
86
+ join("\n")
87
+
88
+ # piece file back together and write
89
+ manifest = " s.files = %w[\n#{files}\n ]\n"
90
+ spec = [head, manifest, tail].join(" # = MANIFEST =\n")
91
+ File.open(gemspec_file, 'w') { |io| io.write(spec) }
92
+ puts "Updated #{gemspec_file}"
93
+ end
data/bin/neverprint ADDED
@@ -0,0 +1,69 @@
1
+ #!/usr/bin/env ruby
2
+ STDOUT.sync = true
3
+
4
+ $:.unshift File.join(File.dirname(__FILE__), *%w{ .. lib })
5
+
6
+ require 'commander/import'
7
+ require 'jekyll'
8
+
9
+ Jekyll::Deprecator.process(ARGV)
10
+
11
+ program :name, 'neverprint'
12
+ program :version, Neverprint::VERSION
13
+ program :description, 'Neverprint extends Jekyll.'
14
+
15
+ default_command :help
16
+
17
+ command :new do |c|
18
+ c.syntax = 'neverprint new PATH'
19
+ c.description = 'Adds neverprint files to an existing Jekyll site.'
20
+
21
+ c.option '--force', 'Force creation even if PATH already exists'
22
+
23
+ c.action do |args, options|
24
+ Neverprint::Commands::New.process(args, options.__hash__)
25
+ end
26
+ end
27
+
28
+ command :build do |c|
29
+ c.syntax = 'neverprint build [options]'
30
+ c.description = 'Build your site (same as "jekyll build")'
31
+
32
+ c.option '--config CONFIG_FILE[,CONFIG_FILE2,...]', Array, 'Custom configuration file'
33
+ c.option '--future', 'Publishes posts with a future date'
34
+ c.option '--limit_posts MAX_POSTS', Integer, 'Limits the number of posts to parse and publish'
35
+ c.option '-w', '--watch', 'Watch for changes and rebuild'
36
+ c.option '--lsi', 'Use LSI for improved related posts'
37
+ c.option '--drafts', 'Render posts in the _drafts folder'
38
+
39
+ c.action do |args, options|
40
+ options = normalize_options(options.__hash__)
41
+ options = Jekyll.configuration(options)
42
+ Jekyll::Commands::Build.process(options)
43
+ end
44
+ end
45
+
46
+ command :serve do |c|
47
+ c.syntax = 'neverprint serve [options]'
48
+ c.description = 'Serve your site locally (same as "jekyll serve")'
49
+
50
+ c.option '--config CONFIG_FILE[,CONFIG_FILE2,...]', Array, 'Custom configuration file'
51
+ c.option '--future', 'Publishes posts with a future date'
52
+ c.option '--limit_posts MAX_POSTS', Integer, 'Limits the number of posts to parse and publish'
53
+ c.option '-w', '--watch', 'Watch for changes and rebuild'
54
+ c.option '--lsi', 'Use LSI for improved related posts'
55
+ c.option '--drafts', 'Render posts in the _drafts folder'
56
+
57
+ c.option '-p', '--port [PORT]', 'Port to listen on'
58
+ c.option '-h', '--host [HOST]', 'Host to bind to'
59
+ c.option '-b', '--baseurl [URL]', 'Base URL'
60
+
61
+ c.action do |args, options|
62
+ options.default :serving => true
63
+
64
+ options = normalize_options(options.__hash__)
65
+ options = Jekyll.configuration(options)
66
+ Jekyll::Commands::Build.process(options)
67
+ Jekyll::Commands::Serve.process(options)
68
+ end
69
+ end
data/lib/neverprint.rb ADDED
@@ -0,0 +1,53 @@
1
+ # Require all of the Ruby files in the given directory.
2
+ #
3
+ # path - The String relative path from here to the directory.
4
+ #
5
+ # Returns nothing.
6
+ def require_all(path)
7
+ glob = File.join(File.dirname(__FILE__), path, '*.rb')
8
+ Dir[glob].each do |f|
9
+ require f
10
+ end
11
+ end
12
+
13
+ # rubygems
14
+ require 'rubygems'
15
+
16
+ # stdlib
17
+ require 'fileutils'
18
+ require 'time'
19
+ # require 'safe_yaml'
20
+ # require 'English'
21
+
22
+ # leverage jekyll
23
+
24
+ require 'jekyll/stevenson'
25
+ require 'jekyll/configuration'
26
+
27
+ # extensions
28
+ require 'neverprint/command'
29
+
30
+ require_all 'neverprint/commands'
31
+
32
+ # SafeYAML::OPTIONS[:suppress_warnings] = true
33
+
34
+ module Neverprint
35
+ VERSION = '0.1.0'
36
+
37
+ def self.configuration(override)
38
+ config = Configuration[Configuration::DEFAULTS]
39
+ override = Configuration[override].stringify_keys
40
+ config = config.read_config_files(config.config_files(override))
41
+
42
+ # Merge DEFAULTS < _config.yml < override
43
+ config = config.deep_merge(override).stringify_keys
44
+ set_timezone(config['timezone']) if config['timezone']
45
+
46
+ config
47
+ end
48
+
49
+ def self.set_timezone(timezone)
50
+ ENV['TZ'] = timezone
51
+ end
52
+
53
+ end
@@ -0,0 +1,27 @@
1
+ module Neverprint
2
+ class Command
3
+ def self.globs(source, destination)
4
+ Dir.chdir(source) do
5
+ dirs = Dir['*'].select { |x| File.directory?(x) }
6
+ dirs -= [destination, File.expand_path(destination), File.basename(destination)]
7
+ dirs = dirs.map { |x| "#{x}/**/*" }
8
+ dirs += ['*']
9
+ end
10
+ end
11
+
12
+ # Static: Run Site#process and catch errors
13
+ #
14
+ # site - the Jekyll::Site object
15
+ #
16
+ # Returns nothing
17
+ def self.process_site(site)
18
+ site.process
19
+ rescue Jekyll::FatalException => e
20
+ puts
21
+ Jekyll::Stevenson.error "ERROR:", "YOUR SITE COULD NOT BE BUILT:"
22
+ Jekyll::Stevenson.error "", "------------------------------------"
23
+ Jekyll::Stevenson.error "", e.message
24
+ exit(1)
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,38 @@
1
+ require 'erb'
2
+
3
+ module Neverprint
4
+ module Commands
5
+ class New < Jekyll::Command
6
+ def self.process(args, options = {})
7
+ raise ArgumentError.new('You must specify a path.') if args.empty?
8
+
9
+ new_blog_path = File.expand_path(args.join(" "), Dir.pwd)
10
+ FileUtils.mkdir_p new_blog_path
11
+ if preserve_source_location?(new_blog_path, options)
12
+ Jekyll::Stevenson.error "Conflict:", "#{new_blog_path} exists and is not empty."
13
+ exit(1)
14
+ end
15
+
16
+ create_sample_files new_blog_path
17
+
18
+ File.open(File.expand_path(self.initialized_post_name, new_blog_path), "w") do |f|
19
+ f.write(self.scaffold_post_content(site_template))
20
+ end
21
+ puts "Neverprint sauce added to your jekyll site in #{new_blog_path}."
22
+ end
23
+
24
+ # Internal: Gets the filename of the sample post to be created
25
+ #
26
+ # Returns the filename of the sample post, as a String
27
+ def self.initialized_post_name
28
+ "_posts/#{Time.now.strftime('%Y-%m-%d')}-welcome-to-neverprint.markdown"
29
+ end
30
+
31
+ private
32
+
33
+ def self.scaffold_path
34
+ "_posts/0000-00-00-welcome-to-neverprint.markdown.erb"
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,44 @@
1
+ Gem::Specification.new do |s|
2
+
3
+ s.specification_version = 2 if s.respond_to? :specification_version=
4
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
5
+ s.rubygems_version = '1.3.5'
6
+
7
+ s.name = 'neverprint'
8
+ s.version = '0.1.0'
9
+ s.license = 'MIT'
10
+ s.date = '2013-05-26'
11
+ s.rubyforge_project = 'neverprint'
12
+
13
+ s.summary = "Neverprint extends Jekyll."
14
+ s.description = "Neverprint extends Jekyll by adding support for Haml templates, Sass and Coffeescript."
15
+
16
+ s.authors = ["Antoine Lafontaine"]
17
+ s.email = 'antoine.lafontaine@neverprint.com'
18
+ s.homepage = 'http://github.com/neverprint/neverprint'
19
+
20
+ s.require_paths = %w[lib]
21
+
22
+ s.executables = ["neverprint"]
23
+
24
+ s.rdoc_options = ["--charset=UTF-8"]
25
+ s.extra_rdoc_files = %w[README.markdown LICENSE]
26
+
27
+ s.add_runtime_dependency('jekyll', "~> 1.0.2")
28
+
29
+ # = MANIFEST =
30
+ s.files = %w[
31
+ Gemfile
32
+ LICENSE
33
+ README.markdown
34
+ ROADMAP.markdown
35
+ Rakefile
36
+ bin/neverprint
37
+ lib/neverprint.rb
38
+ lib/neverprint/command.rb
39
+ lib/neverprint/commands/new.rb
40
+ neverprint.gemspec
41
+ ]
42
+ # = MANIFEST =
43
+
44
+ end
metadata ADDED
@@ -0,0 +1,90 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: neverprint
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ version: 0.1.0
11
+ platform: ruby
12
+ authors:
13
+ - Antoine Lafontaine
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2013-05-26 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: jekyll
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ hash: 19
29
+ segments:
30
+ - 1
31
+ - 0
32
+ - 2
33
+ version: 1.0.2
34
+ type: :runtime
35
+ version_requirements: *id001
36
+ description: Neverprint extends Jekyll by adding support for Haml templates, Sass and Coffeescript.
37
+ email: antoine.lafontaine@neverprint.com
38
+ executables:
39
+ - neverprint
40
+ extensions: []
41
+
42
+ extra_rdoc_files:
43
+ - README.markdown
44
+ - LICENSE
45
+ files:
46
+ - Gemfile
47
+ - LICENSE
48
+ - README.markdown
49
+ - ROADMAP.markdown
50
+ - Rakefile
51
+ - bin/neverprint
52
+ - lib/neverprint.rb
53
+ - lib/neverprint/command.rb
54
+ - lib/neverprint/commands/new.rb
55
+ - neverprint.gemspec
56
+ homepage: http://github.com/neverprint/neverprint
57
+ licenses:
58
+ - MIT
59
+ post_install_message:
60
+ rdoc_options:
61
+ - --charset=UTF-8
62
+ require_paths:
63
+ - lib
64
+ required_ruby_version: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ hash: 3
70
+ segments:
71
+ - 0
72
+ version: "0"
73
+ required_rubygems_version: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ hash: 3
79
+ segments:
80
+ - 0
81
+ version: "0"
82
+ requirements: []
83
+
84
+ rubyforge_project: neverprint
85
+ rubygems_version: 1.8.25
86
+ signing_key:
87
+ specification_version: 2
88
+ summary: Neverprint extends Jekyll.
89
+ test_files: []
90
+