raketeer 0.2.1 → 0.2.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7c640a3f432fd8fe95e94d5eaef3c1a23d53a0aa10c00f753cf3f8dc9cfb01a2
4
- data.tar.gz: c4070047815d4a852f7583534658995152c04c7323193184ad67cfc15746cfee
3
+ metadata.gz: e0fe188ca361d90c09d8cf7222b553aab685af3237b8e1ed6c7ffcc98376d5eb
4
+ data.tar.gz: 000acde7b85235e3972207ebc8de75725d2d3b63de1df18325509d486762fdc7
5
5
  SHA512:
6
- metadata.gz: 9e531f26bbe0158fedbff069663b968dc88990c23ab31d5985a138894241b9517ef4547e4788daf3799cc6e27282ee64d28e634b9c5d32cebe6c5a5bd4da57ee
7
- data.tar.gz: 8fac28b33535152c48be164060c9b63379ffb03df9f1bfc4667184ed98a9fdc1979eb36dd45c0fc48121c6dceafa7df18786b844d5bcb24839fb8965ed85a16e
6
+ metadata.gz: 2ea1eb2f31032fcb5b676645805c0c2805c4f9d08fa5f20776b3a141998f79913e3515d0271ca06aff428a76d15f09f8288b86b5e0c80fba67cf503f765f74c1
7
+ data.tar.gz: f056934701cff50e1b3aa278c63441825a3d543a5f388cbe3acb60061736a2ee9032ab488d0c9251090d044c721690ae853ca85d2eae73c6b0606f687b640cc7
data/CHANGELOG.md CHANGED
@@ -2,7 +2,21 @@
2
2
 
3
3
  Format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
4
4
 
5
- ## [[Unreleased]](https://github.com/esotericpig/raketeer/compare/v0.2.0...master)
5
+ ## [[Unreleased]](https://github.com/esotericpig/raketeer/compare/v0.2.2...master)
6
+
7
+ ## [v0.2.2] - 2019-07-29
8
+ ### Changed
9
+ - Refactored some code (minor)
10
+ - Changed some documentation (minor)
11
+
12
+ ### Added
13
+ - RunTask & 'raketeer/run'
14
+ - Util
15
+ - bin/raketeer (for testing purposes only, not included in the Gem package)
16
+
17
+ ## [v0.2.1] - 2019-07-24
18
+ ### Changed
19
+ - Fixed minor/cosmetic typo
6
20
 
7
21
  ## [v0.2.0] - 2019-07-24
8
22
  ### Added
data/README.md CHANGED
@@ -8,8 +8,6 @@
8
8
 
9
9
  Extra Ruby Rake Tasks.
10
10
 
11
- Name comes from Rocketeer.
12
-
13
11
  ## Contents
14
12
 
