jekyll-git-deploy 0.0.1 → 0.0.2

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: e9373d96cf9be3eb302f9463eab2503af3fdb65d
4
- data.tar.gz: 6b15970dbdb092f1437a48d428060c6df2c63ee2
3
+ metadata.gz: 6a792c9d8b5cbacca308a02f042d8a83b36b5a8d
4
+ data.tar.gz: 04f2e047bec41b97c128dfddde4716af8ef8d301
5
5
  SHA512:
6
- metadata.gz: de59a4f1666e02e22399de95379d35a328f25c85ea0f8dea7a1c1ca4585c9abb9c505c897d54636893858ddc796d4db89940a7288ba5b28c1b0efbdf5fca574c
7
- data.tar.gz: bb36bab8c8691003868b9f2b3c018123e1229fbd47d135408f68a2cc5ad57971abfb437543f060bf872f5c4e203a7c1f1b3ddc560ecbe6179f17558e135c542e
6
+ metadata.gz: c3ba5482ad01bef953ca5815c07699aace8ed24c645a180160ccdd771890b7aa32a16f167c3b9d77304f404239b13d0daf39ebbc25e7ca522e4a6d0b69f19f39
7
+ data.tar.gz: 0dc5af353cf756a653d79276bb198037c47d61ca5d2482eb7e0500e635240cc26c7a845c42c5b7b0a346b2fab2f802eb73986272321f717a3c817bfbbb6f0068
data/README.md ADDED
@@ -0,0 +1,64 @@
1
+ jekyll-git-deploy
2
+ ========
3
+ Executable commands to help you to deploy your [jekyll](http://jekyllrb.com/) blog through git push way conveniently!
4
+
5
+ ### Getting Started
6
+ 1. Install The Gem
7
+ Install it through command line(recommended):
8
+ ```sh
9
+ gem install jekyll-git-deploy
10
+ ```
11
+ or, install it through the Gemfile:
12
+ ```ruby
13
+ gem 'jekyll-git-deploy', '~> 0.0.1'
14
+ ```
15
+
16
+ 2. Config Additional Keys In Your `_config.yml` file:
17
+ ```yaml
18
+ # #{site_root}/_config.yml
19
+ deploy_repo: git@something.com:martin/jekyll-deploy-demo.git
20
+ touch_file: Staticfile
21
+ deploy_branch: github-pages
22
+ deploy_remote_name: github
23
+ ```
24
+ More details about these configs will be described later.
25
+
26
+ 3. Initialize The Destination
27
+ Run the below command in the root of your jekyll site:
28
+ ```sh
29
+ jekyll-git-deploy init
30
+ ```
31
+
32
+ 4. Deploy The Site
33
+ ```sh
34
+ jekyll-git-deploy deploy
35
+ ```
36
+
37
+ ### More Details
38
+ #### 1. Supported Commands
39
+ Currently, `jekyll-git-deploy` supports its name as the main command and also two sub commands: `init` and `deploy`. They are mainly used to:
40
+
41
+ * `init`: Check and create destination directory for your deployment, and then check and initialize a git repo there
42
+ * `deploy`: Build the site using `jekyll build`, touch a specified file if necessary(some PaaS requires that a specifed name should be existed, they need that to detect a suitable running environment), create or checkout to deploy branch, commit changes and push them to specified repo and its branch.
43
+
44
+ #### 2. Supported Configs
45
+ `jekyll-git-deploy` dependent on five configs to work, the first one is `destination`, which is supported by jekyll itself already, here we use it to detect the target directory for generated site. The other four configs are:
46
+
47
+ | Config | Purpose | Default Value | Required |
48
+ | -------- | -------- | -------- | -------- |
49
+ | deploy_repo | Specify the deploy target, should be a remote git repo | NONE | YES |
50
+ | deploy_branch | Specify the deploy target branch | pages | NO |
51
+ | deploy_remote_name | Specify the remote name added to git, work with deploy_repo | deploy | NO |
52
+ | touch_file | Specify the file shoule be touched during a deployment | Staticfile | NO |
53
+
54
+ To see source codes, visit [Source codes for configs](./lib/helpers/common_tasks.rb).
55
+
56
+ ### Contribute Guides
57
+ This project is just in its initial stage, more features or patches are welcome.
58
+
59
+ 1. Fork this repo;
60
+ 2. Clone your forked repo to your local file system;
61
+ 3. Check out to a new branch;
62
+ 4. Write and test your codes;
63
+ 5. Commit and push your changes to a remote branch in your forked repo;
64
+ 6. Submit a new PR.
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'jekyll-git-deploy'
3
- s.version = '0.0.1'
3
+ s.version = '0.0.2'
4
4
  s.date = '2015-01-18'
5
5
  s.summary = "Deploy jekyll site through git push"
6
6
  s.description = "Executable commands to help you to deploy your jekyll blog through git push way conveniently!"
@@ -30,6 +30,17 @@ module CommonTasks
30
30
  `git rev-parse --abbrev-ref HEAD`.strip
31
31
  end
32
32
 
33
+ def checkout_target_branch(quiet = false)
34
+ unless current_branch == deploy_branch
35
+ puts "\nStart to checkout to deploy branch: #{deploy_branch}".yellow unless quiet
36
+ if `git show-branch #{deploy_branch} 2> /dev/null`.empty? # the deploy branch didn't exist
37
+ `git checkout -b #{deploy_branch}`
38
+ else
39
+ `git checkout #{deploy_branch}`
40
+ end
41
+ end
42
+ end
43
+
33
44
  def self.included(base)
34
45
  REQUIRED_CONFIGS.each do |method|
35
46
  define_method method do
@@ -15,7 +15,7 @@ module JekyllGitDeploy
15
15
  raise "You haven't specify any deploy repo in _config.yml file, the action can not continue!".red
16
16
  end
17
17
 
18
- file = File.open('.gitignore', 'r+')
18
+ file = File.open('.gitignore', 'a+')
19
19
  existed_line = file.readlines.select{|line| line.strip == destination}
20
20
  unless existed_line
21
21
  puts "\nadd #{destination} directory to .gitignore".yellow
@@ -37,6 +37,9 @@ module JekyllGitDeploy
37
37
  puts "\nCurrent git remotes:\n==========================".yellow
38
38
  puts `git remote -v`
39
39
 
40
+ puts "Fetch remote codes...".yellow
41
+ `git pull #{deploy_remote_name} #{deploy_branch}`
42
+
40
43
  puts "\nFinished deploy initialization for the current site".green
41
44
  end
42
45
  end
@@ -44,6 +47,16 @@ module JekyllGitDeploy
44
47
  # Build and push(deploy) the newest generated site
45
48
  #
46
49
  def deploy
50
+ # Pull the newest deploy data
51
+ Dir.chdir destination do
52
+ unless `git branch`.empty?
53
+ checkout_target_branch
54
+
55
+ puts "Updating remote deployed versions...".green
56
+ `git pull #{deploy_remote_name} #{deploy_branch}`
57
+ end
58
+ end
59
+
47
60
  puts "\nGenerating the newest site".yellow
48
61
  `jekyll build`
49
62
 
@@ -54,6 +67,7 @@ module JekyllGitDeploy
54
67
  end
55
68
 
56
69
  puts "\nruning `cd #{destination}`".yellow
70
+
57
71
  Dir.chdir destination do
58
72
  if `git branch`.empty? # Fully new git repo
59
73
  commit_newest_site
@@ -61,20 +75,24 @@ module JekyllGitDeploy
61
75
  puts "\nThis is a new git repo, creating new branch #{deploy_branch} now".yellow
62
76
  `git checkout -b #{deploy_branch} &> /dev/null && git merge #{current_branch}`
63
77
  else
64
- unless current_branch == deploy_branch
65
- puts "\nStart to checkout to deploy branch: #{deploy_branch}".yellow
66
- if `git show-branch #{deploy_branch} 2> /dev/null`.empty? # the deploy branch didn't exist
67
- `git checkout -b #{deploy_branch}`
68
- else
69
- `git checkout #{deploy_branch}`
70
- end
71
- end
72
-
78
+ checkout_target_branch
73
79
  commit_newest_site
74
80
  end
75
81
 
76
82
  puts "\nPushing newest generated site:".yellow
77
- `git push -u #{deploy_remote_name} #{deploy_branch}`
83
+ push_result = `git push -u #{deploy_remote_name} #{deploy_branch} 2>&1`
84
+ if push_result.include?("Updates were rejected because the remote contains work")
85
+ print "Oops! It seems there are some updates exist in the remote repo so that your pushing has been rejected, do you want to force to update?[Y/N]".red
86
+ if STDIN.gets.chomp.to_s.downcase == 'y'
87
+ puts "Try to force to update remote repo...".yellow
88
+ `git push -f #{deploy_remote_name} #{deploy_branch}`
89
+ else
90
+ puts "You have canceled the deploy process, you need to manually merge remote updates before deploy!".yellow
91
+ exit
92
+ end
93
+ else
94
+ puts push_result
95
+ end
78
96
 
79
97
  puts "\nThe deploy is finished!".green
80
98
  baseurl = read_configs['baseurl'] || ""
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-git-deploy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Hong
@@ -18,7 +18,8 @@ executables:
18
18
  extensions: []
19
19
  extra_rdoc_files: []
20
20
  files:
21
- - .gitignore
21
+ - ".gitignore"
22
+ - README.md
22
23
  - bin/jekyll-git-deploy
23
24
  - jekyll-git-deploy.gemspec
24
25
  - lib/helpers/common_tasks.rb
@@ -34,18 +35,19 @@ require_paths:
34
35
  - lib
35
36
  required_ruby_version: !ruby/object:Gem::Requirement
36
37
  requirements:
37
- - - '>='
38
+ - - ">="
38
39
  - !ruby/object:Gem::Version
39
40
  version: '0'
40
41
  required_rubygems_version: !ruby/object:Gem::Requirement
41
42
  requirements:
42
- - - '>='
43
+ - - ">="
43
44
  - !ruby/object:Gem::Version
44
45
  version: '0'
45
46
  requirements: []
46
47
  rubyforge_project:
47
- rubygems_version: 2.2.2
48
+ rubygems_version: 2.4.8
48
49
  signing_key:
49
50
  specification_version: 4
50
51
  summary: Deploy jekyll site through git push
51
52
  test_files: []
53
+ has_rdoc: