increment_persistent 0.0.1
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.
- data/bin/increment +33 -0
- data/lib/increment.rb +61 -0
- metadata +64 -0
data/bin/increment
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
require "thor"
|
4
|
+
require "./lib/increment.rb"
|
5
|
+
|
6
|
+
module Increment
|
7
|
+
class CLI < Thor
|
8
|
+
default_task :increment
|
9
|
+
|
10
|
+
class_option :dry_run, :type => :boolean, :aliases => ["-n"]
|
11
|
+
class_option :name, :type => :string
|
12
|
+
class_option :write, :type => :numeric, :aliases => ["-w"]
|
13
|
+
desc "increment a number", "reads a stored number, increments it, returns and saves it"
|
14
|
+
def increment
|
15
|
+
number = options[:write]
|
16
|
+
name = options[:name]
|
17
|
+
inc = Increment::Runner.new number, name
|
18
|
+
inc.readonly = TRUE if options[:dry_run]
|
19
|
+
inc.increment unless options[:write]
|
20
|
+
puts inc.number
|
21
|
+
end
|
22
|
+
|
23
|
+
desc "list the named numbers", "Print is list of all names of all numbers"
|
24
|
+
def list
|
25
|
+
inc = Increment::Runner.new
|
26
|
+
inc.list.each do |name|
|
27
|
+
puts "#{name}"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
Increment::CLI.start(ARGV)
|
data/lib/increment.rb
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
require "yaml/store"
|
2
|
+
|
3
|
+
module Increment
|
4
|
+
class Runner
|
5
|
+
attr_accessor :readonly
|
6
|
+
|
7
|
+
def initialize given_number=nil, name=nil
|
8
|
+
@name = name || "undefined"
|
9
|
+
|
10
|
+
@filename = File.join(ENV["HOME"], ".increment")
|
11
|
+
@store = YAML::Store.new @filename
|
12
|
+
create_new unless File.exists? @filename
|
13
|
+
|
14
|
+
if given_number.nil?
|
15
|
+
@number = number_in_file || 0
|
16
|
+
else
|
17
|
+
@number = given_number
|
18
|
+
write given_number
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def increment
|
23
|
+
unless @readonly
|
24
|
+
@number += 1
|
25
|
+
write @number
|
26
|
+
end
|
27
|
+
self
|
28
|
+
end
|
29
|
+
|
30
|
+
def number
|
31
|
+
@number
|
32
|
+
end
|
33
|
+
|
34
|
+
def list
|
35
|
+
list = []
|
36
|
+
@store.transaction(false) do
|
37
|
+
list = @store.roots.each.to_a
|
38
|
+
end
|
39
|
+
list
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
def number_in_file
|
44
|
+
number = 0
|
45
|
+
@store.transaction(false) do
|
46
|
+
number = @store[@name]
|
47
|
+
end
|
48
|
+
number
|
49
|
+
end
|
50
|
+
|
51
|
+
def write number
|
52
|
+
@store.transaction do
|
53
|
+
@store[@name] = number || 1
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def create_new
|
58
|
+
write 0
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
metadata
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: increment_persistent
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Bèr Kessels
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-11-14 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: thor
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.16.0
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 0.16.0
|
30
|
+
description: Increment numbers persistently. Stores the numbers in a textfile ~/.increment
|
31
|
+
email: ber@webschuur.com
|
32
|
+
executables:
|
33
|
+
- increment
|
34
|
+
extensions: []
|
35
|
+
extra_rdoc_files: []
|
36
|
+
files:
|
37
|
+
- lib/increment.rb
|
38
|
+
- bin/increment
|
39
|
+
homepage: http://github.com/berkes/increment_persistent
|
40
|
+
licenses: []
|
41
|
+
post_install_message:
|
42
|
+
rdoc_options: []
|
43
|
+
require_paths:
|
44
|
+
- lib
|
45
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
46
|
+
none: false
|
47
|
+
requirements:
|
48
|
+
- - ! '>='
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: '0'
|
51
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - ! '>='
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0'
|
57
|
+
requirements: []
|
58
|
+
rubyforge_project:
|
59
|
+
rubygems_version: 1.8.24
|
60
|
+
signing_key:
|
61
|
+
specification_version: 3
|
62
|
+
summary: Increments numbers and remembers them.
|
63
|
+
test_files: []
|
64
|
+
has_rdoc:
|