gsm-sources-manager 1.0.0.beta1 → 1.0.0.beta2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c2adaa925c51a510eaff87ef243916fada3baac1
4
- data.tar.gz: 6703dd08a4a43fbf1a150339a171edcd3dd13de5
3
+ metadata.gz: 7221123739008d756b8a30ab6be143be519c1c9b
4
+ data.tar.gz: 04d83d084b05d18e12c5096c665bab0feeedda38
5
5
  SHA512:
6
- metadata.gz: 76417ea20245f97400d0edd9cc68bf03119e35f64aa70df9cbd342754ea996caec41dc311e0ea146e9f2639a6c44405db9c9fc7749db12babab5152e974cc7ee
7
- data.tar.gz: c9d29df8cebbb6db0994d295893ad48a03600fb1463372e3354a4ee26b375a7e42b6c02c0e66e92c923ae51b456dd4ce4326e98795929461f8f42adc2a97407d
6
+ metadata.gz: f63911e110bd4f054f77826bf87af717593630e681d08abb5f39b599f6eb1767c1c72f1400405667c93781ae8d44c77c4f974dc99ad911a2a0002fb3bc0534c8
7
+ data.tar.gz: 8cf238fae6bbaeec4133d767abe06e57eab8486f3173cc8bcb446ef79a5fcdc4bd568fa69eee45a0706176f223338bc05c9cf6f6a26bff3c3f6379d4b353888a
@@ -6,7 +6,7 @@ rvm:
6
6
  env:
7
7
  - GSM_TEST_MODE: CI
8
8
  - CODECLIMATE_REPO_TOKEN: a3b92a7e935316eab6293228fa587784c95b9dd10ab61adb4fdb9ecb6ca330d8
9
- after_sucess:
9
+ after_success:
10
10
  - bundle exec codeclimate-test-reporter
11
11
  notifications:
12
12
  email: false
@@ -0,0 +1 @@
1
+ theme: jekyll-theme-minimal
data/exe/gsm CHANGED
@@ -3,142 +3,175 @@
3
3
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), *%w(.. lib)))
4
4
 
5
5
  require "gsm"
6
- require "mercenary"
7
-
8
- Mercenary.program(:gsm) do |p|
9
- p.version Gsm::VERSION
10
- p.description "GSM Sources Manager"
11
- p.syntax "gsm <subcommand> [options]"
12
-
13
- conf_path = ""
14
- user_path = Dir.home()
15
- Dir.chdir(user_path) do
16
- if !Dir.exist?(".gsm")
17
- Dir.mkdir(".gsm")
6
+ require "commander"
7
+
8
+ class Application
9
+ include Commander::Methods
10
+
11
+ def run
12
+ program :name, "gsm"
13
+ program :version, Gsm::VERSION
14
+ program :description, "GSM Sources Manager"
15
+
16
+ conf_path = ""
17
+ user_path = Dir.home()
18
+ Dir.chdir(user_path) do
19
+ if !Dir.exist?(".gsm")
20
+ Dir.mkdir(".gsm")
21
+ end
18
22
  end
19
- end
20
23
 
21
- conf_path = "#{user_path}/.gsm/sources.yml"
24
+ conf_path = "#{user_path}/.gsm/sources.yml"
22
25
 
23
- gem = Gsm::Gem.new(conf_path)
26
+ gem = Gsm::Gem.new(conf_path)
24
27
 
25
- p.command(:list) do |c|
26
- c.syntax "list"
27
- c.description "List all sources"
28
+ command :list do |c|
29
+ c.syntax = "list"
30
+ c.description = "List all sources"
28
31
 
29
- c.action do |_, _|
30
- gem.sources.each do |name, url|
31
- use_mark = ""
32
- if gem.get == name
33
- use_mark = "(*)"
32
+ c.action do |_, _|
33
+ gem.sources.each do |name, url|
34
+ use_mark = ""
35
+ if gem.get == name
36
+ use_mark = "(*)"
37
+ end
38
+ puts "#{name}: #{url} #{use_mark}"
34
39
  end
35
- puts "#{name}: #{url} #{use_mark}"
36
40
  end
37
41
  end
38
- end
39
42
 
