git-semaphore 0.0.9 → 1.0.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 +4 -4
- data/.gitignore +9 -19
- data/.pryrc +6 -0
- data/.ruby-version +1 -1
- data/CODE_OF_CONDUCT.md +49 -0
- data/LICENSE.txt +17 -18
- data/README.md +166 -40
- data/Rakefile +8 -9
- data/bin/console +14 -0
- data/bin/setup +10 -0
- data/exe/git-semaphore +79 -0
- data/git-semaphore.gemspec +15 -19
- data/lib/git/semaphore/api.rb +133 -0
- data/lib/git/semaphore/api_cache.rb +59 -0
- data/lib/git/semaphore/api_enrich.rb +40 -0
- data/lib/git/semaphore/app.rb +121 -0
- data/lib/{git-semaphore → git/semaphore}/banner.rb +0 -0
- data/lib/{git-semaphore → git/semaphore}/copyright.rb +1 -1
- data/lib/{git-semaphore → git/semaphore}/version.rb +1 -1
- data/lib/git/semaphore.rb +77 -0
- metadata +55 -181
- data/.bundle/config +0 -3
- data/.irbrc +0 -13
- data/bin/git-semaphore +0 -115
- data/features/cassettes/cucumber_tags/api_branch_status.json +0 -20
- data/features/cassettes/cucumber_tags/api_project_branches.json +0 -14
- data/features/cassettes/cucumber_tags/api_projects.json +0 -46
- data/features/cassettes/cucumber_tags/vcr_api_branches.yml +0 -70
- data/features/cassettes/cucumber_tags/vcr_api_projects.yml +0 -102
- data/features/cassettes/cucumber_tags/vcr_api_rebuild_last_revision.yml +0 -55
- data/features/cassettes/cucumber_tags/vcr_api_status.yml +0 -76
- data/features/coming_soon.feature +0 -13
- data/features/env_config.feature +0 -11
- data/features/git_config.feature +0 -11
- data/features/help_and_version.feature +0 -33
- data/features/semaphore_app_api.feature +0 -29
- data/features/semaphore_app_config.feature +0 -37
- data/features/semaphore_auth_token.feature +0 -32
- data/features/semaphore_project_token.feature +0 -32
- data/features/step_definitions/git-semaphore_steps.rb +0 -121
- data/features/step_definitions/patch_methadone_steps.rb +0 -5
- data/features/step_definitions/vcr_semaphore_steps.rb +0 -25
- data/features/support/env.rb +0 -7
- data/features/support/semaphoreapp.rb +0 -2
- data/features/support/vcr.rb +0 -14
- data/features/working_directory.feature +0 -22
- data/lib/git-semaphore/api.rb +0 -60
- data/lib/git-semaphore/app.rb +0 -123
- data/lib/git-semaphore.rb +0 -15
- data/spec_helper.rb +0 -6
- data/vendor/bundle/.gitignore +0 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 796fce310598b663f7a73fa5f98d68602de41bf6
|
4
|
+
data.tar.gz: 25ace2adb5a1a3f245ab1a02c9f86553917d0550
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 24e942d6b710d328183c42d89937ca5e80c2c51ed5dc2d3e5f5cea4780bd3b1b2ad890c3bfb43d01a55dbcbcb2b7b4bba889e1adb7473562662d4ad00bc488b0
|
7
|
+
data.tar.gz: 168659a4950ecdba848365456bea3052ca393734cf72e942affdf81e859fbdfb139067a303e21b5ee44124f1143030b450e69df4a338f0996ce54739ede739f4
|
data/.gitignore
CHANGED
@@ -1,19 +1,9 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
.
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
doc/
|
11
|
-
lib/bundler/man
|
12
|
-
pkg
|
13
|
-
rdoc
|
14
|
-
spec/reports
|
15
|
-
test/tmp
|
16
|
-
test/version_tmp
|
17
|
-
tmp
|
18
|
-
*.sublime-*
|
19
|
-
vcr_debug.log
|
1
|
+
/.bundle/
|
2
|
+
/.yardoc
|
3
|
+
/Gemfile.lock
|
4
|
+
/_yardoc/
|
5
|
+
/coverage/
|
6
|
+
/doc/
|
7
|
+
/pkg/
|
8
|
+
/spec/reports/
|
9
|
+
/tmp/
|
data/.pryrc
ADDED
@@ -0,0 +1,6 @@
|
|
1
|
+
# this loads all of "git semaphore"
|
2
|
+
load "exe/git-semaphore" unless Kernel.const_defined? 'Git::Semaphore'
|
3
|
+
|
4
|
+
# utility function to set pry context
|
5
|
+
# to an instance of <Git::Semaphore::App>
|
6
|
+
def app() pry Git::Semaphore::App.new(Git::Semaphore.auth_token, Git::Semaphore.git_repo, ENV) ; end
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.3.1
|
data/CODE_OF_CONDUCT.md
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
# Contributor Code of Conduct
|
2
|
+
|
3
|
+
As contributors and maintainers of this project, and in the interest of
|
4
|
+
fostering an open and welcoming community, we pledge to respect all people who
|
5
|
+
contribute through reporting issues, posting feature requests, updating
|
6
|
+
documentation, submitting pull requests or patches, and other activities.
|
7
|
+
|
8
|
+
We are committed to making participation in this project a harassment-free
|
9
|
+
experience for everyone, regardless of level of experience, gender, gender
|
10
|
+
identity and expression, sexual orientation, disability, personal appearance,
|
11
|
+
body size, race, ethnicity, age, religion, or nationality.
|
12
|
+
|
13
|
+
Examples of unacceptable behavior by participants include:
|
14
|
+
|
15
|
+
* The use of sexualized language or imagery
|
16
|
+
* Personal attacks
|
17
|
+
* Trolling or insulting/derogatory comments
|
18
|
+
* Public or private harassment
|
19
|
+
* Publishing other's private information, such as physical or electronic
|
20
|
+
addresses, without explicit permission
|
21
|
+
* Other unethical or unprofessional conduct
|
22
|
+
|
23
|
+
Project maintainers have the right and responsibility to remove, edit, or
|
24
|
+
reject comments, commits, code, wiki edits, issues, and other contributions
|
25
|
+
that are not aligned to this Code of Conduct, or to ban temporarily or
|
26
|
+
permanently any contributor for other behaviors that they deem inappropriate,
|
27
|
+
threatening, offensive, or harmful.
|
28
|
+
|
29
|
+
By adopting this Code of Conduct, project maintainers commit themselves to
|
30
|
+
fairly and consistently applying these principles to every aspect of managing
|
31
|
+
this project. Project maintainers who do not follow or enforce the Code of
|
32
|
+
Conduct may be permanently removed from the project team.
|
33
|
+
|
34
|
+
This code of conduct applies both within project spaces and in public spaces
|
35
|
+
when an individual is representing the project or its community.
|
36
|
+
|
37
|
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
38
|
+
reported by contacting a project maintainer at peter.vandenberk@simplybusiness.co.uk. All
|
39
|
+
complaints will be reviewed and investigated and will result in a response that
|
40
|
+
is deemed necessary and appropriate to the circumstances. Maintainers are
|
41
|
+
obligated to maintain confidentiality with regard to the reporter of an
|
42
|
+
incident.
|
43
|
+
|
44
|
+
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
45
|
+
version 1.3.0, available at
|
46
|
+
[http://contributor-covenant.org/version/1/3/0/][version]
|
47
|
+
|
48
|
+
[homepage]: http://contributor-covenant.org
|
49
|
+
[version]: http://contributor-covenant.org/version/1/3/0/
|
data/LICENSE.txt
CHANGED
@@ -1,22 +1,21 @@
|
|
1
|
-
|
1
|
+
The MIT License (MIT)
|
2
2
|
|
3
|
-
|
3
|
+
Copyright (c) 2012-2016 Peter Vandenberk
|
4
4
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
the following conditions:
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
12
11
|
|
13
|
-
The above copyright notice and this permission notice shall be
|
14
|
-
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
15
14
|
|
16
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
OF
|
22
|
-
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
CHANGED
@@ -1,84 +1,210 @@
|
|
1
1
|
# Git::Semaphore
|
2
2
|
|
3
|
-
[](https://semaphoreci.com/pvdb/git-semaphore)
|
4
4
|
|
5
5
|
[](https://travis-ci.org/pvdb/git-semaphore)
|
6
6
|
|
7
|
-
git
|
7
|
+
Integrate git repositories with their corresponding project on [semaphoreci.com][] _(via the semaphore API)_
|
8
|
+
|
9
|
+
## Features
|
10
|
+
|
11
|
+
* highly opiniated
|
12
|
+
* integrated with `git`
|
13
|
+
* caching of API results
|
14
|
+
* pagination of API calls
|
15
|
+
* enrichment of API data
|
16
|
+
* extensive API feature support
|
17
|
+
* support for multiple Semaphore accounts
|
18
|
+
|
19
|
+
## Semaphore API support
|
20
|
+
|
21
|
+
The following sections of the [Semaphore API][] are fully or partially supported by `git semaphore`:
|
22
|
+
|
23
|
+
| API section | | summary |
|
24
|
+
|--------------------|----|---------|
|
25
|
+
| [authentication][] | ✅ | API authentication |
|
26
|
+
| [projects][] | ✅ | listing projects |
|
27
|
+
| [branches and builds][] | ✅ | querying branches and managing builds |
|
28
|
+
| [servers and deploys][] | ❌ | querying servers and managing deploys |
|
29
|
+
| [webhooks][] | ❌ | listing and managing webhooks |
|
30
|
+
|
31
|
+
[authentication]: https://semaphoreci.com/docs/api_authentication.html
|
32
|
+
[projects]: https://semaphoreci.com/docs/projects-api.html
|
33
|
+
[branches and builds]: https://semaphoreci.com/docs/branches-and-builds-api.html
|
34
|
+
[servers and deploys]: https://semaphoreci.com/docs/servers-and-deploys-api.html
|
35
|
+
[webhooks]: https://semaphoreci.com/docs/webhooks-api.html
|
36
|
+
|
37
|
+
The following [Semaphore API][] features are supported by `git semaphore`:
|
38
|
+
|
39
|
+
| API feature | | command |summary |
|
40
|
+
|------------------|----|---------|--------|
|
41
|
+
| [authentication][] | ✅ | | provide user authentication via an authentication token |
|
42
|
+
| [projects][] | ✅ | `git semaphore --projects` | list all projects and their current status |
|
43
|
+
| [project branches][] | ✅ | `git semaphore --branches` | list all branches for the current project |
|
44
|
+
| [branch status][] | ✅ | `git semaphore --status` | list the build status for the current branch |
|
45
|
+
| [branch history][] | ✅ | `git semaphore --history` | list the build history for the current branch |
|
46
|
+
| [build information][] | ❌ | | detailed information for a given build number |
|
47
|
+
| [build log][] | ❌ | | execution logs for a given build number _(per thread and command)_ |
|
48
|
+
| [rebuild][] | ✅ | `git semaphore --rebuild` | rebuild last revision for the current branch |
|
49
|
+
| [launch build][] | ❌ | | launch a build for the given commit SHA |
|
50
|
+
| [stop][] | ❌ | | stop an in-progress build |
|
51
|
+
| [deploy][] | ❌ | | run a deploy from a given build |
|
52
|
+
|
53
|
+
[project branches]: https://semaphoreci.com/docs/branches-and-builds-api.html#project_branches
|
54
|
+
[branch status]: https://semaphoreci.com/docs/branches-and-builds-api.html#branch_status
|
55
|
+
[branch history]: https://semaphoreci.com/docs/branches-and-builds-api.html#branch_history
|
56
|
+
[build information]: https://semaphoreci.com/docs/branches-and-builds-api.html#build_information
|
57
|
+
[build log]: https://semaphoreci.com/docs/branches-and-builds-api.html#build_log
|
58
|
+
[rebuild]: https://semaphoreci.com/docs/branches-and-builds-api.html#rebuild
|
59
|
+
[launch build]: https://semaphoreci.com/docs/branches-and-builds-api.html#launch_build
|
60
|
+
[stop]: https://semaphoreci.com/docs/branches-and-builds-api.html#stop
|
61
|
+
[deploy]: https://semaphoreci.com/docs/branches-and-builds-api.html#deploy
|
8
62
|
|
9
63
|
## Installation
|
10
64
|
|
11
|
-
|
65
|
+
Install the gem:
|
12
66
|
|
13
|
-
gem
|
67
|
+
gem install git-semaphore
|
14
68
|
|
15
|
-
And
|
69
|
+
And execute it as a `git` subcommand:
|
16
70
|
|
17
|
-
|
71
|
+
git semaphore <options>
|
18
72
|
|
19
|
-
|
73
|
+
To get an overview of the available options, use:
|
20
74
|
|
21
|
-
|
75
|
+
git-semaphore --help
|
22
76
|
|
23
|
-
##
|
77
|
+
## API authentication
|
24
78
|
|
25
|
-
Log into [semaphoreci.com][] and find your
|
79
|
+
Log into [semaphoreci.com][] and find **your authentication token** at the bottom of your [account settings][] page... this is also explained in [the Semaphore API documentation][authentication].
|
26
80
|
|
27
|
-
Next, choose one of the following mechanisms to make your API
|
81
|
+
Next, choose one of the following mechanisms to make your API authentication token available to `git semaphore`...
|
82
|
+
|
83
|
+
### via *local* git config _(in a git working dir)_
|
84
|
+
|
85
|
+
git config --local --replace-all semaphore.authtoken "Yds3w6o26FLfJTnVK2y9"
|
86
|
+
|
87
|
+
### via *global* git config
|
88
|
+
|
89
|
+
git config --global --replace-all semaphore.authtoken "Yds3w6o26FLfJTnVK2y9"
|
28
90
|
|
29
91
|
### via an environment variable
|
30
92
|
|
31
|
-
|
93
|
+
export SEMAPHORE_AUTH_TOKEN="Yds3w6o26FLfJTnVK2y9"
|
94
|
+
|
95
|
+
This is also the order in which tokens are searched for - and hence their precedence - meaning that if you have different Semaphore accounts for different projects _(e.g. work and personal projects)_ then you can configure your respective git repos with the authentication token of the corresponding Semaphore account.
|
96
|
+
|
97
|
+
## API result caching
|
98
|
+
|
99
|
+
For performance reasons _(especially for Semaphore API calls that are paginated)_, to enable offline use of the Semaphore API data, as well as to support interactive use of the data in e.g. `irb` or `pry` sessions, `git semaphore` transparently caches the results of all API calls in the `${HOME}/.git/semaphore/` directory.
|
100
|
+
|
101
|
+
This means that running `git semaphore` commands may return stale data, in cases where things have changed on `semaphoreci.com` since the last time `git semaphore` was run.
|
102
|
+
|
103
|
+
To delete the cache - and force a refresh of the Semaphore data on the next API call - use the `git semaphore --clean` command... this will empty out the entire `${HOME}/.git/semaphore` cache directory.
|
104
|
+
|
105
|
+
## Integration with `git`
|
106
|
+
|
107
|
+
When used inside a git repository, `git semaphore` uses [convention over configuration][coc] to figure out the relevant settings it needs in order to make valid Semaphore API requests:
|
108
|
+
|
109
|
+
| setting | inside git repo | pseudo-code | override |
|
110
|
+
|--------------|--------------------|---------------------------------|---------------------------------|
|
111
|
+
| project name | derived from pwd | `File.basename(Dir.pwd)` | `ENV['SEMAPHORE_PROJECT_NAME']` |
|
112
|
+
| branch name | current git branch | `git symbolic-ref --short HEAD` | `ENV['SEMAPHORE_BRANCH_NAME']` |
|
113
|
+
| commit SHA | current git head | `git rev-parse HEAD` | `ENV['SEMAPHORE_COMMIT_SHA']` |
|
114
|
+
|
115
|
+
However, each of these defaults can be overridden by setting the corresponding environment variable, as documented in the above table. The same `ENV`-based override mechanism can be leveraged to use `git semaphore` outside of a git repository.
|
116
|
+
|
117
|
+
The `git semaphore --settings` command can be used to print out the values for these various settings:
|
118
|
+
|
119
|
+
$ git semaphore --settings | jq '.'
|
120
|
+
{
|
121
|
+
"semaphore_auth_token": "Yds3w6o26FLfJTnVK2y9",
|
122
|
+
"semaphore_project_name": "git-semaphore",
|
123
|
+
"semaphore_branch_name": "master",
|
124
|
+
"semaphore_commit_sha": "4b59c3e41ca4592dfb01f77f2163154f3d3532fe"
|
125
|
+
}
|
126
|
+
$ _
|
127
|
+
|
128
|
+
## Available commands
|
32
129
|
|
33
|
-
|
130
|
+
> ⚠️ all of the below examples need to be run from within a git repository ⚠️
|
34
131
|
|
35
|
-
|
132
|
+
### list the Semaphore settings
|
36
133
|
|
37
|
-
|
134
|
+
git semaphore --settings
|
38
135
|
|
39
|
-
|
136
|
+
_(lists things like project name, branch name, commit SHA, etc.)_
|
40
137
|
|
41
|
-
|
138
|
+
### open the Semaphore page for the project's current branch
|
42
139
|
|
43
|
-
|
140
|
+
git semaphore --browse
|
44
141
|
|
45
|
-
|
142
|
+
_(the project and branch names are derived from the current git repository and the current git head)_
|
46
143
|
|
47
|
-
|
144
|
+
### delete the local Semapore API cache
|
48
145
|
|
49
|
-
|
146
|
+
git semaphore --clean
|
50
147
|
|
51
|
-
|
148
|
+
_(this ensures the Semaphore data is refreshed for the subsequent API calls)_
|
149
|
+
|
150
|
+
### list all Semaphore projects
|
151
|
+
|
152
|
+
git semaphore --projects
|
153
|
+
|
154
|
+
_(for the Semaphore user account corresponding to the authentication token)_
|
155
|
+
|
156
|
+
### list all of the project's branches
|
157
|
+
|
158
|
+
git semaphore --branches
|
52
159
|
|
53
160
|
_(the project name is derived from the current git directory)_
|
54
161
|
|
55
|
-
### status of
|
162
|
+
### build status of the project's current branch
|
163
|
+
|
164
|
+
git semaphore --status
|
165
|
+
|
166
|
+
_(the project and branch names are derived from the current git repository and the current git head)_
|
167
|
+
|
168
|
+
### build history of a project's branch
|
56
169
|
|
57
|
-
|
170
|
+
git semaphore --history
|
58
171
|
|
59
|
-
_(the project and branch
|
172
|
+
_(the project and branch names are derived from the current git repository and the current git head)_
|
60
173
|
|
61
|
-
|
174
|
+
## Formatting the raw `git semaphore` JSON output
|
62
175
|
|
63
|
-
After installing the
|
176
|
+
After installing [the indispensable jq utility][jq] (`brew install jq`), the raw JSON output generated by the various `git semaphore` commands can be formatted and queried as follows:
|
64
177
|
|
65
|
-
|
66
|
-
|
67
|
-
|
178
|
+
# pretty-print the git semaphore settings
|
179
|
+
git semaphore --settings | jq '.'
|
180
|
+
|
181
|
+
# list the full name of all Semaphore projects
|
182
|
+
git semaphore --projects | jq -r '.[] | .full_name'
|
183
|
+
|
184
|
+
# get the status of the last build for the current branch
|
185
|
+
git semaphore --status | jq -r '.result'
|
186
|
+
|
187
|
+
# list the build duration (in minutes) for all "passed" builds of the current branch
|
188
|
+
git semaphore --history | jq -r '.builds | .[] | select(.result == "passed") | (.build_number|tostring) + "\t" + (.duration.minutes|tostring)'
|
189
|
+
|
190
|
+
[semaphoreci.com]: https://semaphoreci.com/
|
191
|
+
[account settings]: https://semaphoreci.com/users/edit
|
192
|
+
[Semaphore API]: https://semaphoreci.com/docs/api.html
|
193
|
+
|
194
|
+
[jq]: https://stedolan.github.io/jq/
|
195
|
+
[coc]: https://en.wikipedia.org/wiki/Convention_over_configuration
|
68
196
|
|
69
197
|
## Development
|
70
198
|
|
71
|
-
|
72
|
-
|
73
|
-
|
199
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
200
|
+
|
201
|
+
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
74
202
|
|
75
203
|
## Contributing
|
76
204
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
205
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/pvdb/git-semaphore. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
206
|
+
|
207
|
+
## License
|
208
|
+
|
209
|
+
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
82
210
|
|
83
|
-
[semaphoreci.com]: https://semaphoreci.com/
|
84
|
-
[jazor]: https://github.com/mconigliaro/jazor
|
data/Rakefile
CHANGED
@@ -1,6 +1,13 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
|
+
require "rake/testtask"
|
2
3
|
|
3
|
-
task :default => :
|
4
|
+
task :default => :test
|
5
|
+
|
6
|
+
Rake::TestTask.new(:test) do |t|
|
7
|
+
t.libs << "test"
|
8
|
+
t.libs << "lib"
|
9
|
+
t.test_files = FileList['test/**/*_test.rb']
|
10
|
+
end
|
4
11
|
|
5
12
|
task :gemspec do
|
6
13
|
@gemspec ||= eval(File.read(Dir["*.gemspec"].first))
|
@@ -10,11 +17,3 @@ desc "Validate the gemspec"
|
|
10
17
|
task :validate => :gemspec do
|
11
18
|
@gemspec.validate
|
12
19
|
end
|
13
|
-
|
14
|
-
require 'cucumber'
|
15
|
-
require 'cucumber/rake/task'
|
16
|
-
|
17
|
-
Cucumber::Rake::Task.new(:features) do |t|
|
18
|
-
t.cucumber_opts = "features --format pretty --tags ~@wip"
|
19
|
-
end
|
20
|
-
task :cucumber => :features
|
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "git/semaphore"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
require "pry"
|
11
|
+
Pry.start
|
12
|
+
|
13
|
+
# require "irb"
|
14
|
+
# IRB.start
|
data/bin/setup
ADDED
data/exe/git-semaphore
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
$LOAD_PATH.unshift File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
|
4
|
+
|
5
|
+
require 'git/semaphore'
|
6
|
+
|
7
|
+
if __FILE__ == $0
|
8
|
+
|
9
|
+
require 'slop'
|
10
|
+
|
11
|
+
options = Slop.parse(help: true) do
|
12
|
+
|
13
|
+
on :version, 'Print the version' do
|
14
|
+
puts Git::Semaphore::COPYRIGHT
|
15
|
+
exit(0)
|
16
|
+
end
|
17
|
+
|
18
|
+
banner Git::Semaphore::BANNER
|
19
|
+
|
20
|
+
on :settings, 'Display the relevants settings'
|
21
|
+
on :browse, 'Open the project on https://semaphoreci.com/'
|
22
|
+
|
23
|
+
on :clean, 'Deletes the cached API query results'
|
24
|
+
|
25
|
+
on :projects, 'List all projects and their current status'
|
26
|
+
on :branches, 'List all branches for the current project'
|
27
|
+
on :status, 'List the build status for the current branch'
|
28
|
+
on :history, 'List the build history for the current branch'
|
29
|
+
on :rebuild, 'Rebuild last revision for the current branch'
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
app = Git::Semaphore::App.new(Git::Semaphore.auth_token, Git::Semaphore.git_repo, ENV)
|
34
|
+
|
35
|
+
if options.settings?
|
36
|
+
puts app.to_json
|
37
|
+
exit 0
|
38
|
+
end
|
39
|
+
|
40
|
+
if options.browse?
|
41
|
+
`open #{app.branch_url}`
|
42
|
+
exit 0
|
43
|
+
end
|
44
|
+
|
45
|
+
if options.clean?
|
46
|
+
Git::Semaphore.empty_cache_dir
|
47
|
+
exit 0
|
48
|
+
end
|
49
|
+
|
50
|
+
if options.projects?
|
51
|
+
puts app.projects.to_json
|
52
|
+
exit 0
|
53
|
+
end
|
54
|
+
|
55
|
+
if options.branches?
|
56
|
+
puts app.branches.to_json
|
57
|
+
exit 0
|
58
|
+
end
|
59
|
+
|
60
|
+
if options.status?
|
61
|
+
puts app.status.to_json
|
62
|
+
exit 0
|
63
|
+
end
|
64
|
+
|
65
|
+
if options.history?
|
66
|
+
puts app.history.to_json
|
67
|
+
exit 0
|
68
|
+
end
|
69
|
+
|
70
|
+
if options.rebuild?
|
71
|
+
puts app.rebuild
|
72
|
+
exit 0
|
73
|
+
end
|
74
|
+
|
75
|
+
fail "Coming soon!"
|
76
|
+
|
77
|
+
end
|
78
|
+
|
79
|
+
# That's all Folks!
|
data/git-semaphore.gemspec
CHANGED
@@ -1,35 +1,31 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
lib = File.expand_path('../lib', __FILE__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'git
|
4
|
+
require 'git/semaphore/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "git-semaphore"
|
8
8
|
spec.version = Git::Semaphore::VERSION
|
9
9
|
spec.authors = ["Peter Vandenberk"]
|
10
10
|
spec.email = ["pvandenberk@mac.com"]
|
11
|
-
|
12
|
-
spec.
|
11
|
+
|
12
|
+
spec.summary = %q{git integration with semaphoreci.com}
|
13
|
+
spec.description = %q{command-line integration with semaphoreci.com for git repositories}
|
13
14
|
spec.homepage = "https://github.com/pvdb/git-semaphore"
|
14
15
|
spec.license = "MIT"
|
15
16
|
|
16
|
-
spec.files = `git ls-files`.split(
|
17
|
-
spec.
|
18
|
-
spec.
|
17
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
18
|
+
spec.bindir = "exe"
|
19
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
19
20
|
spec.require_paths = ["lib"]
|
20
21
|
|
21
|
-
spec.add_dependency
|
22
|
-
spec.add_dependency
|
22
|
+
spec.add_dependency "slop", "~> 3.0"
|
23
|
+
spec.add_dependency "grit", "~> 2.0"
|
24
|
+
|
25
|
+
spec.add_development_dependency "bundler", "~> 1.12"
|
26
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
27
|
+
spec.add_development_dependency "minitest", "~> 5.0"
|
23
28
|
|
24
|
-
spec.add_development_dependency
|
25
|
-
spec.add_development_dependency
|
26
|
-
spec.add_development_dependency('bundler')
|
27
|
-
spec.add_development_dependency('cucumber')
|
28
|
-
spec.add_development_dependency('rspec')
|
29
|
-
spec.add_development_dependency('aruba')
|
30
|
-
spec.add_development_dependency('methadone')
|
31
|
-
spec.add_development_dependency('vcr')
|
32
|
-
spec.add_development_dependency('webmock')
|
33
|
-
spec.add_development_dependency('jazor')
|
34
|
-
spec.add_development_dependency('json_spec')
|
29
|
+
spec.add_development_dependency "pry"
|
30
|
+
spec.add_development_dependency "pry-rescue"
|
35
31
|
end
|