gsm-sources-manager 1.0.0.alpha3
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/.codeclimate.yml +17 -0
- data/.gitignore +52 -0
- data/.rubocop.yml +1156 -0
- data/.travis.yml +9 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +35 -0
- data/LICENSE +21 -0
- data/README.md +69 -0
- data/Rakefile +24 -0
- data/docs/.gitignore +1 -0
- data/docs/_config.yml +1 -0
- data/docs/_data/changelog.yml +3 -0
- data/docs/_data/index.yml +87 -0
- data/docs/_layouts/default.html +43 -0
- data/docs/css/style.css +177 -0
- data/docs/image/gsm.png +0 -0
- data/docs/index.html +97 -0
- data/exe/gsm +139 -0
- data/gsm.gemspec +29 -0
- data/lib/gsm.rb +6 -0
- data/lib/gsm/bundle.rb +14 -0
- data/lib/gsm/gem.rb +178 -0
- data/lib/gsm/util.rb +4 -0
- data/lib/gsm/version.rb +3 -0
- data/test/conf/good.yml +6 -0
- data/test/conf/multiple.yml +6 -0
- data/test/helper.rb +18 -0
- data/test/test_bundle.rb +17 -0
- data/test/test_gem.rb +198 -0
- data/test/test_version.rb +9 -0
- metadata +137 -0
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
gsm-sources-manager (1.0.0.alpha2)
|
5
|
+
mercenary (~> 0.3.6)
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: https://rubygems.org/
|
9
|
+
specs:
|
10
|
+
codeclimate-test-reporter (0.6.0)
|
11
|
+
simplecov (>= 0.7.1, < 1.0.0)
|
12
|
+
docile (1.1.5)
|
13
|
+
json (2.0.2)
|
14
|
+
mercenary (0.3.6)
|
15
|
+
minitest (5.9.1)
|
16
|
+
rake (11.3.0)
|
17
|
+
shoulda-context (1.2.1)
|
18
|
+
simplecov (0.12.0)
|
19
|
+
docile (~> 1.1.0)
|
20
|
+
json (>= 1.8, < 3)
|
21
|
+
simplecov-html (~> 0.10.0)
|
22
|
+
simplecov-html (0.10.0)
|
23
|
+
|
24
|
+
PLATFORMS
|
25
|
+
ruby
|
26
|
+
|
27
|
+
DEPENDENCIES
|
28
|
+
codeclimate-test-reporter
|
29
|
+
gsm-sources-manager!
|
30
|
+
minitest
|
31
|
+
rake
|
32
|
+
shoulda-context
|
33
|
+
|
34
|
+
BUNDLED WITH
|
35
|
+
1.13.2
|
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2016 David Zhang
|
4
|
+
|
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:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
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 THE
|
21
|
+
SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
# GSM Sources Manager for Ruby Gems
|
2
|
+
|
3
|
+