40
- p.command(:use) do |c|
41
- c.syntax "use [source]"
42
- c.description "Use source"
43
-
44
- c.action do |args, _|
45
- name = args[0]
46
- use = gem.use(name)
47
- if use
48
- puts "GSM: Source `#{use}` has been applied."
49
- else
50
- Gsm::Util.error("Illegal source `#{name}`.")
43
+ command :use do |c|
44
+ c.syntax = "use [source]"
45
+ c.description = "Use source"
46
+
47
+ c.action do |args, _|
48
+ name = args[0]
49
+ use = gem.use(name)
50
+ if use
51
+ puts "GSM: Source `#{use}` has been applied."
52
+ else
53
+ Gsm::Util.error("Illegal source `#{name}`.")
54
+ end
51
55
  end
52
56
  end
53
- end
54
57
 
55
- p.command(:add) do |c|
56
- c.syntax "add [name] [url]"
57
- c.description "Add source"
58
+ command :add do |c|
59
+ c.syntax = "add [name] [url]"
60
+ c.description = "Add source"
58
61
 
59
- c.option "use", "--use", "Add and use source"
62
+ c.option "use", "--use", "Add and use source"
60
63
 
61
- c.action do |args, opts|
62
- name = args[0]
63
- url = args[1]
64
- is_use = opts["use"]
64
+ c.action do |args, opts|
65
+ name = args[0]
66
+ url = args[1]
67
+ is_use = opts["use"]
65
68
 
66
- if args.size < 2
67
- Gsm::Util.error("Illegal name/url.")
68
- return
69
- end
69
+ if args.size < 2
70
+ Gsm::Util.error("Illegal name/url.")
71
+ return
72
+ end
70
73
 
71
- if gem.add(name, url)
72
- if is_use
73
- if !gem.use(name)
74
- Gsm::Util.error("Illegal source `#{name}`.")
74
+ if gem.add(name, url)
75
+ if is_use
76
+ if !gem.use(name)
77
+ Gsm::Util.error("Illegal source `#{name}`.")
78
+ end
75
79
  end
80
+
81
+ puts "Gem #{name}: #{url} added."
82
+ else
83
+ Gsm::Util.error("Illegal name/url.")
76
84
  end
77
- else
78
- Gsm::Util.error("Illegal name/url.")
79
85
  end
80
86
  end
81
- end
82
87
 
83
- p.command(:del) do |c|
84
- c.syntax "del [source]"
85
- c.description "Delete source"
86
-
87
- c.action do |args, _|
88
- name = args[0]
89
- ret = gem.del(name)
90
- if ret == false
91
- Gsm::Util.error("Source is in use. Please switch to other source in advance.")
92
- return
93
- elsif ret == nil
94
- Gsm::Util.error("No source name with `#{name}`.")
95
- return
88
+ command :del do |c|
89
+ c.syntax = "del [source]"
90
+ c.description = "Delete source"
91
+
92
+ c.action do |args, _|
93
+ name = args[0]
94
+ ret = gem.del(name)
95
+ if ret == false
96
+ Gsm::Util.error("Source is in use. Please switch to other source in advance.")
97
+ return
98
+ elsif ret == nil
99
+ Gsm::Util.error("No source name with `#{name}`.")
100
+ return
101
+ end
96
102
  end
97
103
  end
98
- end
99
104
 
100
- p.command(:reset) do |c|
101
- c.syntax "reset"
102
- c.description "Reset all sources"
105
+ command :reset do |c|
106
+ c.syntax = "reset"
107
+ c.description = "Reset all sources"
103
108
 
104
- c.action do |_, _|
105
- gem.reset
109
+ c.action do |_, _|
110
+ gem.reset
111
+ puts "All gems are reset."
112
+ end
106
113
  end
107
- end
108
-
109
- p.command(:mirror) do |c|
110
- c.syntax "mirror [source]"
111
- c.description "Mirror source for Bundler"
112
114
 
113
- c.option "reset", "--reset", "Reset bundler mirror"
115
+ command :mirror do |c|
116
+ c.syntax = "mirror [source]"
117
+ c.description = "Mirror source for Bundler"
114
118
 
115
- c.action do |args, opts|
116
- if opts["reset"]
117
- Gsm::Bundle.reset
118
- return
119
- end
119
+ c.option "reset", "--reset", "Reset bundler mirror"
120
120
 
