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

Sign up to get free protection for your applications and to get access to all the features.
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>