15
13
  - [Setup](#setup)
data/Rakefile CHANGED
@@ -24,9 +24,11 @@ require 'bundler/gem_tasks'
24
24
 
25
25
  require 'rake/clean'
26
26
 
27
- require 'raketeer/all'
28
-
29
27
  task default: []
30
28
 
31
29
  CLEAN.exclude('.git/','stock/')
32
30
  CLOBBER.include('doc/')
31
+
32
+ namespace :rt do
33
+ require 'raketeer/all'
34
+ end
data/lib/raketeer/all.rb CHANGED
@@ -23,6 +23,7 @@
23
23
 
24
24
  require 'raketeer/irb' # @since 0.2.0
25
25
  require 'raketeer/nokogiri_installs' # @since 0.1.0
26
+ require 'raketeer/run' # @since 0.2.2
26
27
 
27
28
  module Raketeer
28
29
  ###
@@ -25,6 +25,8 @@ require 'rake'
25
25
 
26
26
  require 'rake/tasklib'
27
27
 
28
+ require 'raketeer/util'
29
+
28
30
  module Raketeer
29
31
  ###
30
32
  # @author Jonathan Bradley Whited (@esotericpig)
@@ -43,7 +45,7 @@ module Raketeer
43
45
  super()
44
46
 
45
47
  @description = 'Open an irb session loaded with this library'
46
- @main_module = find_main_module()
48
+ @main_module = Util.find_main_module()
47
49
  @name = name
48
50
  @warning = true
49
51
 
@@ -66,28 +68,5 @@ module Raketeer
66
68
  sh(*@irb_cmd)
67
69
  end
68
70
  end
69
-
70
- def find_main_module()
71
- # First, try the lib/ dir
72
- main_file = Dir.glob(File.join('lib','*.rb'))
73
-
74
- if main_file.length == 1
75
- basename = File.basename(main_file[0],'.*')
76
-
77
- return basename
78
- end
79
-
80
- # Next, try the Gemspec
81
- main_file = Dir.glob('*.gemspec')
82
-
83
- if main_file.length == 1
84
- basename = File.basename(main_file[0],'.*')
85
- main_file = File.join('lib',"#{basename}.rb")
86
-
87
- return basename if File.exist?(main_file)
88
- end
89
-
90
- return nil
91
- end
92
71
  end
93
72
  end
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+ # frozen_string_literal: true
4
+
5
+ #--
6
+ # This file is part of Raketeer.
7
+ # Copyright (c) 2019 Jonathan Bradley Whited (@esotericpig)
8
+ #
9
+ # Raketeer is free software: you can redistribute it and/or modify
10
+ # it under the terms of the GNU Lesser General Public License as published by
11
+ # the Free Software Foundation, either version 3 of the License, or
12
+ # (at your option) any later version.
13
+ #
14
+ # Raketeer is distributed in the hope that it will be useful,
15
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
+ # GNU Lesser General Public License for more details.
18
+ #
19
+ # You should have received a copy of the GNU Lesser General Public License
20
+ # along with Raketeer. If not, see <https://www.gnu.org/licenses/>.
21
+ #++
22
+
23
+
24
+ require 'raketeer/run_task'
25
+
26
+ module Raketeer
27
+ ###
28
+ # @author Jonathan Bradley Whited (@esotericpig)
29
+ # @since 0.2.2
30
+ ###
31
+ module Run
32
+ end
33
+ end
34
+
35
+ Raketeer::RunTask.new() # @since 0.2.2
@@ -0,0 +1,102 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+ # frozen_string_literal: true
4
+
5
+ #--
6
+ # This file is part of Raketeer.
7
+ # Copyright (c) 2019 Jonathan Bradley Whited (@esotericpig)
8
+ #
9
+ # Raketeer is free software: you can redistribute it and/or modify
10
+ # it under the terms of the GNU Lesser General Public License as published by
11
+ # the Free Software Foundation, either version 3 of the License, or
12
+ # (at your option) any later version.
13
+ #
14
+ # Raketeer is distributed in the hope that it will be useful,
15
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
+ # GNU Lesser General Public License for more details.
18
+ #
19
+ # You should have received a copy of the GNU Lesser General Public License
20
+ # along with Raketeer. If not, see <https://www.gnu.org/licenses/>.
21
+ #++
22
+
23
+
24
+ require 'rake'
25
+
26
+ require 'rake/tasklib'
27
+
28
+ require 'raketeer/util'
29
+
30
+ module Raketeer
31
+ ###
32
+ # @author Jonathan Bradley Whited (@esotericpig)
33
+ # @since 0.2.2
34
+ ###
35
+ class RunTask < Rake::TaskLib
36
+ attr_accessor :bin_dir
37
+ attr_accessor :description
38
+ attr_accessor :executable
39
+ attr_accessor :name
40
+ attr_accessor :run_cmd
41
+ attr_accessor :warning
42
+
43
+ alias_method :warning?,:warning
44
+
45
+ def initialize(name=:run)
46
+ super()
47
+
48
+ @bin_dir = 'bin'
49
+ @description = %Q(Run this project's main file: "rake #{name} -- --version")
50
+ @executable = nil
51
+ @name = name
52
+ @warning = true
53
+
54
+ @run_cmd = ['ruby']
55
+ @run_cmd += ['-r','rubygems']
56
+ @run_cmd += ['-r','bundler/setup']
57
+
58
+ # Yield before using changeable vars
59
+ yielf self if block_given?()
60
+
61
+ @executable = Util.find_main_executable(@bin_dir) if @executable.nil?()
62
+
63
+ @run_cmd << '-w' if @warning
64
+ @run_cmd << File.join(@bin_dir,@executable)
65
+
66
+ define()
67
+ end
68
+
69
+ def define()
70
+ desc @description
71
+ task @name do |task,args|
72
+ first_arg_index = -1
73
+ name_s = @name.to_s()
74
+
75
+ # Cut out "--silent" for "rake --silent rt:run -- --version",
76
+ # else "--silent" will be sent to the executable.
77
+ ARGV.each_with_index do |arg,i|
78
+ # There could be a namespace and/or args, like "rt:run[true]".
79
+ # Rake task names are case-sensitive.
80
+ if arg.include?(name_s)
81
+ first_arg_index = i + 1
82
+
83
+ break
84
+ end
85
+ end
86
+
87
+ # Are there args for the run command?
88
+ if first_arg_index >= 0 && first_arg_index < ARGV.length
89
+ run_args = ARGV.slice!(first_arg_index..-1)
90
+
91
+ # Cut out "--" for "rake run -- --version".
92
+ # For older versions of rake, you didn't need "--", so check for it.
93
+ run_args.slice!(0) if run_args[0] == '--'
94
+
95
+ @run_cmd += run_args
96
+ end
97
+
98
+ sh(*@run_cmd)
99
+ end
100
+ end
101
+ end
102
+ end
@@ -0,0 +1,67 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+ # frozen_string_literal: true
4
+
5
+ #--
6
+ # This file is part of Raketeer.
7
+ # Copyright (c) 2019 Jonathan Bradley Whited (@esotericpig)
8
+ #
9
+ # Raketeer is free software: you can redistribute it and/or modify
10
+ # it under the terms of the GNU Lesser General Public License as published by
11
+ # the Free Software Foundation, either version 3 of the License, or
12
+ # (at your option) any later version.
13
+ #
14
+ # Raketeer is distributed in the hope that it will be useful,
15
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
+ # GNU Lesser General Public License for more details.
18
+ #
19
+ # You should have received a copy of the GNU Lesser General Public License
20
+ # along with Raketeer. If not, see <https://www.gnu.org/licenses/>.
21
+ #++
22
+
23
+
24
+ module Raketeer
25
+ ###
26
+ # @author Jonathan Bradley Whited (@esotericpig)
27
+ # @since 0.2.2
28
+ ###
29
+ module Util
30
+ def self.find_main_executable(bin_dir)
31
+ # Try any file
32
+ main_exe = Dir.glob(File.join(bin_dir,'*'))
33
+
34
+ return File.basename(main_exe[0]) if main_exe.length == 1
35
+
36
+ # Try only .rb files
37
+ main_exe = Dir.glob(File.join(bin_dir,'*.rb'))
38
+
39
+ return File.basename(main_exe[0]) if main_exe.length == 1
40
+
41
+ # Try using the main module
42
+ main_mod = find_main_module()
43
+
44
+ if !main_mod.nil?()
45
+ main_exe = File.join(bin_dir,main_mod)
46
+
47
+ return main_mod if File.exist?(main_exe)
48
+ end
49
+
50
+ return nil
51
+ end
52
+
53
+ def self.find_main_module()
54
+ # Try the lib/ dir
55
+ main_file = Dir.glob(File.join('lib','*.rb'))
56
+
57
+ return File.basename(main_file[0],'.*') if main_file.length == 1
58
+
59
+ # Try the Gemspec
60
+ main_file = Dir.glob('*.gemspec')
61
+
62
+ return File.basename(main_file[0],'.*') if main_file.length == 1
63
+
64
+ return nil
65
+ end
66
+ end
67
+ end
@@ -22,5 +22,5 @@
22
22
 
23
23
 
24
24
  module Raketeer
25
- VERSION = '0.2.1'
25
+ VERSION = '0.2.2'
26
26
  end
data/lib/raketeer.rb CHANGED
@@ -23,6 +23,7 @@
23
23
 
24
24
  require 'raketeer/irb_task'
25
25
  require 'raketeer/nokogiri_install_tasks'
26
+ require 'raketeer/run_task'
26
27
  require 'raketeer/version'
27
28
 
28
29
  ###
data/raketeer.gemspec CHANGED
@@ -20,7 +20,7 @@
20
20
  #++
21
21
 
22
22
 
23
- lib = File.expand_path('../lib',__FILE__)
23
+ lib = File.expand_path(File.join('..','lib'),__FILE__)
24
24
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
25
25
 
26
26
  require 'raketeer/version'
@@ -33,7 +33,7 @@ Gem::Specification.new() do |spec|
33
33
  spec.licenses = ['LGPL-3.0-or-later']
34
34
  spec.homepage = 'https://github.com/esotericpig/raketeer'
35
35
  spec.summary = 'Extra Ruby Rake Tasks.'
36
- spec.description = "#{spec.summary} Tasks for IRB, Nokogiri, etc."
36
+ spec.description = 'Extra Ruby Rake Tasks for IRB, Nokogiri, running, etc.'
37
37
 
38
38
  spec.metadata = {
39
39
  'bug_tracker_uri' => 'https://github.com/esotericpig/raketeer/issues',
@@ -51,8 +51,21 @@ Gem::Specification.new() do |spec|
51
51
 
52
52
  spec.required_ruby_version = '>= 2.1.10'
53
53
 
54
+ # TODO: also add the below comment to the README & reword for user
55
+ # If it is a dependency specific to a task, then it should probably be added
56
+ # as a dev dependency (not a runtime dependency) so that a bunch of
57
+ # non-essential dependencies (to the user) are not added.
58
+ #
59
+ # For example, if the user only uses the Nokogiri tasks, then they don't need
60
+ # the IRB dependency.
61
+ #
62
+ # Therefore, it is up to the user to add the dependencies they need.
63
+ # If the user uses the IRB task, then they will have to add 'irb' as a
64
+ # development dependency in their own project's Gemspec.
65
+
54
66
  spec.add_runtime_dependency 'rake' #,'~> 12.3'
55
67
 
56
68
  spec.add_development_dependency 'bundler','~> 1.17'
69
+ spec.add_development_dependency 'irb' ,'~> 1.0' # For IRBTask
57
70
  spec.add_development_dependency 'yard' ,'~> 0.9' # For doc
58
71
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: raketeer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Bradley Whited (@esotericpig)
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-24 00:00:00.000000000 Z
11
+ date: 2019-07-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.17'
41
+ - !ruby/object:Gem::Dependency
42
+ name: irb
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: yard
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -52,7 +66,7 @@ dependencies:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
68
  version: '0.9'
55
- description: Extra Ruby Rake Tasks. Tasks for IRB, Nokogiri, etc.
69
+ description: Extra Ruby Rake Tasks for IRB, Nokogiri, running, etc.
56
70
  email:
57
71
  - bradley@esotericpig.com
58
72
  executables: []
@@ -70,6 +84,9 @@ files:
70
84
  - lib/raketeer/irb_task.rb
71
85
  - lib/raketeer/nokogiri_install_tasks.rb
72
86
  - lib/raketeer/nokogiri_installs.rb
87
+ - lib/raketeer/run.rb
88
+ - lib/raketeer/run_task.rb
89
+ - lib/raketeer/util.rb
73
90
  - lib/raketeer/version.rb
74
91
  - raketeer.gemspec
75
92
  homepage: https://github.com/esotericpig/raketeer