121
- if args.size == 0
122
- name = gem.get
123
- if name.empty?
124
- Gsm::Util.error("no default source for mirror.")
121
+ c.action do |args, opts|
122
+ if opts["reset"]
123
+ Gsm::Bundle.reset
125
124
  return
126
125
  end
127
- else
128
- name = args[0]
126
+
127
+ if args.size == 0
128
+ name = gem.get
129
+ if name.empty?
130
+ Gsm::Util.error("no default source for mirror.")
131
+ return
132
+ else
133
+ puts "No specified source: use default `#{name}`."
134
+ end
135
+ else
136
+ name = args[0]
137
+ end
138
+ if Gsm::Bundle.mirror(gem.sources[name]).empty?
139
+ puts "`#{name}` has been set mirror for bundler."
140
+ puts
141
+ puts "Use `bundle config` to check."
142
+ end
129
143
  end
130
- Gsm::Bundle.mirror(gem.sources[name])
131
144
  end
132
- end
133
145
 
134
- p.command(:help) do |c|
135
- c.syntax "help"
136
- c.description "Show usage"
137
-
138
- c.action do |_, _|
139
- puts p
146
+ command :help do |c|
147
+ c.syntax = "help"
148
+ c.description = "Show usage"
149
+
150
+ c.action do |_, _|
151
+ puts "gsm sources manager"
152
+ puts
153
+ puts "gsm <subcommand> [options]"
154
+ puts
155
+ puts "Options:"
156
+ puts "\t--version"
157
+ puts "\t--help"
158
+ puts
159
+ puts "Subcommands:"
160
+ puts "\tlist"
161
+ puts "\tuse"
162
+ puts "\tadd"
163
+ puts "\tlist"
164
+ puts "\tdel"
165
+ puts "\treset"
166
+ puts "\tmirror"
167
+ end
140
168
  end
169
+
170
+ alias_command :rm, :del
171
+ alias_command :remove, :del
172
+
173
+ run!
141
174
  end
175
+ end
142
176
 
143
- p.default_command(:help)
144
- end
177
+ Application.new.run if $0 == __FILE__
@@ -25,6 +25,6 @@ Gem::Specification.new do |spec|
25
25
  spec.add_development_dependency "shoulda-context"
26
26
  spec.add_development_dependency "codeclimate-test-reporter", "~> 1.0.0"
27
27
 
28
- spec.add_dependency "mercenary", "~> 0.3.6"
28
+ spec.add_dependency "commander"
29
29
  spec.add_dependency "colorize"
30
30
  end
@@ -1,3 +1,3 @@
1
1
  module Gsm
2
- VERSION = "1.0.0.beta1".freeze
2
+ VERSION = "1.0.0.beta2".freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gsm-sources-manager
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.beta1
4
+ version: 1.0.0.beta2
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Zhang
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-06-10 00:00:00.000000000 Z
11
+ date: 2017-07-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -53,19 +53,19 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: 1.0.0
55
55
  - !ruby/object:Gem::Dependency
56
- name: mercenary
56
+ name: commander
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: 0.3.6
61
+ version: '0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: 0.3.6
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: colorize
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -96,15 +96,8 @@ files:
96
96
  - LICENSE
97
97
  - README.md
98
98
  - Rakefile
99
+ - _config.yml
99
100
  - appveyor.yml
100
- - docs/.gitignore
101
- - docs/_config.yml
102
- - docs/_data/changelog.yml
103
- - docs/_data/index.yml
104
- - docs/_layouts/default.html
105
- - docs/css/style.css
106
- - docs/image/gsm.png
107
- - docs/index.html
108
101
  - exe/gsm
109
102
  - gsm.gemspec
110
103
  - lib/gsm.rb
@@ -138,7 +131,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
138
131
  version: 1.3.1
139
132
  requirements: []
140
133
  rubyforge_project:
141
- rubygems_version: 2.6.11
134
+ rubygems_version: 2.5.2
142
135
  signing_key:
143
136
  specification_version: 4
144
137
  summary: GSM Sources Manager