|
4
|
+
[](https://travis-ci.org/crispgm/gsm)
|
5
|
+
[](https://codeclimate.com/github/crispgm/gsm)
|
6
|
+
[](https://codeclimate.com/github/crispgm/gsm/coverage)
|
7
|
+
[](https://gitter.im/crispgm/gsm?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
8
|
+
[](https://github.com/defunctzombie/badginator)
|
9
|
+
|
10
|
+
GSM is a simple sources manager for RubyGems. GSM means GSM Sources Manager as a recursive acronym or simply Gem Sources Manager.
|
11
|
+
|
12
|
+
In Ruby development, we always need alternative RubyGems source in special networks. e.g. In China Mainland, you know. GSM helps get your gem sources managed.
|
13
|
+
|
14
|
+
## Installation
|
15
|
+
|
16
|
+
### Install with RubyGems
|
17
|
+
|
18
|
+
```
|
19
|
+
$ gem install gsm-sources-manager
|
20
|
+
$ gsm --version
|
21
|
+
```
|
22
|
+
|
23
|
+
### Or, you may install manually
|
24
|
+
|
25
|
+
```
|
26
|
+
$ git clone https://github.com/crispgm/gsm.git
|
27
|
+
$ bundle install
|
28
|
+
$ bundle exec exe/gsm --version
|
29
|
+
```
|
30
|
+
|
31
|
+
## Usage
|
32
|
+
|
33
|
+
```
|
34
|
+
Usage:
|
35
|
+
|
36
|
+
gsm <subcommand> [options]
|
37
|
+
|
38
|
+
Options:
|
39
|
+
-h, --help Show this message
|
40
|
+
-v, --version Print the name and version
|
41
|
+
-t, --trace Show the full backtrace when an error occurs
|
42
|
+
|
43
|
+
Subcommands:
|
44
|
+
list List all sources
|
45
|
+
use Use source
|
46
|
+
add Add source
|
47
|
+
del Delete source
|
48
|
+
reset Reset all sources
|
49
|
+
mirror Mirror source for Bundler
|
50
|
+
help Show usage
|
51
|
+
```
|
52
|
+
|
53
|
+
See <https://crispgm.github.io/gsm/#guide> for details.
|
54
|
+
|
55
|
+
## API Reference
|
56
|
+
|
57
|
+
TODO: API Reference of `libgsm`.
|
58
|
+
|
59
|
+
## Sources
|
60
|
+
|
61
|
+
* [RubyGems](https://rubygems.org/)
|
62
|
+
* [RubyChina](https://gems.ruby-china.org/)
|
63
|
+
* [Taobao](https://ruby.taobao.org/)
|
64
|
+
|
65
|
+
## Contributing
|
66
|
+
|
67
|
+
* [GSM Sources Manager](https://github.com/crispgm/gsm) is licensed under [MIT License](/LICENSE).
|
68
|
+
* If there is a bug, you may [file an issue](https://github.com/crispgm/gsm/issues/new) or pull request directly.
|
69
|
+
* Pull requests for contribution is welcomed.
|
data/Rakefile
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
task default: %w[test]
|
4
|
+
|
5
|
+
require 'rake/testtask'
|
6
|
+
|
7
|
+
Rake::TestTask.new do |t|
|
8
|
+
t.libs << 'test'
|
9
|
+
t.test_files = FileList['test/test_*.rb']
|
10
|
+
t.verbose = true
|
11
|
+
end
|
12
|
+
|
13
|
+
task :count do
|
14
|
+
files = `git ls-files -z`.split("\x0")
|
15
|
+
shell_cmd = "wc -l "
|
16
|
+
files.grep(%r{^(exe|lib|test)/}).grep(%r{exe|.rb}).each do |f|
|
17
|
+
shell_cmd << f << " \\\n"
|
18
|
+
end
|
19
|
+
begin
|
20
|
+
sh shell_cmd[0..-3]
|
21
|
+
rescue
|
22
|
+
puts "Count Error."
|
23
|
+
end
|
24
|
+
end
|
data/docs/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
/_site/
|
data/docs/_config.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
baseurl: "/gsm"
|
@@ -0,0 +1,87 @@
|
|
1
|
+
install: |
|
2
|
+
## Install with RubyGems
|
3
|
+
|
4
|
+
```shell
|
5
|
+
$ gem install gsm-sources-manager
|
6
|
+
$ gsm --version
|
7
|
+
```
|
8
|
+
|
9
|
+
## Or, you may install manually
|
10
|
+
|
11
|
+
```
|
12
|
+
$ git clone https://github.com/crispgm/gsm.git
|
13
|
+
$ bundle install
|
14
|
+
$ bundle exec exe/gsm --version
|
15
|
+
```
|
16
|
+
guide: |
|
17
|
+
## Getting Started
|
18
|
+
|
19
|
+
Once you have installed and run `gsm` with commands other than `--help` or `--version`, `gsm` will load sources from current `gem sources -l` you set.
|
20
|
+
|
21
|
+
## Commands
|
22
|
+
|
23
|
+
### List
|
24
|
+
|
25
|
+
List sources within `gsm`.
|
26
|
+
|
27
|
+
```
|
28
|
+
$ gsm list
|
29
|
+
```
|
30
|
+
|
31
|
+
### Use
|
32
|
+
|
33
|
+
Use a source with `source_name`.
|
34
|
+
|
35
|
+
```
|
36
|
+
$ gsm use Amethyst
|
37
|
+
```
|
38
|
+
|
39
|
+
### Add
|
40
|
+
|
41
|
+
Use a source with `source_name` and `source_url`.
|
42
|
+
|
43
|
+
`--use`: Use the input source as well. Equivalent to `gsm add` and then `gsm use`.
|
44
|
+
|
45
|
+
```
|
46
|
+
$ gsm add Amethyst https://rubygems.org/
|
47
|
+
```
|
48
|
+
|
49
|
+
### Del
|
50
|
+
|
51
|
+
Delete a source with `source_name`.
|
52
|
+
|
53
|
+
```
|
54
|
+
$ gsm del Amethyst
|
55
|
+
```
|
56
|
+
|
57
|
+
### Reset
|
58
|
+
|
59
|
+
Reset all sources.
|
60
|
+
|
61
|
+
```
|
62
|
+
$ gsm reset
|
63
|
+
```
|
64
|
+
|
65
|
+
### Mirror
|
66
|
+
|
67
|
+
Mirror the source with `bundle`.
|
68
|
+
|
69
|
+
`--reset`: Reset mirror of bundle configuration.
|
70
|
+
|
71
|
+
```
|
72
|
+
$ gsm mirror Amethyst
|
73
|
+
```
|
74
|
+
|
75
|
+
### Help
|
76
|
+
|
77
|
+
Show help info.
|
78
|
+
|
79
|
+
```
|
80
|
+
$ gsm help
|
81
|
+
```
|
82
|
+
contrib: |
|
83
|
+
[GSM Sources Manager](https://github.com/crispgm/gsm) is licensed under MIT License.
|
84
|
+
|
85
|
+
If there is a bug, you may [file an issue](https://github.com/crispgm/gsm/issues/new) or pull request directly.
|
86
|
+
|
87
|
+
Pull requests for contribution is welcomed.
|
@@ -0,0 +1,43 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="UTF-8">
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
6
|
+
<title>Home | GSM Sources Manager</title>
|
7
|
+
<link rel="stylesheet" href="/gsm/css/style.css">
|
8
|
+
<script async defer src="https://buttons.github.io/buttons.js"></script>
|
9
|
+
<script src="https://crispgm.com/script/highlight.pack.js"></script>
|
10
|
+
<link rel="stylesheet" href="https://crispgm.com/css/zenburn.css">
|
11
|
+
<script>hljs.initHighlightingOnLoad();</script>
|
12
|
+
</head>
|
13
|
+
<body>
|
14
|
+
<div id="container">
|
15
|
+
<header id="topbar">
|
16
|
+
<div class="menu">
|
17
|
+
<div class="menu-item">
|
18
|
+
<a href="/gsm/">Home</a>
|
19
|
+
</div>
|
20
|
+
<div class="menu-item">
|
21
|
+
<a href="#install">Install</a>
|
22
|
+
</div>
|
23
|
+
<div class="menu-item">
|
24
|
+
<a href="#guide">Guide</a>
|
25
|
+
</div>
|
26
|
+
<div class="menu-item">
|
27
|
+
<a href="#changelog">Changelog</a>
|
28
|
+
</div>
|
29
|
+
<div class="menu-item">
|
30
|
+
<a href="#contributing">Contributing</a>
|
31
|
+
</div>
|
32
|
+
</div>
|
33
|
+
<div class="title">
|
34
|
+
GSM Sources Manager
|
35
|
+
</div>
|
36
|
+
</header>
|
37
|
+
{{ content }}
|
38
|
+
<footer>
|
39
|
+
Copyright © 2016, <a href="https://crispgm.com/">David Zhang</a>.
|
40
|
+
</footer>
|
41
|
+
</div>
|
42
|
+
</body>
|
43
|
+
</html>
|
data/docs/css/style.css
ADDED
@@ -0,0 +1,177 @@
|
|
1
|
+
* {
|
2
|
+
box-sizing: border-box;
|
3
|
+
}
|
4
|
+
html {
|
5
|
+
width: 100%;
|
6
|
+
font-size: 16px;
|
7
|
+
}
|
8
|
+
@media (max-width: 48rem) {
|
9
|
+
html {
|
10
|
+
font-size: 12px;
|
11
|
+
}
|
12
|
+
}
|
13
|
+
body {
|
14
|
+
margin: 0;
|
15
|
+
font-family: "Helvetica Neue", Helvetica, Arial, "Hiragino Sans GB", "Microsoft Yahei", sans-serif;
|
16
|
+
font-size: 1rem;
|
17
|
+
-webkit-font-smoothing: antialiased;
|
18
|
+
color: #333;
|
19
|
+
background-color: #fbfbfb;
|
20
|
+
word-wrap: break-word;
|
21
|
+
text-align: center;
|
22
|
+
height: 100%;
|
23
|
+
line-height: 1.5rem;
|
24
|
+
}
|
25
|
+
img {
|
26
|
+
border: 0;
|
27
|
+
}
|
28
|
+
a {
|
29
|
+
text-decoration: none;
|
30
|
+
color: #06c;
|
31
|
+
}
|
32
|
+
a:hover {
|
33
|
+
text-decoration: underline;
|
34
|
+
}
|
35
|
+
pre.highlight {
|
36
|
+
border: .05rem solid #aaaaaa;
|
37
|
+
border-radius: .2rem;
|
38
|
+
font-family: Menlo, Monaco, "Source Code Pro", Consolas, Courier;
|
39
|
+
font-size: 1rem;
|
40
|
+
}
|
41
|
+
code.hljs {
|
42
|
+
padding: .8rem;
|
43
|
+
}
|
44
|
+
code.highlighter-rouge {
|
45
|
+
border: .05rem solid #aaaaaa;
|
46
|
+
border-radius: .2rem;
|
47
|
+
padding-left: .2rem;
|
48
|
+
padding-right: .2rem;
|
49
|
+
}
|
50
|
+
#container {
|
51
|
+
margin: 0 auto;
|
52
|
+
max-width: 48rem;
|
53
|
+
text-align: left;
|
54
|
+
}
|
55
|
+
@media (max-width: 48rem) {
|
56
|
+
#container {
|
57
|
+
padding-left: .5rem;
|
58
|
+
padding-right: .5rem;
|
59
|
+
}
|
60
|
+
}
|
61
|
+
#topbar {
|
62
|
+
height: 3rem;
|
63
|
+
padding-top: 1rem;
|
64
|
+
margin-bottom: 5rem;
|
65
|
+
}
|
66
|
+
.title {
|
67
|
+
font-weight: bold;
|
68
|
+
}
|
69
|
+
.menu {
|
70
|
+
float: right;
|
71
|
+
display: flex;
|
72
|
+
}
|
73
|
+
.menu-item {
|
74
|
+
padding-left: 1rem;
|
75
|
+
}
|
76
|
+
@media (max-width: 48rem) {
|
77
|
+
.title {
|
78
|
+
margin-top: 2rem;
|
79
|
+
text-align: center;
|
80
|
+
}
|
81
|
+
.menu {
|
82
|
+
float: none;
|
83
|
+
display: flex;
|
84
|
+
justify-content: space-around;
|
85
|
+
}
|
86
|
+
.menu-item {
|
87
|
+
padding: 0;
|
88
|
+
}
|
89
|
+
}
|
90
|
+
#intro {
|
91
|
+
text-align: center;
|
92
|
+
}
|
93
|
+
#intro-logo {
|
94
|
+
text-align: center;
|
95
|
+
}
|
96
|
+
#intro-logo img {
|
97
|
+
width: 10rem;
|
98
|
+
height: 10rem;
|
99
|
+
}
|
100
|
+
#intro-text {
|
101
|
+
margin-top: 6rem;
|
102
|
+
font-size: 2rem;
|
103
|
+
}
|
104
|
+
#intro-desc {
|
105
|
+
text-align: left;
|
106
|
+
margin-top: 2rem;
|
107
|
+
}
|
108
|
+
#intro-button {
|
109
|
+
margin-top: 5rem;
|
110
|
+
margin-left: auto;
|
111
|
+
margin-right: auto;
|
112
|
+
display: flex;
|
113
|
+
justify-content: center;
|
114
|
+
}
|
115
|
+
#intro-version {
|
116
|
+
margin-top: 1rem;
|
117
|
+
}
|
118
|
+
@media (max-width: 48rem) {
|
119
|
+
#intro-text {
|
120
|
+
margin-top: 3rem;
|
121
|
+
font-size: 1.1rem;
|
122
|
+
}
|
123
|
+
#intro-button {
|
124
|
+
margin-top: 2rem;
|
125
|
+
}
|
126
|
+
}
|
127
|
+
.install-item {
|
128
|
+
padding: 0rem 1rem 0rem 1rem;
|
129
|
+
font-size: 1.5rem;
|
130
|
+
line-height: 2.5rem;
|
131
|
+
color: #000;
|
132
|
+
background-color: #fff;
|
133
|
+
border: .15rem solid #000;
|
134
|
+
border-radius: .5rem;
|
135
|
+
}
|
136
|
+
.install-item:hover {
|
137
|
+
border: .15rem solid #06c;
|
138
|
+
}
|
139
|
+
.install-gsm {
|
140
|
+
margin-right: .5rem;
|
141
|
+
}
|
142
|
+
.install-user-guide {
|
143
|
+
margin-left: .5rem;
|
144
|
+
}
|
145
|
+
.install-item a {
|
146
|
+
color: #000;
|
147
|
+
}
|
148
|
+
.install-item:hover a {
|
149
|
+
color: #06c;
|
150
|
+
text-decoration: none;
|
151
|
+
}
|
152
|
+
.back-top {
|
153
|
+
text-align: center;
|
154
|
+
}
|
155
|
+
#social {
|
156
|
+
text-align: center;
|
157
|
+
margin-top: 1rem;
|
158
|
+
padding-bottom: 1rem;
|
159
|
+
border-bottom: solid #aaa .1rem;
|
160
|
+
}
|
161
|
+
.content {
|
162
|
+
padding-top: 3rem;
|
163
|
+
font-size: 1rem;
|
164
|
+
border-bottom: solid #aaa .1rem;
|
165
|
+
padding-bottom: 1.6rem;
|
166
|
+
}
|
167
|
+
.content-title {
|
168
|
+
text-align: center;
|
169
|
+
font-size: 2rem;
|
170
|
+
padding-bottom: 1rem;
|
171
|
+
}
|
172
|
+
footer {
|
173
|
+
/*text-align: center;*/
|
174
|
+
font-size: 1.2rem;
|
175
|
+
padding-top: 1rem;
|
176
|
+
padding-bottom: 1rem;
|
177
|
+
}
|