middleman-cli 4.0.0.alpha.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gemtest +0 -0
- data/.simplecov +7 -0
- data/.yardopts +9 -0
- data/Rakefile +4 -0
- data/bin/middleman +18 -0
- data/features/.gitkeep +0 -0
- data/fixtures/.gitkeep +0 -0
- data/lib/middleman-cli.rb +96 -0
- data/lib/middleman-cli/build.rb +128 -0
- data/lib/middleman-cli/console.rb +46 -0
- data/lib/middleman-cli/extension.rb +42 -0
- data/lib/middleman-cli/init.rb +85 -0
- data/lib/middleman-cli/server.rb +82 -0
- data/lib/middleman-cli/templates/extension/Gemfile +19 -0
- data/lib/middleman-cli/templates/extension/Rakefile +14 -0
- data/lib/middleman-cli/templates/extension/features/support/env.rb +4 -0
- data/lib/middleman-cli/templates/extension/gemspec +24 -0
- data/lib/middleman-cli/templates/extension/gitignore +5 -0
- data/lib/middleman-cli/templates/extension/lib/lib.rb +38 -0
- data/lib/middleman-cli/templates/extension/lib/middleman_extension.rb +1 -0
- data/middleman-cli.gemspec +24 -0
- data/spec/middleman/.gitkeep +1 -0
- data/spec/spec_helper.rb +0 -0
- metadata +95 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: fb81795ee5330e47c002dfcea885c4b7f9062656
|
4
|
+
data.tar.gz: 23691687f4e83fcb26718a0ae1a3bf4d9240c362
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 02f67e50eae7d5f75d7be896966394d2f38e95ab52f7dab45b385b459424f1076eb8bed3fa167366aa1ebb58401d3e732b971ebb80089aeaa33ff13fd4469f56
|
7
|
+
data.tar.gz: 80763c9eb7070a441af32928ff52c5cec90838ee79fd3c001339e910b88eba3708bc99db4e31e72277f1a4cfa2a3944d0e5a32d38fec221bb416852ce5b53953
|
data/.gemtest
ADDED
File without changes
|
data/.simplecov
ADDED
data/.yardopts
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
lib/**/*.rb
|
2
|
+
--exclude lib/middleman-cli/templates/default/
|
3
|
+
--exclude lib/middleman-cli/templates/html5/
|
4
|
+
--exclude lib/middleman-cli/templates/mobile/
|
5
|
+
--exclude lib/middleman-cli/templates/shared/
|
6
|
+
--exclude lib/middleman-cli/templates/extension/
|
7
|
+
--no-private
|
8
|
+
--hide-void-return
|
9
|
+
--markup=markdown
|
data/Rakefile
ADDED
data/bin/middleman
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'middleman-core/profiling'
|
4
|
+
if ARGV.include? '--profile'
|
5
|
+
Middleman::Profiling.profiler = Middleman::Profiling::RubyProfProfiler.new
|
6
|
+
end
|
7
|
+
Middleman::Profiling.start
|
8
|
+
|
9
|
+
require "middleman-core/load_paths"
|
10
|
+
Middleman.setup_load_paths
|
11
|
+
|
12
|
+
require "middleman-cli"
|
13
|
+
|
14
|
+
# Change directory to the root
|
15
|
+
Dir.chdir(ENV["MM_ROOT"]) if ENV["MM_ROOT"]
|
16
|
+
|
17
|
+
# Start the CLI
|
18
|
+
Middleman::Cli::Base.start
|
data/features/.gitkeep
ADDED
File without changes
|
data/fixtures/.gitkeep
ADDED
File without changes
|
@@ -0,0 +1,96 @@
|
|
1
|
+
# rubocop:disable FileName
|
2
|
+
|
3
|
+
# Setup our load paths
|
4
|
+
libdir = File.expand_path(File.dirname(__FILE__))
|
5
|
+
$LOAD_PATH.unshift(libdir) unless $LOAD_PATH.include?(libdir)
|
6
|
+
|
7
|
+
# Require Thor since that's what the whole CLI is built around
|
8
|
+
require 'thor'
|
9
|
+
require 'thor/group'
|
10
|
+
|
11
|
+
# CLI Module
|
12
|
+
module Middleman
|
13
|
+
module Cli
|
14
|
+
# The base task from which everything else extends
|
15
|
+
class Base < Thor
|
16
|
+
class << self
|
17
|
+
def start(*args)
|
18
|
+
# Change flag to a module
|
19
|
+
ARGV.unshift('help') if ARGV.delete('--help')
|
20
|
+
|
21
|
+
# Default command is server
|
22
|
+
if ARGV[0] != 'help' && (ARGV.length < 1 || ARGV.first.include?('-'))
|
23
|
+
ARGV.unshift('server')
|
24
|
+
end
|
25
|
+
|
26
|
+
super
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
desc 'version', 'Show version'
|
31
|
+
def version
|
32
|
+
say "Middleman #{Middleman::VERSION}"
|
33
|
+
end
|
34
|
+
|
35
|
+
desc 'help', 'Show help'
|
36
|
+
|
37
|
+
# Override the Thor help method to find help for subtasks
|
38
|
+
# @param [Symbol, String, nil] meth
|
39
|
+
# @param [Boolean] subcommand
|
40
|
+
# @return [void]
|
41
|
+
# rubocop:disable UnusedMethodArgument
|
42
|
+
def help(meth=nil, subcommand=false)
|
43
|
+
if meth && !self.respond_to?(meth)
|
44
|
+
klass, task = Thor::Util.find_class_and_task_by_namespace("#{meth}:#{meth}")
|
45
|
+
klass.start(['-h', task].compact, shell: shell)
|
46
|
+
else
|
47
|
+
list = []
|
48
|
+
Thor::Util.thor_classes_in(Middleman::Cli).each do |thor_class|
|
49
|
+
list += thor_class.printable_tasks(false)
|
50
|
+
end
|
51
|
+
list.sort! { |a, b| a[0] <=> b[0] }
|
52
|
+
|
53
|
+
shell.say 'Tasks:'
|
54
|
+
shell.print_table(list, ident: 2, truncate: true)
|
55
|
+
shell.say %(\nSee 'middleman help <command>' for more information on specific command.)
|
56
|
+
shell.say
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
# Intercept missing methods and search subtasks for them
|
61
|
+
# @param [Symbol] meth
|
62
|
+
def method_missing(meth, *args)
|
63
|
+
meth = meth.to_s
|
64
|
+
meth = self.class.map[meth] if self.class.map.key?(meth)
|
65
|
+
|
66
|
+
klass, task = Thor::Util.find_class_and_task_by_namespace("#{meth}:#{meth}")
|
67
|
+
|
68
|
+
if klass.nil?
|
69
|
+
tasks_dir = File.join(Dir.pwd, 'tasks')
|
70
|
+
|
71
|
+
if File.exist?(tasks_dir)
|
72
|
+
Dir[File.join(tasks_dir, '**/*_task.rb')].each { |f| require f }
|
73
|
+
klass, task = Thor::Util.find_class_and_task_by_namespace("#{meth}:#{meth}")
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
if klass.nil?
|
78
|
+
raise Thor::Error, "There's no '#{meth}' command for Middleman. Try 'middleman help' for a list of commands."
|
79
|
+
else
|
80
|
+
args.unshift(task) if task
|
81
|
+
klass.start(args, shell: shell)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
# Require the Middleman version
|
89
|
+
require 'middleman-core/version'
|
90
|
+
|
91
|
+
# Include the core CLI items
|
92
|
+
require 'middleman-cli/init'
|
93
|
+
require 'middleman-cli/extension'
|
94
|
+
require 'middleman-cli/server'
|
95
|
+
require 'middleman-cli/build'
|
96
|
+
require 'middleman-cli/console'
|
@@ -0,0 +1,128 @@
|
|
1
|
+
# CLI Module
|
2
|
+
module Middleman::Cli
|
3
|
+
# The CLI Build class
|
4
|
+
class Build < Thor
|
5
|
+
include Thor::Actions
|
6
|
+
|
7
|
+
check_unknown_options!
|
8
|
+
|
9
|
+
namespace :build
|
10
|
+
|
11
|
+
desc 'build [options]', 'Builds the static site for deployment'
|
12
|
+
method_option :environment,
|
13
|
+
aliases: '-e',
|
14
|
+
default: ENV['MM_ENV'] || ENV['RACK_ENV'] || 'development',
|
15
|
+
desc: 'The environment Middleman will run under'
|
16
|
+
method_option :clean,
|
17
|
+
type: :boolean,
|
18
|
+
default: true,
|
19
|
+
desc: 'Remove orphaned files from build (--no-clean to disable)'
|
20
|
+
method_option :glob,
|
21
|
+
type: :string,
|
22
|
+
aliases: '-g',
|
23
|
+
default: nil,
|
24
|
+
desc: 'Build a subset of the project'
|
25
|
+
method_option :verbose,
|
26
|
+
type: :boolean,
|
27
|
+
default: false,
|
28
|
+
desc: 'Print debug messages'
|
29
|
+
method_option :instrument,
|
30
|
+
type: :string,
|
31
|
+
default: false,
|
32
|
+
desc: 'Print instrument messages'
|
33
|
+
method_option :profile,
|
34
|
+
type: :boolean,
|
35
|
+
default: false,
|
36
|
+
desc: 'Generate profiling report for the build'
|
37
|
+
|
38
|
+
# Core build Thor command
|
39
|
+
# @return [void]
|
40
|
+
def build
|
41
|
+
unless ENV['MM_ROOT']
|
42
|
+
raise Thor::Error, 'Error: Could not find a Middleman project config, perhaps you are in the wrong folder?'
|
43
|
+
end
|
44
|
+
|
45
|
+
require 'middleman-core'
|
46
|
+
require 'middleman-core/logger'
|
47
|
+
require 'middleman-core/builder'
|
48
|
+
require 'fileutils'
|
49
|
+
|
50
|
+
env = options['environment'].to_sym
|
51
|
+
verbose = options['verbose'] ? 0 : 1
|
52
|
+
instrument = options['instrument']
|
53
|
+
|
54
|
+
@app = ::Middleman::Application.new do
|
55
|
+
config[:mode] = :build
|
56
|
+
config[:environment] = env
|
57
|
+
config[:show_exceptions] = false
|
58
|
+
::Middleman::Logger.singleton(verbose, instrument)
|
59
|
+
end
|
60
|
+
|
61
|
+
builder = Middleman::Builder.new(@app,
|
62
|
+
glob: options['glob'],
|
63
|
+
clean: options['clean'])
|
64
|
+
|
65
|
+
builder.on_build_event(&method(:on_event))
|
66
|
+
|
67
|
+
if builder.run!
|
68
|
+
clean_directories! if options['clean']
|
69
|
+
else
|
70
|
+
msg = 'There were errors during this build'
|
71
|
+
unless options['verbose']
|
72
|
+
msg << ', re-run with `middleman build --verbose` to see the full exception.'
|
73
|
+
end
|
74
|
+
shell.say msg, :red
|
75
|
+
|
76
|
+
exit(1)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
# Tell Thor to send an exit status on a failure.
|
81
|
+
def self.exit_on_failure?
|
82
|
+
true
|
83
|
+
end
|
84
|
+
|
85
|
+
no_tasks do
|
86
|
+
|
87
|
+
# Handles incoming events from the builder.
|
88
|
+
# @param [Symbol] event_type The type of event.
|
89
|
+
# @param [String] contents The event contents.
|
90
|
+
# @param [String] extra The extra information.
|
91
|
+
# @return [void]
|
92
|
+
def on_event(event_type, target, extra=nil)
|
93
|
+
case event_type
|
94
|
+
when :error
|
95
|
+
say_status :error, target, :red
|
96
|
+
shell.say extra, :red if options['verbose']
|
97
|
+
when :deleted
|
98
|
+
say_status :remove, target, :green
|
99
|
+
when :created
|
100
|
+
say_status :create, target, :green
|
101
|
+
when :identical
|
102
|
+
say_status :identical, target, :blue
|
103
|
+
when :updated
|
104
|
+
say_status :updated, target, :yellow
|
105
|
+
else
|
106
|
+
say_status event_type, extra, :blue
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
# Find empty directories in the build folder and remove them.
|
111
|
+
# @return [Boolean]
|
112
|
+
def clean_directories!
|
113
|
+
all_build_files = File.join(@app.config[:build_dir], '**', '*')
|
114
|
+
|
115
|
+
empty_directories = Dir[all_build_files].select do |d|
|
116
|
+
File.directory?(d)
|
117
|
+
end
|
118
|
+
|
119
|
+
empty_directories.each do |d|
|
120
|
+
remove_file d, force: true if Pathname(d).children.empty?
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
# Alias "b" to "build"
|
127
|
+
Base.map('b' => 'build')
|
128
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# CLI Module
|
2
|
+
module Middleman::Cli
|
3
|
+
# Alias "c" to "console"
|
4
|
+
Base.map(c: 'console')
|
5
|
+
|
6
|
+
# The CLI Console class
|
7
|
+
class Console < Thor
|
8
|
+
include Thor::Actions
|
9
|
+
|
10
|
+
check_unknown_options!
|
11
|
+
|
12
|
+
namespace :console
|
13
|
+
|
14
|
+
desc 'console [options]', 'Start an interactive console in the context of your Middleman application'
|
15
|
+
method_option :environment,
|
16
|
+
aliases: '-e',
|
17
|
+
default: ENV['MM_ENV'] || ENV['RACK_ENV'] || 'development',
|
18
|
+
desc: 'The environment Middleman will run under'
|
19
|
+
method_option :verbose,
|
20
|
+
type: :boolean,
|
21
|
+
default: false,
|
22
|
+
desc: 'Print debug messages'
|
23
|
+
def console
|
24
|
+
require 'middleman-core'
|
25
|
+
require 'irb'
|
26
|
+
|
27
|
+
opts = {
|
28
|
+
environment: options['environment'],
|
29
|
+
debug: options['verbose']
|
30
|
+
}
|
31
|
+
|
32
|
+
@app = ::Middleman::Application.server.inst do
|
33
|
+
config[:environment] = opts[:environment].to_sym if opts[:environment]
|
34
|
+
|
35
|
+
::Middleman::Logger.singleton(opts[:debug] ? 0 : 1, opts[:instrumenting] || false)
|
36
|
+
end
|
37
|
+
|
38
|
+
# TODO: get file watcher / reload! working in console
|
39
|
+
|
40
|
+
IRB.setup nil
|
41
|
+
IRB.conf[:MAIN_CONTEXT] = IRB::Irb.new.context
|
42
|
+
require 'irb/ext/multi-irb'
|
43
|
+
IRB.irb nil, @app
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# CLI Module
|
2
|
+
module Middleman::Cli
|
3
|
+
# A thor task for creating new projects
|
4
|
+
class Extension < Thor
|
5
|
+
include Thor::Actions
|
6
|
+
|
7
|
+
check_unknown_options!
|
8
|
+
|
9
|
+
namespace :extension
|
10
|
+
|
11
|
+
# Required path for the new project to be generated
|
12
|
+
argument :name, type: :string
|
13
|
+
|
14
|
+
# Template files are relative to this file
|
15
|
+
# @return [String]
|
16
|
+
def self.source_root
|
17
|
+
File.join(File.dirname(__FILE__), 'templates')
|
18
|
+
end
|
19
|
+
|
20
|
+
desc 'extension [options]', 'Create Middleman extension scaffold NAME'
|
21
|
+
method_option 'skip-git',
|
22
|
+
type: :boolean,
|
23
|
+
default: false,
|
24
|
+
desc: 'Skip Git ignores and keeps'
|
25
|
+
|
26
|
+
# The extension task
|
27
|
+
# @param [String] name
|
28
|
+
def extension
|
29
|
+
copy_file 'extension/gitignore', File.join(name, '.gitignore') unless options[:'skip-git']
|
30
|
+
template 'extension/Rakefile', File.join(name, 'Rakefile')
|
31
|
+
template 'extension/gemspec', File.join(name, "#{name}.gemspec")
|
32
|
+
template 'extension/Gemfile', File.join(name, 'Gemfile')
|
33
|
+
template 'extension/lib/middleman_extension.rb', File.join(name, 'lib', 'middleman_extension.rb')
|
34
|
+
template 'extension/lib/lib.rb', File.join(name, 'lib', "#{name}.rb")
|
35
|
+
template 'extension/features/support/env.rb', File.join(name, 'features', 'support', 'env.rb')
|
36
|
+
empty_directory File.join(name, 'fixtures')
|
37
|
+
end
|
38
|
+
|
39
|
+
# Output a .gitignore file
|
40
|
+
class_option :git, type: :boolean, default: true
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
# CLI Module
|
2
|
+
module Middleman::Cli
|
3
|
+
# A thor task for creating new projects
|
4
|
+
class Init < Thor
|
5
|
+
include Thor::Actions
|
6
|
+
check_unknown_options!
|
7
|
+
|
8
|
+
namespace :init
|
9
|
+
|
10
|
+
desc 'init TARGET [options]', 'Create new project at TARGET'
|
11
|
+
method_option 'template',
|
12
|
+
aliases: '-T',
|
13
|
+
default: 'middleman/middleman-templates-default',
|
14
|
+
desc: 'Use a project template'
|
15
|
+
|
16
|
+
# Do not run bundle install
|
17
|
+
method_option 'skip-bundle',
|
18
|
+
type: :boolean,
|
19
|
+
aliases: '-B',
|
20
|
+
default: false,
|
21
|
+
desc: 'Skip bundle install'
|
22
|
+
|
23
|
+
# The init task
|
24
|
+
# @param [String] name
|
25
|
+
def init(target='.')
|
26
|
+
require 'tmpdir'
|
27
|
+
|
28
|
+
repo_path, repo_branch = if shortname?(options[:template])
|
29
|
+
require 'open-uri'
|
30
|
+
require 'json'
|
31
|
+
|
32
|
+
api = 'http://directory.middlemanapp.com/api'
|
33
|
+
uri = ::URI.parse("#{api}/#{options[:template]}.json")
|
34
|
+
|
35
|
+
begin
|
36
|
+
data = ::JSON.parse(uri.read)
|
37
|
+
data['links']['github']
|
38
|
+
data['links']['github'].split('#')
|
39
|
+
rescue ::OpenURI::HTTPError
|
40
|
+
puts "Template `#{options[:template]}` not found in Middleman Directory."
|
41
|
+
puts 'Did you mean to use a full `user/repo` path?'
|
42
|
+
exit
|
43
|
+
end
|
44
|
+
else
|
45
|
+
repo_name, repo_branch = options[:template].split('#')
|
46
|
+
[repository_path(repo_name), repo_branch]
|
47
|
+
end
|
48
|
+
|
49
|
+
Dir.mktmpdir do |dir|
|
50
|
+
cmd = repo_branch ? "clone -b #{repo_branch}" : 'clone'
|
51
|
+
|
52
|
+
run("git #{cmd} #{repo_path} #{dir}")
|
53
|
+
|
54
|
+
source_paths << dir
|
55
|
+
|
56
|
+
directory dir, target, exclude_pattern: /\.git\/|\.gitignore$/
|
57
|
+
|
58
|
+
inside(target) do
|
59
|
+
run('bundle install')
|
60
|
+
end unless ENV['TEST'] || options[:'skip-bundle']
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
protected
|
65
|
+
|
66
|
+
def shortname?(repo)
|
67
|
+
repo.split('/').length != 2
|
68
|
+
end
|
69
|
+
|
70
|
+
def repository_path(repo)
|
71
|
+
"git://github.com/#{repo}.git"
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def self.exit_on_failure?
|
76
|
+
true
|
77
|
+
end
|
78
|
+
|
79
|
+
# Map "i", "new" and "n" to "init"
|
80
|
+
Base.map(
|
81
|
+
'i' => 'init',
|
82
|
+
'new' => 'init',
|
83
|
+
'n' => 'init'
|
84
|
+
)
|
85
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
# CLI Module
|
2
|
+
module Middleman::Cli
|
3
|
+
# Server thor task
|
4
|
+
class Server < Thor
|
5
|
+
check_unknown_options!
|
6
|
+
|
7
|
+
namespace :server
|
8
|
+
|
9
|
+
desc 'server [options]', 'Start the preview server'
|
10
|
+
method_option :environment,
|
11
|
+
aliases: '-e',
|
12
|
+
default: ENV['MM_ENV'] || ENV['RACK_ENV'] || 'development',
|
13
|
+
desc: 'The environment Middleman will run under'
|
14
|
+
method_option :host,
|
15
|
+
type: :string,
|
16
|
+
aliases: '-h',
|
17
|
+
default: '0.0.0.0',
|
18
|
+
desc: 'Bind to HOST address'
|
19
|
+
method_option :port,
|
20
|
+
aliases: '-p',
|
21
|
+
default: '4567',
|
22
|
+
desc: 'The port Middleman will listen on'
|
23
|
+
method_option :verbose,
|
24
|
+
type: :boolean,
|
25
|
+
default: false,
|
26
|
+
desc: 'Print debug messages'
|
27
|
+
method_option :instrument,
|
28
|
+
type: :string,
|
29
|
+
default: false,
|
30
|
+
desc: 'Print instrument messages'
|
31
|
+
method_option :disable_watcher,
|
32
|
+
type: :boolean,
|
33
|
+
default: false,
|
34
|
+
desc: 'Disable the file change and delete watcher process'
|
35
|
+
method_option :profile,
|
36
|
+
type: :boolean,
|
37
|
+
default: false,
|
38
|
+
desc: 'Generate profiling report for server startup'
|
39
|
+
method_option :force_polling,
|
40
|
+
type: :boolean,
|
41
|
+
default: false,
|
42
|
+
desc: 'Force file watcher into polling mode'
|
43
|
+
method_option :latency,
|
44
|
+
type: :numeric,
|
45
|
+
aliases: '-l',
|
46
|
+
default: 0.25,
|
47
|
+
desc: 'Set file watcher latency, in seconds'
|
48
|
+
|
49
|
+
# Start the server
|
50
|
+
def server
|
51
|
+
require 'middleman-core'
|
52
|
+
require 'middleman-core/preview_server'
|
53
|
+
|
54
|
+
unless ENV['MM_ROOT']
|
55
|
+
puts '== Could not find a Middleman project config.rb'
|
56
|
+
exit
|
57
|
+
end
|
58
|
+
|
59
|
+
params = {
|
60
|
+
port: options['port'],
|
61
|
+
host: options['host'],
|
62
|
+
environment: options['environment'],
|
63
|
+
debug: options['verbose'],
|
64
|
+
instrumenting: options['instrument'],
|
65
|
+
disable_watcher: options['disable_watcher'],
|
66
|
+
reload_paths: options['reload_paths'],
|
67
|
+
force_polling: options['force_polling'],
|
68
|
+
latency: options['latency']
|
69
|
+
}
|
70
|
+
|
71
|
+
puts '== The Middleman is loading'
|
72
|
+
::Middleman::PreviewServer.start(params)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def self.exit_on_failure?
|
77
|
+
true
|
78
|
+
end
|
79
|
+
|
80
|
+
# Map "s" to "server"
|
81
|
+
Base.map('s' => 'server')
|
82
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# If you have OpenSSL installed, we recommend updating
|
2
|
+
# the following line to use "https"
|
3
|
+
source 'http://rubygems.org'
|
4
|
+
|
5
|
+
# Specify your gem's dependencies in <%= name %>.gemspec
|
6
|
+
gemspec
|
7
|
+
|
8
|
+
group :development do
|
9
|
+
gem 'rake'
|
10
|
+
gem 'rdoc'
|
11
|
+
gem 'yard'
|
12
|
+
end
|
13
|
+
|
14
|
+
group :test do
|
15
|
+
gem 'cucumber'
|
16
|
+
gem 'fivemat'
|
17
|
+
gem 'aruba'
|
18
|
+
gem 'rspec'
|
19
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'bundler'
|
2
|
+
Bundler::GemHelper.install_tasks
|
3
|
+
|
4
|
+
require 'cucumber/rake/task'
|
5
|
+
|
6
|
+
Cucumber::Rake::Task.new(:cucumber, 'Run features that should pass') do |t|
|
7
|
+
t.cucumber_opts = "--color --tags ~@wip --strict --format #{ENV['CUCUMBER_FORMAT'] || 'Fivemat'}"
|
8
|
+
end
|
9
|
+
|
10
|
+
require 'rake/clean'
|
11
|
+
|
12
|
+
task test: ['cucumber']
|
13
|
+
|
14
|
+
task default: :test
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = "<%= name %>"
|
6
|
+
s.version = "0.0.1"
|
7
|
+
s.platform = Gem::Platform::RUBY
|
8
|
+
# s.authors = ["Your Name"]
|
9
|
+
# s.email = ["email@example.com"]
|
10
|
+
# s.homepage = "http://example.com"
|
11
|
+
# s.summary = %q{A short summary of your extension}
|
12
|
+
# s.description = %q{A longer description of your extension}
|
13
|
+
|
14
|
+
s.files = `git ls-files`.split("\n")
|
15
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
16
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
17
|
+
s.require_paths = ["lib"]
|
18
|
+
|
19
|
+
# The version of middleman-core your extension depends on
|
20
|
+
s.add_runtime_dependency("middleman-core", [">= <%= ::Middleman::VERSION %>"])
|
21
|
+
|
22
|
+
# Additional dependencies
|
23
|
+
# s.add_runtime_dependency("gem-name", "gem-version")
|
24
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# Require core library
|
2
|
+
require 'middleman-core'
|
3
|
+
|
4
|
+
# Extension namespace
|
5
|
+
class MyExtension < ::Middleman::Extension
|
6
|
+
option :my_option, 'default', 'An example option'
|
7
|
+
|
8
|
+
def initialize(app, options_hash={}, &block)
|
9
|
+
# Call super to build options from the options_hash
|
10
|
+
super
|
11
|
+
|
12
|
+
# Require libraries only when activated
|
13
|
+
# require 'necessary/library'
|
14
|
+
|
15
|
+
# set up your extension
|
16
|
+
# puts options.my_option
|
17
|
+
end
|
18
|
+
|
19
|
+
def after_configuration
|
20
|
+
# Do something
|
21
|
+
end
|
22
|
+
|
23
|
+
# A Sitemap Manipulator
|
24
|
+
# def manipulate_resource_list(resources)
|
25
|
+
# end
|
26
|
+
|
27
|
+
# module do
|
28
|
+
# def a_helper
|
29
|
+
# end
|
30
|
+
# end
|
31
|
+
end
|
32
|
+
|
33
|
+
# Register extensions which can be activated
|
34
|
+
# Make sure we have the version of Middleman we expect
|
35
|
+
# Name param may be omited, it will default to underscored
|
36
|
+
# version of class name
|
37
|
+
|
38
|
+
# MyExtension.register(:my_extension)
|
@@ -0,0 +1 @@
|
|
1
|
+
require '<%= name %>'
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$LOAD_PATH.push File.expand_path('../lib', __FILE__)
|
3
|
+
require File.expand_path('../../middleman-core/lib/middleman-core/version', __FILE__)
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = 'middleman-cli'
|
7
|
+
s.version = Middleman::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.license = 'MIT'
|
10
|
+
s.authors = ['Thomas Reynolds', 'Ben Hollis']
|
11
|
+
s.email = ['me@tdreyno.com', 'ben@benhollis.net']
|
12
|
+
s.homepage = 'http://middlemanapp.com'
|
13
|
+
s.summary = 'Hand-crafted frontend development'
|
14
|
+
s.description = 'A static site generator. Provides dozens of templating languages (Haml, Sass, Compass, Slim, CoffeeScript, and more). Makes minification, compression, cache busting, Yaml data (and more) an easy part of your development cycle.'
|
15
|
+
|
16
|
+
s.files = `git ls-files -z`.split("\0")
|
17
|
+
s.test_files = `git ls-files -z -- {fixtures,features}/*`.split("\0")
|
18
|
+
s.executable = 'middleman'
|
19
|
+
s.require_path = 'lib'
|
20
|
+
s.required_ruby_version = '>= 1.9.3'
|
21
|
+
|
22
|
+
# CLI
|
23
|
+
s.add_dependency('thor', ['>= 0.17.0', '< 2.0'])
|
24
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
.gitkeep
|
data/spec/spec_helper.rb
ADDED
File without changes
|
metadata
ADDED
@@ -0,0 +1,95 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: middleman-cli
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 4.0.0.alpha.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Thomas Reynolds
|
8
|
+
- Ben Hollis
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2014-08-18 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: thor
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - ">="
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: 0.17.0
|
21
|
+
- - "<"
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: '2.0'
|
24
|
+
type: :runtime
|
25
|
+
prerelease: false
|
26
|
+
version_requirements: !ruby/object:Gem::Requirement
|
27
|
+
requirements:
|
28
|
+
- - ">="
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: 0.17.0
|
31
|
+
- - "<"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.0'
|
34
|
+
description: A static site generator. Provides dozens of templating languages (Haml,
|
35
|
+
Sass, Compass, Slim, CoffeeScript, and more). Makes minification, compression, cache
|
36
|
+
busting, Yaml data (and more) an easy part of your development cycle.
|
37
|
+
email:
|
38
|
+
- me@tdreyno.com
|
39
|
+
- ben@benhollis.net
|
40
|
+
executables:
|
41
|
+
- middleman
|
42
|
+
extensions: []
|
43
|
+
extra_rdoc_files: []
|
44
|
+
files:
|
45
|
+
- ".gemtest"
|
46
|
+
- ".simplecov"
|
47
|
+
- ".yardopts"
|
48
|
+
- Rakefile
|
49
|
+
- bin/middleman
|
50
|
+
- features/.gitkeep
|
51
|
+
- fixtures/.gitkeep
|
52
|
+
- lib/middleman-cli.rb
|
53
|
+
- lib/middleman-cli/build.rb
|
54
|
+
- lib/middleman-cli/console.rb
|
55
|
+
- lib/middleman-cli/extension.rb
|
56
|
+
- lib/middleman-cli/init.rb
|
57
|
+
- lib/middleman-cli/server.rb
|
58
|
+
- lib/middleman-cli/templates/extension/Gemfile
|
59
|
+
- lib/middleman-cli/templates/extension/Rakefile
|
60
|
+
- lib/middleman-cli/templates/extension/features/support/env.rb
|
61
|
+
- lib/middleman-cli/templates/extension/gemspec
|
62
|
+
- lib/middleman-cli/templates/extension/gitignore
|
63
|
+
- lib/middleman-cli/templates/extension/lib/lib.rb
|
64
|
+
- lib/middleman-cli/templates/extension/lib/middleman_extension.rb
|
65
|
+
- middleman-cli.gemspec
|
66
|
+
- spec/middleman/.gitkeep
|
67
|
+
- spec/spec_helper.rb
|
68
|
+
homepage: http://middlemanapp.com
|
69
|
+
licenses:
|
70
|
+
- MIT
|
71
|
+
metadata: {}
|
72
|
+
post_install_message:
|
73
|
+
rdoc_options: []
|
74
|
+
require_paths:
|
75
|
+
- lib
|
76
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - ">="
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: 1.9.3
|
81
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
82
|
+
requirements:
|
83
|
+
- - ">"
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 1.3.1
|
86
|
+
requirements: []
|
87
|
+
rubyforge_project:
|
88
|
+
rubygems_version: 2.2.2
|
89
|
+
signing_key:
|
90
|
+
specification_version: 4
|
91
|
+
summary: Hand-crafted frontend development
|
92
|
+
test_files:
|
93
|
+
- features/.gitkeep
|
94
|
+
- fixtures/.gitkeep
|
95
|
+
has_rdoc:
|