@@ -1 +0,0 @@
1
- /_site/
@@ -1 +0,0 @@
1
- baseurl: "/gsm"
@@ -1,26 +0,0 @@
1
- - version: "1.0.0.beta1"
2
- changes:
3
- - text: "Polish docs"
4
- issue: 12
5
- - text: "Use colored error message"
6
- issue: 13
7
- - text: "Bugfix: illegal name/url cause exception"
8
- issue: 13
9
- - version: "1.0.0.alpha5"
10
- changes:
11
- - text: "Bugfix: unintended path to `sources.yml`"
12
- issue: 8
13
- - version: "1.0.0.alpha4"
14
- changes:
15
- - text: "Ruby 2.2.5 support"
16
- - version: "1.0.0.alpha3"
17
- changes:
18
- - text: "Release on RubyGem"
19
- - text: "Bugfix: write conf to user directory"
20
- issue: 5
21
- - version: "1.0.0.alpha2"
22
- changes:
23
- - text: "Limit number of gem sources"
24
- - version: "1.0.0.alpha"
25
- changes:
26
- - text: "Initial Alpha Version"
@@ -1,99 +0,0 @@
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 bootstrapped `gsm` with commands other than `--help` or `--version`, `gsm` will load sources from local `gem sources -l`.
20
-
21
- HINT: The sources will be named after gemstones, e.g. _Amethyst_.
22
-
23
- ## Commands
24
-
25
- ### List
26
-
27
- List sources within `gsm`.
28
-
29
- ```
30
- $ gsm list
31
-
32
- Amethyst: https://gems.ruby-china.org/
33
- ```
34
-
35
- ### Use
36
-
37
- Use a source with `source_name`.
38
-
39
- ```
40
- $ gsm use Amethyst
41
-
42
- GSM: Source `Amethyst` has been applied.
43
- ```
44
-
45
- ```
46
- $ gsm list
47
-
48
- Amethyst: https://rubygems.org/ (*)
49
- ```
50
-
51
- ### Add
52
-
53
- Use a source with `source_name` and `source_url`.
54
-
55
- `--use`: Use the input source as well. Equivalent to `gsm add` and then `gsm use`.
56
-
57
- ```
58
- $ gsm add Amethyst https://rubygems.org/
59
- ```
60
-
61
- ### Del
62
-
63
- Delete a source with `source_name`.
64
-
65
- ```
66
- $ gsm del Amethyst
67
- ```
68
-
69
- ### Reset
70
-
71
- Reset all sources.
72
-
73
- ```
74
- $ gsm reset
75
- ```
76
-
77
- ### Mirror
78
-
79
- Mirror the source with `bundle`.
80
-
81
- `--reset`: Reset mirror of bundle configuration.
82
-
83
- ```
84
- $ gsm mirror Amethyst
85
- ```
86
-
87
- ### Help
88
-
89
- Show help info.
90
-
91
- ```
92
- $ gsm help
93
- ```
94
- contrib: |
95
- [GSM Sources Manager](https://github.com/crispgm/gsm) is licensed under MIT License.
96
-
97
- If there is a bug, you may [file an issue](https://github.com/crispgm/gsm/issues/new) or pull request directly.
98
-
99
- Pull requests for contribution is welcomed.
@@ -1,44 +0,0 @@
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
- <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css">
12
- <script>hljs.initHighlightingOnLoad();</script>
13
- </head>
14
- <body>
15
- <div id="container">
16
- <header id="topbar">
17
- <div class="menu">
18
- <div class="menu-item">
19
- <a href="/gsm/">Home</a>
20
- </div>
21
- <div class="menu-item">
22
- <a href="#install">Install</a>
23
- </div>
24
- <div class="menu-item">
25
- <a href="#guide">Guide</a>
26
- </div>
27
- <div class="menu-item">
28
- <a href="#changelog">Changelog</a>
29
- </div>
30
- <div class="menu-item">
31
- <a href="#contributing">Contributing</a>
32
- </div>
33
- </div>
34
- <div class="title">
35
- GSM Sources Manager
36
- </div>
37
- </header>
38
- {{ content }}
39
- <footer>
40
- Copyright &copy; <a href="https://crispgm.com/">David Zhang</a>, 2017.
41
- </footer>
42
- </div>
43
- </body>
44
- </html>
@@ -1,190 +0,0 @@
1
- * {
2
- box-sizing: border-box;
3
- }
4
- html {
5
- width: 100%;
6
- font-size: 16px;
7
- }
8
- @media (max-width: 42rem) {
9
- html {
10
- font-size: 12px;
11
- }
12
- }
13
- body {
14
- margin: 0;
15
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", 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: .9rem;
40
- padding: .4rem .8rem .4rem .8rem;
41
- color: #aaa;
42
- background-color: #222;
43
- }
44
- code.hljs {
45
- padding: .8rem;
46
- }
47
- code.highlighter-rouge {
48
- background-color: #ddd;
49
- border-radius: .2rem;
50
- padding: .1rem .3rem .1rem .3rem;
51
- font-size: .9rem;
52
- }
53
- #container {
54
- margin: 0 auto;
55
- max-width: 42rem;
56
- text-align: left;
57
- }
58
- @media (max-width: 42rem) {
59
- #container {
60
- padding-left: .5rem;
61
- padding-right: .5rem;
62
- }
63
- }
64
- #topbar {
65
- height: 3rem;
66
- padding-top: 1rem;
67
- margin-bottom: 6rem;
68
- }
69
- .title {
70
- font-weight: bold;
71
- }
72
- .menu {
73
- float: right;
74
- display: flex;
75
- }
76
- .menu-item {
77
- padding-left: 1rem;
78
- }
79
- @media (max-width: 42rem) {
80
- .title {
81
- margin-top: 2rem;
82
- text-align: center;
83
- }
84
- .menu {
85
- float: none;
86
- display: flex;
87
- justify-content: space-around;
88
- }
89
- .menu-item {
90
- padding: 0;
91
- }
92
- }
93
- #intro {
94
- text-align: center;
95
- }
96
- #intro-logo {
97
- text-align: center;
98
- }
99
- #intro-logo img {
100
- width: 10rem;
101
- height: 10rem;
102
- }
103
- #intro-text {
104
- margin-top: 6rem;
105
- font-size: 1.8rem;
106
- line-height: 1.4;
107
- }
108
- #intro-desc {
109
- text-align: left;
110
- margin-top: 2rem;
111
- }
112
- #intro-button {
113
- margin-top: 5rem;
114
- margin-left: auto;
115
- margin-right: auto;
116
- display: flex;
117
- justify-content: center;
118
- }
119
- #intro-version {
120
- margin-top: 1rem;
121
- }
122
- @media (max-width: 42rem) {
123
- #intro-text {
124
- margin-top: 3rem;
125
- font-size: 1.1rem;
126
- }
127
- #intro-button {
128
- margin-top: 2rem;
129
- }
130
- }
131
- .install-item {
132
- padding: 0rem 1rem 0rem 1rem;
133
- font-size: 1.5rem;
134
- line-height: 2.5rem;
135
- color: #000;
136
- background-color: #fff;
137
- border: 1px solid #000;
138
- border-radius: .5rem;
139
- }
140
- .install-item:hover {
141
- border: 1px solid #06c;
142
- }
143
- .install-gsm {
144
- margin-right: .5rem;
145
- }
146
- .install-user-guide {
147
- margin-left: .5rem;
148
- }
149
- .install-item a {
150
- color: #000;
151
- }
152
- .install-item:hover a {
153
- color: #06c;
154
- text-decoration: none;
155
- }
156
- .back-top {
157
- text-align: center;
158
- }
159
- #social {
160
- text-align: center;
161
- margin-top: 1rem;
162
- padding-bottom: 3rem;
163
- border-bottom: solid #aaa 1px;
164
- }
165
- .content {
166
- padding-top: 3rem;
167
- font-size: 1rem;
168
- border-bottom: solid #aaa 1px;
169
- padding-bottom: 3rem;
170
- }
171
- .content-title {
172
- text-align: center;
173
- font-size: 2rem;
174
- padding-bottom: 1rem;
175
- }
176
- .content-title-icon {
177
- font-size: 1.5rem;
178
- }
179
- .content-title-icon a {
180
- color: #fbfbfb;
181
- }
182
- .content-title:hover .content-title-icon a {
183
- color: #333;
184
- }
185
- footer {
186
- /*text-align: center;*/
187
- font-size: 1.2rem;
188
- padding-top: 1rem;
189
- padding-bottom: 1rem;
190
- }
Binary file
@@ -1,109 +0,0 @@
1
- ---
2
- permalink: index.html
3
- layout: default
4
- ---
5
- <div id="intro">
6
- <div id="intro-logo">
7
- <img src="/gsm/image/gsm.png">
8
- </div>
9
- <div id="intro-text">
10
- GSM is a simple sources manager for RubyGems.
11
- </div>
12
- <div id="intro-desc">
13
- 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.
14
- </div>
15
- <div id="intro-button">
16
- <div class="install-item install-gsm">
17
- <a href="#install">Install GSM</a>
18
- </div>
19
- <div class="install-item install-user-guide">
20
- <a href="#guide">User Guide</a>
21
- </div>
22
- </div>
23
- <div id="intro-version">
24
- <span>Version <a href="#changelog">{{ site.data.changelog[0].version }}</a> ·</span>
25
- <span>Created by <a href="https://crispgm.com">David Zhang</a></span>
26
- </div>
27
- </div>
28
- <div id="social">
29
- <a class="github-button" href="https://github.com/crispgm/gsm" data-icon="octicon-star" data-count-href="/crispgm/gsm/stargazers" data-count-api="/repos/crispgm/gsm#stargazers_count" data-count-aria-label="# stargazers on GitHub" aria-label="Star crispgm/gsm on GitHub">Star</a>
30
- <a class="github-button" href="https://github.com/crispgm/gsm/fork" data-icon="octicon-repo-forked" data-count-href="/crispgm/gsm/network" data-count-api="/repos/crispgm/gsm#forks_count" data-count-aria-label="# forks on GitHub" aria-label="Fork crispgm/gsm on GitHub">Fork</a>
31
- </div>
32
- <div id="install" class="content">
33
- <div class="content-title">
34
- <span class="content-title-text">Installation</span>
35
- <span class="content-title-icon">
36
- <a href="#install"><i class="fa fa-paragraph"></i></a>
37
- </span>
38
- </div>
39
- <div>
40
- {{ site.data.index.install | markdownify }}
41
- </div>
42
- <div class="back-top">
43
- <a href="#topbar">Back to top</a>
44
- </div>
45
- </div>
46
- <div id="guide" class="content">
47
- <div class="content-title">
48
- <span class="content-title-text">User Guide</span>
49
- <span class="content-title-icon">
50
- <a href="#guide"><i class="fa fa-paragraph"></i></a>
51
- </span>
52
- </div>
53
- {{ site.data.index.guide | markdownify }}
54
- <div class="back-top">
55
- <a href="#topbar">Back to top</a>
56
- </div>
57
- </div>
58
- <div id="changelog" class="content">
59
- <div class="content-title">
60
- <span class="content-title-text">Changelog</span>
61
- <span class="content-title-icon">
62
- <a href="#changelog"><i class="fa fa-paragraph"></i></a>
63
- </span>
64
- </div>
65
- {% for change in site.data.changelog %}
66
- <h3>Version {{ change.version }}</h3>
67
- <ul>
68
- {% for log in change.changes %}
69
- <li>
70
- {{ log.text }}
71
- {% if log.issue != nil %}
72
- <a href="https://github.com/crispgm/gsm/issues/{{ log.issue }}">#{{ log.issue }}</a></li>
73
- {% endif %}
74
- </li>
75
- {% endfor %}
76
- </ul>
77
- {% endfor %}
78
- <div class="back-top">
79
- <a href="#topbar">Back to top</a>
80
- </div>
81
- </div>
82
- <div id="contributing" class="content">
83
- <div class="content-title">
84
- <span class="content-title-text">Contributing</span>
85
- <span class="content-title-icon">
86
- <a href="#contributing"><i class="fa fa-paragraph"></i></a>
87
- </span>
88
- </div>
89
- {{ site.data.index.contrib | markdownify }}
90
- <div class="back-top">
91
- <a href="#topbar">Back to top</a>
92
- </div>
93
- </div>
94
- <div id="disqus" class="content">
95
- <div id="disqus_thread"></div>
96
- <script>
97
- var disqus_config = function () {
98
- this.page.url = 'https://crispgm.github.io/gsm/';
99
- this.page.identifier = 'Home | GSM Sources Manager';
100
- };
101
- (function() { // DON'T EDIT BELOW THIS LINE
102
- var d = document, s = d.createElement('script');
103
- s.src = '//crispgm-github-io.disqus.com/embed.js';
104
- s.setAttribute('data-timestamp', +new Date());
105
- (d.head || d.body).appendChild(s);
106
- })();
107
- </script>
108
- <noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
109
- </div>