agita 0.1.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/README.md +8 -0
- data/lib/agita/version.rb +3 -0
- data/lib/agita.rb +64 -0
- metadata +85 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 8c52ce68571ba6d74d097f27f6cd873931cc1532
|
4
|
+
data.tar.gz: d91a0ff64160a2e48e3df486486daa3c1c0b98bf
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 888d193a9ea84eb1617cac7028f5363d999dac6c8e6788daebf3e19bdd40193213f264805662e7153e5801a8e1acc9ca7b197b0afffef9c4fe45ff104a478c45
|
7
|
+
data.tar.gz: 25fd7572f56b6de5dc3cc23792d31ce41ae57667717b686e30a85e907186fabbad1ed4562dde08c63b08ad511e8c0ad4f9eef826278e3e953bdd544529f6dbea
|
data/README.md
ADDED
data/lib/agita.rb
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'shellwords'
|
2
|
+
|
3
|
+
# Git commands / workflow helper.
|
4
|
+
class Agita
|
5
|
+
|
6
|
+
# Raise RuntimeError unless
|
7
|
+
def ensure_master_updated_clean
|
8
|
+
ensure_status(
|
9
|
+
"On branch master",
|
10
|
+
"Your branch is up-to-date with 'origin/master'.",
|
11
|
+
"nothing to commit, working directory clean"
|
12
|
+
)
|
13
|
+
end
|
14
|
+
|
15
|
+
# Raise RuntimeError unless current #status is same as expected_status.
|
16
|
+
def ensure_status *expected_status
|
17
|
+
current_status = status
|
18
|
+
unless current_status == expected_status
|
19
|
+
raise RuntimeError.new(
|
20
|
+
"Expected Git status to be:\n" +
|
21
|
+
expected_status.map{|l| " #{l}"}.join("\n") + "\n" +
|
22
|
+
"but it currently is:\n" +
|
23
|
+
current_status.map{|l| " #{l}"}.join("\n")
|
24
|
+
)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
# Return Git status (git status --branch --porcelain --long) as an array.
|
29
|
+
def status
|
30
|
+
run('git status --branch --porcelain --long').split(/\n+/)
|
31
|
+
end
|
32
|
+
|
33
|
+
# Commit path with message.
|
34
|
+
# If there is nothnig to be commited (git status is clean), returns false. Otherwise, does commit and returns true.
|
35
|
+
def commit message, *paths
|
36
|
+
return false if clean?(*paths)
|
37
|
+
file_list = paths.map { |path| Shellwords.escape(path) }
|
38
|
+
run "git add #{file_list.join(' ')}"
|
39
|
+
run "git commit --quiet -m #{Shellwords.escape(message)}"
|
40
|
+
run "git push --quiet"
|
41
|
+
true
|
42
|
+
end
|
43
|
+
|
44
|
+
# Returns true if path is clean (nothing to commit).
|
45
|
+
def clean? *paths
|
46
|
+
file_list = paths.map { |path| Shellwords.escape(path) }
|
47
|
+
run("git status --porcelain #{file_list.join(' ')}") == ''
|
48
|
+
end
|
49
|
+
|
50
|
+
# Creates and push an annotated tag
|
51
|
+
def tag tagname, message
|
52
|
+
run("git tag --annotate #{Shellwords.escape(tagname)} --message=#{Shellwords.escape(message)}")
|
53
|
+
run("git push --quiet origin #{Shellwords.escape(tagname)}")
|
54
|
+
end
|
55
|
+
|
56
|
+
private
|
57
|
+
|
58
|
+
def run command
|
59
|
+
output = `#{command}`
|
60
|
+
raise "#{command} returned non-zero status:\n#{output}" unless $?.exitstatus == 0
|
61
|
+
output
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
metadata
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: agita
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Fabio Pugliese Ornellas
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-01-27 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rspec
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3.4'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '3.4'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: simplecov
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.11'
|
34
|
+
- - ">="
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: 0.11.1
|
37
|
+
type: :development
|
38
|
+
prerelease: false
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - "~>"
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0.11'
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 0.11.1
|
47
|
+
description: Git commands / workflow helper.
|
48
|
+
email: fabio.ornellas@gmail.com
|
49
|
+
executables: []
|
50
|
+
extensions: []
|
51
|
+
extra_rdoc_files:
|
52
|
+
- README.md
|
53
|
+
files:
|
54
|
+
- README.md
|
55
|
+
- lib/agita.rb
|
56
|
+
- lib/agita/version.rb
|
57
|
+
homepage: https://github.com/fornellas/agita
|
58
|
+
licenses: []
|
59
|
+
metadata: {}
|
60
|
+
post_install_message:
|
61
|
+
rdoc_options:
|
62
|
+
- "--main"
|
63
|
+
- README.md
|
64
|
+
- lib/
|
65
|
+
- README.md
|
66
|
+
require_paths:
|
67
|
+
- lib
|
68
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
69
|
+
requirements:
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '0'
|
73
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - ">="
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
requirements: []
|
79
|
+
rubyforge_project:
|
80
|
+
rubygems_version: 2.4.5.1
|
81
|
+
signing_key:
|
82
|
+
specification_version: 4
|
83
|
+
summary: Git commands / workflow helper.
|
84
|
+
test_files: []
|
85
|
+
has_rdoc:
|