middleman-targets 1.0.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.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/CHANGELOG.md +6 -0
- data/Gemfile +18 -0
- data/LICENSE.md +22 -0
- data/README.md +110 -0
- data/Rakefile +10 -0
- data/bin/middleman-targets +80 -0
- data/documentation_project/.gitignore +25 -0
- data/documentation_project/Gemfile +14 -0
- data/documentation_project/README.md +13 -0
- data/documentation_project/config.rb +123 -0
- data/documentation_project/source/frontmatter.html.md.erb +70 -0
- data/documentation_project/source/helpers-resources.html.md.erb +98 -0
- data/documentation_project/source/images/free-logo-small.png +0 -0
- data/documentation_project/source/images/free-logo-small@2x.png +0 -0
- data/documentation_project/source/images/free-logo.png +0 -0
- data/documentation_project/source/images/free-logo@2x.png +0 -0
- data/documentation_project/source/images/pro-logo-small.png +0 -0
- data/documentation_project/source/images/pro-logo-small@2x.png +0 -0
- data/documentation_project/source/images/pro-logo.png +0 -0
- data/documentation_project/source/images/pro-logo@2x.png +0 -0
- data/documentation_project/source/index.html.md.erb +59 -0
- data/documentation_project/source/javascripts/all.js +1 -0
- data/documentation_project/source/layouts/layout.haml +9 -0
- data/documentation_project/source/layouts/template-logo-large.haml +17 -0
- data/documentation_project/source/layouts/template-logo-medium.haml +14 -0
- data/documentation_project/source/layouts/template-logo-small.haml +11 -0
- data/documentation_project/source/only-free.html.md.erb +38 -0
- data/documentation_project/source/only-pro.html.md.erb +39 -0
- data/documentation_project/source/simple-demo.html.md.erb +183 -0
- data/documentation_project/source/stylesheets/_github.scss +61 -0
- data/documentation_project/source/stylesheets/_middlemac_minimal.scss +516 -0
- data/documentation_project/source/stylesheets/_normalize.scss +374 -0
- data/documentation_project/source/stylesheets/style.css.scss +3 -0
- data/documentation_project/source/target-feature-config.html.md.erb +153 -0
- data/lib/middleman-targets.rb +13 -0
- data/lib/middleman-targets/commands.rb +6 -0
- data/lib/middleman-targets/extension.rb +281 -0
- data/lib/middleman-targets/version.rb +5 -0
- data/middleman-targets.gemspec +26 -0
- metadata +126 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5b0207312e941b65b1ee3842b775d77c868fccdc
|
4
|
+
data.tar.gz: 17aa00a667fcece866f54b5080ae53e9e8269b58
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 3eff02a74fc75761e2820e4aaad2c61a6edb7e78be4cff60f7081f0cce0e72ee89e951cbe72afedddbc7dc11875c514de9106505f9197bc16a2f2d5bd851f0b1
|
7
|
+
data.tar.gz: cd7d551e89f13468ac9e6b7f9dd6b84912cb3248e24f5e87b6b905807682a807aebf588e80dfba5c255f1ccf64645912fc19364e6fd6188a3ea10d85302f4a22
|
data/.gitignore
ADDED
data/CHANGELOG.md
ADDED
data/Gemfile
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
# If you do not have OpenSSL installed, update
|
2
|
+
# the following line to use "http://" instead
|
3
|
+
source 'https://rubygems.org'
|
4
|
+
|
5
|
+
# Specify your gem's dependencies in middlemac.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 'aruba'
|
17
|
+
gem 'rspec'
|
18
|
+
end
|
data/LICENSE.md
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
The MIT License
|
2
|
+
===============
|
3
|
+
|
4
|
+
Copyright (c) 2016 Jim Derry
|
5
|
+
|
6
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
7
|
+
of this software and associated documentation files (the "Software"), to deal
|
8
|
+
in the Software without restriction, including without limitation the rights
|
9
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
10
|
+
copies of the Software, and to permit persons to whom the Software is
|
11
|
+
furnished to do so, subject to the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be included in
|
14
|
+
all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
17
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
18
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
19
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
20
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
21
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
22
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,110 @@
|
|
1
|
+
middleman-targets readme
|
2
|
+
========================
|
3
|
+
|
4
|
+
`middleman-targets`
|
5
|
+
|
6
|
+
: This gem provides the ability to generate multiple targets by outfitting
|
7
|
+
Middleman with additional command line options. The provided helpers make
|
8
|
+
it simple to control content that is specific to each target, based on the
|
9
|
+
target name or based on feature sets for each target.
|
10
|
+
|
11
|
+
It is standalone and can be used in any Middleman project.
|
12
|
+
|
13
|
+
|
14
|
+
Install the Gem
|
15
|
+
---------------
|
16
|
+
|
17
|
+
Install the gem in your preferred way, typically:
|
18
|
+
|
19
|
+
~~~ bash
|
20
|
+
gem install middleman-targets
|
21
|
+
~~~
|
22
|
+
|
23
|
+
From git source:
|
24
|
+
|
25
|
+
~~~ bash
|
26
|
+
rake install
|
27
|
+
~~~
|
28
|
+
|
29
|
+
|
30
|
+
Documentation
|
31
|
+
-------------
|
32
|
+
|
33
|
+
The complete documentation leverages the features of this gem in order to better
|
34
|
+
document them. Having installed the gem, read the full documentation in your
|
35
|
+
web browser:
|
36
|
+
|
37
|
+
~~~ bash
|
38
|
+
middleman-targets documentation
|
39
|
+
cd middleman-targets-docs/
|
40
|
+
bundle install
|
41
|
+
bundle exec middleman server
|
42
|
+
~~~
|
43
|
+
|
44
|
+
And then open your web browser to the address specified (typically
|
45
|
+
`localhost:4567`).
|
46
|
+
|
47
|
+
|
48
|
+
Quick Documentation
|
49
|
+
-------------------
|
50
|
+
|
51
|
+
[Middleman](https://middlemanapp.com/) 4.1.6 or newer is required. Earlier
|
52
|
+
point versions of Middleman do not have the necessary support for this
|
53
|
+
extension.
|
54
|
+
|
55
|
+
Once setup and configured, you can build multiple targets like so:
|
56
|
+
|
57
|
+
~~~ bash
|
58
|
+
bundle exec middleman build --target mytarget
|
59
|
+
~~~
|
60
|
+
|
61
|
+
Or:
|
62
|
+
|
63
|
+
~~~ bash
|
64
|
+
bundle exec middleman build_all
|
65
|
+
~~~
|
66
|
+
|
67
|
+
Or:
|
68
|
+
|
69
|
+
~~~ bash
|
70
|
+
bundle exec middleman serve --target mytarget
|
71
|
+
~~~
|
72
|
+
|
73
|
+
Added Features
|
74
|
+
--------------
|
75
|
+
|
76
|
+
To support multiple targets and features, flexible configuration and helpers are
|
77
|
+
available, including
|
78
|
+
|
79
|
+
- Enhanced `image_tag` support chooses target-specific assets for you.
|
80
|
+
- Enhanced `image_tag` support conditionally includes assets specific to
|
81
|
+
targets or features that you designate.
|
82
|
+
- The `target_name?()` helper allows you to selectively include or exclude
|
83
|
+
content on a per-target basis.
|
84
|
+
- The `target_feature?()` helper allows fined-grained control over included
|
85
|
+
content by managing features of a target instead of a target per se.
|
86
|
+
- Front matter `target` and `exclude` arrays can ensure entire pages are
|
87
|
+
included or excluded on a target and/or feature specific basis.
|
88
|
+
- …and more.
|
89
|
+
|
90
|
+
|
91
|
+
Middlemac
|
92
|
+
---------
|
93
|
+
|
94
|
+
This Middleman extension is a critical part of
|
95
|
+
[Middlemac](https://github.com/middlemac), the Mac OS X help building system
|
96
|
+
for Mac OS X applications. However this gem is not Mac OS X specific and can be
|
97
|
+
useful in any application for which you want to generate multiple targets.
|
98
|
+
|
99
|
+
|
100
|
+
License
|
101
|
+
-------
|
102
|
+
|
103
|
+
MIT. See `LICENSE.md`.
|
104
|
+
|
105
|
+
|
106
|
+
Changelog
|
107
|
+
---------
|
108
|
+
|
109
|
+
See `CHANGELOG.md` for point changes, or simply have a look at the commit
|
110
|
+
history for non-version changes (such as readme updates).
|
data/Rakefile
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
################################################################################
|
4
|
+
# middleman-targets
|
5
|
+
# This file constitutes the command line interface for middleman-targets
|
6
|
+
################################################################################
|
7
|
+
|
8
|
+
require 'thor'
|
9
|
+
require 'fileutils'
|
10
|
+
require 'middleman-targets/version'
|
11
|
+
|
12
|
+
module MiddlemacTargetsCli
|
13
|
+
|
14
|
+
class Cli < Thor
|
15
|
+
|
16
|
+
map %w[--version -v] => :__print_version
|
17
|
+
|
18
|
+
############################################################
|
19
|
+
# help
|
20
|
+
# Override to add additional description.
|
21
|
+
############################################################
|
22
|
+
def help(*args)
|
23
|
+
if args.count == 0
|
24
|
+
puts <<-HEREDOC
|
25
|
+
|
26
|
+
middleman-targets version #{Middleman::MiddlemanTargets::VERSION}
|
27
|
+
|
28
|
+
This gem adds functionality to Middleman and is not executable on its own
|
29
|
+
(other than for generating the documentation sample project). Instead, you
|
30
|
+
must add this gem to your Middleman project's `Gemfile` and then activate
|
31
|
+
it in your `config.rb` file. This will enable the new `--target` command
|
32
|
+
line option in Middleman, and the new `build_all` command.
|
33
|
+
|
34
|
+
HEREDOC
|
35
|
+
end
|
36
|
+
super
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
############################################################
|
41
|
+
# documentation
|
42
|
+
############################################################
|
43
|
+
desc 'documentation', 'Install the sample project into your current working directory.'
|
44
|
+
long_desc <<-HEREDOC
|
45
|
+
`documentation` will produce a sample project named `middleman-targets-docs/`
|
46
|
+
in your current working directory. This sample uses the features of this gem.
|
47
|
+
You can then serve this new project to read the documentation by:
|
48
|
+
|
49
|
+
cd middleman-targets-docs
|
50
|
+
bundle install
|
51
|
+
bundle exec middleman server
|
52
|
+
|
53
|
+
HEREDOC
|
54
|
+
def documentation
|
55
|
+
source = File.join('..', '..', 'documentation_project', '.')
|
56
|
+
source = File.expand_path(source, __FILE__)
|
57
|
+
dest = File.expand_path(File.join('.', 'middleman-targets-docs', '.'))
|
58
|
+
FileUtils.cp_r(source, dest)
|
59
|
+
puts "middleman-targets installed the project in\n#{dest}"
|
60
|
+
end
|
61
|
+
|
62
|
+
|
63
|
+
############################################################
|
64
|
+
# __print_version
|
65
|
+
############################################################
|
66
|
+
desc '--version, -v', 'print the version'
|
67
|
+
def __print_version
|
68
|
+
puts "middleman-targets version #{Middleman::MiddlemanTargets::VERSION}"
|
69
|
+
end
|
70
|
+
|
71
|
+
end # class Cli
|
72
|
+
|
73
|
+
end # module MiddlemacTargetsCli
|
74
|
+
|
75
|
+
|
76
|
+
###########################################################
|
77
|
+
# Main
|
78
|
+
###########################################################
|
79
|
+
|
80
|
+
MiddlemacTargetsCli::Cli.start(ARGV)
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# Rubymine noise
|
2
|
+
.idea/
|
3
|
+
|
4
|
+
# BBedit noise
|
5
|
+
*.bbprojectd
|
6
|
+
|
7
|
+
# Mac OS X noise
|
8
|
+
.DS_Store
|
9
|
+
|
10
|
+
# Ignore bundler lock files
|
11
|
+
Gemfile.lock
|
12
|
+
|
13
|
+
# Ignore pkg folder
|
14
|
+
/pkg
|
15
|
+
|
16
|
+
# Ignore build folders
|
17
|
+
.rbenv-*
|
18
|
+
.ruby-gemset
|
19
|
+
.ruby-version
|
20
|
+
.sass-cache
|
21
|
+
.sassc
|
22
|
+
.tmp
|
23
|
+
build*
|
24
|
+
Makefile
|
25
|
+
tmp
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# If you do not have OpenSSL installed, change
|
2
|
+
# the following line to use 'http://'
|
3
|
+
source 'https://rubygems.org'
|
4
|
+
|
5
|
+
# For faster file watcher updates on Windows:
|
6
|
+
gem 'wdm', '~> 0.1.0', platforms: [:mswin, :mingw]
|
7
|
+
|
8
|
+
# Windows does not come with time zone data
|
9
|
+
gem 'tzinfo-data', platforms: [:mswin, :mingw, :jruby]
|
10
|
+
|
11
|
+
# Middleman Gems
|
12
|
+
gem 'middleman-targets', '~>1.0.0'
|
13
|
+
gem 'middleman', '~> 4.1.6'
|
14
|
+
gem 'middleman-syntax'
|
@@ -0,0 +1,13 @@
|
|
1
|
+
documentation-project readme
|
2
|
+
----------------------------
|
3
|
+
|
4
|
+
This gem's documentation is a Middleman project using the features of this gem.
|
5
|
+
To view the documentation project, `cd` into this directory and
|
6
|
+
|
7
|
+
~~~ bash
|
8
|
+
gem install
|
9
|
+
bundle exec middleman serve
|
10
|
+
~~~
|
11
|
+
|
12
|
+
When the server starts, it will provide instructions on how to view the project
|
13
|
+
in your web browser.
|
@@ -0,0 +1,123 @@
|
|
1
|
+
################################################################################
|
2
|
+
# Sample Project for middleman-targets
|
3
|
+
################################################################################
|
4
|
+
|
5
|
+
#==========================================================================
|
6
|
+
# Conflicting helpers
|
7
|
+
# middleman-targets extends the built-in `image_tag` helper, but so do
|
8
|
+
# some of Middleman's other extensions. To avoid issues, make sure you
|
9
|
+
# activate those other extensions, first, before :MiddlemanTargets.
|
10
|
+
#==========================================================================
|
11
|
+
activate :automatic_image_sizes
|
12
|
+
activate :automatic_alt_tags
|
13
|
+
|
14
|
+
|
15
|
+
#==========================================================================
|
16
|
+
# Extension Setup
|
17
|
+
# Note that middleman-targets adds configuration parameters to the base
|
18
|
+
# Middleman application (supported feature in 4.0+); there are *not*
|
19
|
+
# extension options. Additionally if middleman-targets is in your Gemfile
|
20
|
+
# then it is also activated automatically.
|
21
|
+
#==========================================================================
|
22
|
+
activate :MiddlemanTargets
|
23
|
+
|
24
|
+
# Set the default target. This is the target that is used automatically
|
25
|
+
# when you `middleman build` or `middleman server` without using the
|
26
|
+
# `targets` CLI option.
|
27
|
+
set :target, :pro
|
28
|
+
|
29
|
+
# Setup your targets and their features. You can use any target names and
|
30
|
+
# feature names that you like, but keep in mind that the key :features is
|
31
|
+
# required for each of your targets.
|
32
|
+
#
|
33
|
+
# The key :build_dir for any target, if used, will override the global
|
34
|
+
# :build_dir setting. You can use a specific string for this setting, and
|
35
|
+
# this string can optionally include a single %s sprintf placeholder which
|
36
|
+
# will be filled with the target name.
|
37
|
+
#
|
38
|
+
# You can add your own keys to each target for your own uses; the
|
39
|
+
# `sample_key` below is an example of such. The generic `target_value()`
|
40
|
+
# helper can retrieve these values, or you can write your own helpers.
|
41
|
+
set :targets, {
|
42
|
+
:free =>
|
43
|
+
{
|
44
|
+
:sample_key => 'People who use free versions don\'t drive profits.',
|
45
|
+
:build_dir => 'build (%s)',
|
46
|
+
:features =>
|
47
|
+
{
|
48
|
+
:feature_advertise_pro => true,
|
49
|
+
:insults_user => true,
|
50
|
+
:grants_wishes => false,
|
51
|
+
}
|
52
|
+
},
|
53
|
+
|
54
|
+
:pro =>
|
55
|
+
{
|
56
|
+
:sample_key => 'You are a valued contributor to our balance sheet!',
|
57
|
+
:features =>
|
58
|
+
{
|
59
|
+
:feature_advertise_pro => false,
|
60
|
+
:insults_user => false,
|
61
|
+
:grants_wishes => true,
|
62
|
+
}
|
63
|
+
},
|
64
|
+
}
|
65
|
+
|
66
|
+
# By enabling :target_magic_images and using middleman-targets' image helper,
|
67
|
+
# then target specific images will be used instead of the image you specify,
|
68
|
+
# *if* that image name is prefixed with :target_magic_word. For example, you
|
69
|
+
# might request "all-my_image.png", and "pro-my_image.png" (if it exists) will
|
70
|
+
# be used in your :pro target instead.
|
71
|
+
#
|
72
|
+
# Important: when this is enabled, images from *other* targets will *not* be
|
73
|
+
# included in the build! In the example above, *any* image prefixed with "free-"
|
74
|
+
# would not be included in the output directory.
|
75
|
+
set :target_magic_images, true
|
76
|
+
set :target_magic_word, 'all'
|
77
|
+
|
78
|
+
# Note that output will now use this directory as a *prefix*; if the target
|
79
|
+
# is :pro, then the actual build directory will be `build (pro)/`. If the
|
80
|
+
# build_dir key is present for any of the :targets, they will override this
|
81
|
+
# setting.
|
82
|
+
set :build_dir, 'build'
|
83
|
+
|
84
|
+
|
85
|
+
#==========================================================================
|
86
|
+
# Regular Middleman Setup
|
87
|
+
#==========================================================================
|
88
|
+
|
89
|
+
set :relative_links, true
|
90
|
+
activate :syntax
|
91
|
+
|
92
|
+
|
93
|
+
#==========================================================================
|
94
|
+
# Helpers
|
95
|
+
# These helpers are used by the sample project only; there's no need
|
96
|
+
# to keep them around in your own projects.
|
97
|
+
#==========================================================================
|
98
|
+
|
99
|
+
# Methods defined in the helpers block are available in templates
|
100
|
+
helpers do
|
101
|
+
|
102
|
+
def product_name
|
103
|
+
'middleman-targets'
|
104
|
+
end
|
105
|
+
|
106
|
+
def product_version
|
107
|
+
'2.0.0-beta1'
|
108
|
+
end
|
109
|
+
|
110
|
+
def product_uri
|
111
|
+
'https://github.com/middlemac'
|
112
|
+
end
|
113
|
+
|
114
|
+
end
|
115
|
+
|
116
|
+
# Build-specific configuration
|
117
|
+
configure :build do
|
118
|
+
# Minify CSS on build
|
119
|
+
# activate :minify_css
|
120
|
+
|
121
|
+
# Minify Javascript on build
|
122
|
+
# activate :minify_javascript
|
123
|
+
end
|