runfile 0.6.0 → 0.6.1

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: 93b12b23dbe13c9268f51757ae21b59fc59abec7
4
- data.tar.gz: 9ccca34c560d656bbb98ceddbf4059a97540a370
3
+ metadata.gz: c3a9ac4d26448820b0d60e8cc43d02256de42d82
4
+ data.tar.gz: 5363a4b2a3f513693178f1f2d21b8a93f4946ca2
5
5
  SHA512:
6
- metadata.gz: a8e21b6ef2cdab994ab2e368d5fa1f492f7397868d79faa6825823730fa1ea80aa219c858e09843e8d96f524c000e1ef649abd24de9d4ac6b7e57ae5e4903c10
7
- data.tar.gz: fe4e88c465ab572016bc331b81b388c743564be4092f16cbe3d5df27de0bf0018b14175b918598dd48dc1b2db13e825b702440854f527c8cdb1984404cfe34e8
6
+ metadata.gz: 1a6cc42619f4b37c8e73df76af4dd81164e1718a37f93d3049cf4ba420aa828946bc139a5a3544e090659e48afe3cda804c1ff701555aa3ff03d3b698e6f7581
7
+ data.tar.gz: eced22d6cb4bc351e0f9cf121db680a7c30b7ed90f23e12502cd71e4bfeca247641fc0425de979409b61cf2568de72eab3d4969daf0948a04547ffb1af6fa4df
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  Runfile - If Rake and Docopt had a baby
2
- =======================================
2
+ ==================================================
3
3
 
4
4
  [![Gem Version](https://badge.fury.io/rb/runfile.svg)](http://badge.fury.io/rb/runfile)
5
5
  [![Build Status](https://travis-ci.org/DannyBen/runfile.svg?branch=master)](https://travis-ci.org/DannyBen/runfile)
@@ -25,21 +25,22 @@ You create a `Runfile`, and execute commands with
25
25
 
26
26
  ---
27
27
 
28
- ## Install ##
28
+ Install
29
+ --------------------------------------------------
29
30
 
30
31
  $ gem install runfile
31
32
 
32
33
 
33
-
34
- ## Quick Start ##
34
+ Quick Start
35
+ --------------------------------------------------
35
36
 
36
37
  $ run make # create a new Runfile
37
38
  $ run --help # show the usage patterns
38
39
  $ vi Runfile # edit the Runfile
39
40
 
40
41
 
41
-
42
- ## Example ##
42
+ Example
43
+ --------------------------------------------------
43
44
 
44
45
  The most minimal `Runfile` looks like this:
45
46
 
@@ -85,8 +86,8 @@ Options:
85
86
  ```
86
87
 
87
88
 
88
-
89
- ## Runfile per project or global Runfiles ##
89
+ Runfile per project or global Runfiles
90
+ --------------------------------------------------
90
91
 
91
92
  In addition to the per project `Runfile` files, it is also possible to
92
93
  create global runfiles that are accessible to you only or to anybody on
@@ -105,8 +106,8 @@ for global (named) runfiles.
105
106
  Read more in the [Runfile Location and Filename wiki page](https://github.com/DannyBen/runfile/wiki/Runfile-Location-and-Filename)
106
107
 
107
108
 
108
-
109
- ## Documentation ##
109
+ Documentation
110
+ --------------------------------------------------
110
111
 
111
112
  - [Learn by Example](https://github.com/DannyBen/runfile/tree/master/examples)
112
113
  - [Runfile Command Reference](https://github.com/DannyBen/runfile/wiki/Runfile-Command-Reference)
@@ -5,5 +5,6 @@ require 'runfile/action'
5
5
  require 'runfile/runner'
6
6
  require 'runfile/dsl'
7
7
  require 'runfile/util'
8
+ require 'runfile/settings'
8
9
 
9
10
  require 'runfile/extensions/exec'
@@ -31,11 +31,16 @@ module Runfile
31
31
  runfile and return runfile
32
32
  end
33
33
 
34
- # if we are here, offer some help and advice
35
- show_make_help runfiles
34
+ # if we are here, offer some help and advice and show a list
35
+ # of possible runfiles to run.
36
+ show_make_help runfiles, settings.folder
36
37
  return false
37
38
  end
38
39
 
40
+ def purge_settings
41
+ @settings = OpenStruct.new
42
+ end
43
+
39
44
  private
40
45
 
41
46
  # Create a new runfile in the current directory. We can either
@@ -53,7 +58,7 @@ module Runfile
53
58
  end
54
59
  end
55
60
 
56
- # Find all *.runfile files in in our search difrectories
61
+ # Find all *.runfile files in our search difrectories
57
62
  def find_runfiles
58
63
  result = []
59
64
  dirs = runfile_folders
@@ -65,14 +70,16 @@ module Runfile
65
70
  end
66
71
 
67
72
  # Show some helpful tips, and a list of available runfiles
68
- def show_make_help(runfiles)
69
- say "!txtpur!Runfile engine v#{Runfile::VERSION}"
70
- runfiles.size < 3 and say "\nTip: Type '!txtblu!run make!txtrst!' or '!txtblu!run make name!txtrst!' to create a runfile.\nFor global access, place !txtblu!named.runfiles!txtrst! in ~/runfile/ or in /etc/runfile/."
73
+ def show_make_help(runfiles, compact=false)
74
+ say "!txtpur!Runfile engine v#{Runfile::VERSION}" unless compact
75
+ if runfiles.size < 3 and !compact
76
+ say "\nTip: Type '!txtblu!run make!txtrst!' or '!txtblu!run make name!txtrst!' to create a runfile.\nFor global access, place !txtblu!named.runfiles!txtrst! in ~/runfile/ or in /etc/runfile/."
77
+ end
71
78
  if runfiles.empty?
72
79
  say "\n!txtred!Runfile not found."
73
80
  else
74
81
  say ""
75
- say_runfile_list runfiles
82
+ say_runfile_list runfiles, compact
76
83
  end
77
84
  end
78
85
 
@@ -81,7 +88,14 @@ module Runfile
81
88
  # This trick allows searching in subfolders recursively, including
82
89
  # one level of symlinked folder
83
90
  subdirs = '**{,/*/**}'
84
- [Dir.pwd, "#{Dir.home}/runfile/#{subdirs}", "/etc/runfile/#{subdirs}"]
91
+
92
+ # If there is a '.runfile' settings file with a folder definition
93
+ # in it, use it. Otherwise, search globally.
94
+ if settings.folder
95
+ ["#{settings.folder}/#{subdirs}"]
96
+ else
97
+ [Dir.pwd, "#{Dir.home}/runfile/#{subdirs}", "/etc/runfile/#{subdirs}"]
98
+ end
85
99
  end
86
100
 
87
101
  # [UNUSED] Same as runfile_folders, but including PATH
@@ -92,19 +106,27 @@ module Runfile
92
106
  end
93
107
 
94
108
  # Output the list of available runfiles
95
- def say_runfile_list(runfiles)
109
+ def say_runfile_list(runfiles, compact=false)
96
110
  runfile_paths = runfiles.map { |f| File.dirname f }
97
111
  max = runfile_paths.max_by(&:length).size
98
112
  width, height = detect_terminal_size
99
113
  runfiles.each do |f|
100
114
  f[/([^\/]+).runfile$/]
101
115
  command = "run #{$1}"
102
- spacer_size = width - max - command.size - 6
103
- spacer_size = [1, spacer_size].max
104
- spacer = '.' * spacer_size
105
- say " !txtgrn!#{command}!txtrst! #{spacer} #{File.dirname f}"
116
+ if compact
117
+ say " !txtgrn!#{command}!txtrst!"
118
+ else
119
+ spacer_size = width - max - command.size - 6
120
+ spacer_size = [1, spacer_size].max
121
+ spacer = '.' * spacer_size
122
+ say " !txtgrn!#{command}!txtrst! #{spacer} #{File.dirname f}"
123
+ end
106
124
  end
107
125
  end
108
126
 
127
+ def settings
128
+ @settings ||= Settings.new.as_struct
129
+ end
130
+
109
131
  end
110
132
  end
@@ -30,12 +30,12 @@ module Runfile
30
30
 
31
31
  # Return a singleton Runner instance.
32
32
  def self.instance
33
- @@instance = self.new if @@instance.nil?
34
- @@instance
33
+ @@instance ||= self.new
35
34
  end
36
35
 
37
36
  # Load and execute a Runfile call.
38
37
  def execute(argv, filename='Runfile')
38
+ @ignore_settings = !filename
39
39
  filename and File.file?(filename) or handle_no_runfile argv
40
40
  begin
41
41
  load filename
@@ -141,6 +141,7 @@ module Runfile
141
141
  # on our part, or the name of a runfile to execute.
142
142
  def handle_no_runfile(argv)
143
143
  maker = RunfileHelper.new
144
+ maker.purge_settings if @ignore_settings
144
145
  runfile = maker.handle argv
145
146
  if runfile
146
147
  @superspace = argv[0]
@@ -0,0 +1,27 @@
1
+ require 'ostruct'
2
+ require 'yaml'
3
+
4
+ module Runfile
5
+
6
+ # The Settings class handles '.runfile' YAML config files.
7
+ # If found in the current directory, we will use their content.
8
+ class Settings
9
+ def initialize
10
+ end
11
+
12
+ def as_struct
13
+ OpenStruct.new settings
14
+ end
15
+
16
+ private
17
+
18
+ def settings
19
+ @settings ||= settings!
20
+ end
21
+
22
+ def settings!
23
+ File.file?('.runfile') ? YAML.load_file('.runfile') : {}
24
+ end
25
+ end
26
+
27
+ end
@@ -1,3 +1,3 @@
1
1
  module Runfile
2
- VERSION = "0.6.0"
2
+ VERSION = "0.6.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: runfile
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Danny Ben Shitrit
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-12 00:00:00.000000000 Z
11
+ date: 2016-04-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colsole
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.2'
19
+ version: '0.3'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.2'
26
+ version: '0.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: docopt
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '4.2'
97
+ - !ruby/object:Gem::Dependency
98
+ name: similar_text
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 0.0.4
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 0.0.4
97
111
  description: Build command line applications per project with ease. Rake-inspired,
98
112
  Docopt inside.
99
113
  email: db@dannyben.com
@@ -113,6 +127,7 @@ files:
113
127
  - lib/runfile/extensions/exec.rb
114
128
  - lib/runfile/runfile_helper.rb
115
129
  - lib/runfile/runner.rb
130
+ - lib/runfile/settings.rb
116
131
  - lib/runfile/templates/Runfile
117
132
  - lib/runfile/util.rb
118
133
  - lib/runfile/version.rb