middleman-releases 0.2.3 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4708e9ec139e70cf7e23fb7525e748610806d93f
4
- data.tar.gz: 7f0caf4bafede62ebaf8209fe2942d36eb6b231f
3
+ metadata.gz: 329c68d01efd17938005668a2ceb7795961dc671
4
+ data.tar.gz: 2a589586cc4e9c6682af4bd0284fe0c1ac72676b
5
5
  SHA512:
6
- metadata.gz: 7948959551c9c9d1b68ed6456f49ce34def09b992620f5b12de72505dd67ec2e854e6eeeffd0525b5083f69fe10ddaffc7edefcaf7e12b0546519eb790e3acfc
7
- data.tar.gz: d950b26abf9a1e94abdfa3a2651565edd17869e5d0deb7ea409e12e3ee78a88e1b4103af82b9b57e39bf37c61f545f8e35e34e7c85ef55400ec8b8cd7b2f8a43
6
+ metadata.gz: 4801fb20b7707f9204ed3a72fa7e684ea9c7f5b198def70d664db4dc4f2bc2a990c930f130441ccef37e71c263813242ff4f3ffa3854155453f00458c1a76985
7
+ data.tar.gz: e15546dbaffa81f7bcb1f4e8dc3a85135b0d5ceb6cec0aacecb3f3e171e7499390d8bd8939d238282c1669daee545b734bc8815b14ba09d057834a750151be7e
data/README.md CHANGED
@@ -23,6 +23,14 @@ In your template file, you can optionally access a release instance using the he
23
23
  = current_release.title
24
24
  ```
25
25
 
26
+ ## Generate New Software Release
27
+ This gem includes a CLI command to generate a new software release from a template file.
28
+
29
+ ```shell
30
+ # Sets the date and git tag of the release, opens for editing immediately
31
+ $> bundle exec middleman release v4.0.0 --date "2017-04-01 17:00pm EST" --edit
32
+ ```
33
+
26
34
 
27
35
  ## Configuration
28
36
  Configuration options can be defined in your `config.rb` file.
@@ -30,5 +38,7 @@ Configuration options can be defined in your `config.rb` file.
30
38
  ```ruby
31
39
  activate :releases do |releases|
32
40
  # releases.layout = 'custom_layout'
41
+ # releases.releases_dir = 'releases'
42
+ # releases.new_release_template = File.expand_path('../custom_template.tt', __FILE__)
33
43
  end
34
44
  ```
@@ -3,6 +3,7 @@ require "middleman-core"
3
3
  Middleman::Extensions.register :releases do
4
4
  require 'releases/instance'
5
5
  require 'releases/extension'
6
+ require 'releases/commands/release'
6
7
 
7
8
  Releases::Extension
8
9
  end
@@ -0,0 +1,74 @@
1
+ require 'middleman-core/cli'
2
+ require 'date'
3
+
4
+ module Middleman
5
+ module Cli
6
+
7
+ ##
8
+ # This class provides an "release" command for the middleman CLI.
9
+ #
10
+ # @usage bundle exec middleman release --help
11
+ # @usage bundle exec middleman release v3.1.4
12
+ # @usage bundle exec middleman release v3.1.4 --date "2017-03-19 4:00pm EST" --edit
13
+ #
14
+ ##
15
+ class Release < ::Thor::Group
16
+ include Thor::Actions
17
+
18
+ check_unknown_options!
19
+
20
+ # Template files are relative to this file
21
+ # @return [String]
22
+ def self.source_root
23
+ File.dirname( __FILE__ )
24
+ end
25
+
26
+ argument :tag, type: :string
27
+
28
+ class_option "date",
29
+ aliases: "-d",
30
+ desc: "The date to create the post with (defaults to now)"
31
+
32
+ class_option "edit",
33
+ aliases: "-e",
34
+ desc: "Edit the newly created software release",
35
+ default: false,
36
+ type: :boolean
37
+
38
+ def release
39
+ @tag = tag
40
+ @date = options[:date] ? ::Time.zone.parse(options[:date]) : Time.zone.now
41
+
42
+ app = ::Middleman::Application.new do
43
+ config[:mode] = :config
44
+ config[:disable_sitemap] = true
45
+ config[:watcher_disable] = true
46
+ config[:exit_before_ready] = true
47
+ end
48
+
49
+ releases_manager = app.extensions[:releases]
50
+
51
+ release_dir_name = @tag
52
+ absolute_release_path = File.join( app.source_dir, releases_manager.options.releases_dir, release_dir_name, "index.html.markdown" )
53
+
54
+ template releases_manager.options.new_release_template, absolute_release_path
55
+
56
+ # Edit option process
57
+ if options[ :edit ]
58
+ editor = ENV.fetch('MM_EDITOR', ENV.fetch('EDITOR', nil ))
59
+
60
+ if editor
61
+ system( "#{ editor } #{ absolute_release_path }" )
62
+ else
63
+ throw "Could not find a suitable editor. Try setting the environment variable MM_EDITOR."
64
+ end
65
+ end
66
+ end
67
+
68
+ protected
69
+
70
+ # Add to CLI
71
+ Base.register(self, 'release', 'release TAG [options]', 'Create a new software release')
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,7 @@
1
+ ---
2
+ title: <%= @tag %>
3
+ tag: <%= @tag %>
4
+ date: <%= @date %>
5
+ ---
6
+
7
+ Provide some *markdown* release notes.
@@ -2,6 +2,7 @@ module Releases
2
2
  class Extension < ::Middleman::Extension
3
3
  option :layout, 'release', 'Layout for rendering an individual release'
4
4
  option :releases_dir, 'releases', 'Directory containing releases'
5
+ option :new_release_template, File.expand_path('../commands/release.tt', __FILE__), 'Path (relative to project root) to an ERb template that will be used to generate new software releases from the "middleman release" command.'
5
6
 
6
7
  expose_to_template :releases, :latest_release
7
8
 
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "middleman-releases"
6
- s.version = "0.2.3"
6
+ s.version = "0.3.0"
7
7
  s.platform = Gem::Platform::RUBY
8
8
  s.authors = ["Matt Millsaps-Brewer"]
9
9
  s.email = ["matt@madebylotus.com"]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: middleman-releases
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Millsaps-Brewer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-29 00:00:00.000000000 Z
11
+ date: 2017-03-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: middleman-core
@@ -37,6 +37,8 @@ files:
37
37
  - Rakefile
38
38
  - features/support/env.rb
39
39
  - lib/middleman-releases.rb
40
+ - lib/releases/commands/release.rb
41
+ - lib/releases/commands/release.tt
40
42
  - lib/releases/extension.rb
41
43
  - lib/releases/instance.rb
42
44
  - middleman-releases.gemspec