ncupdater 0.0.5

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b5435fcd70581968d3e3fed09161d453cb952ac4
4
+ data.tar.gz: 160c6171cb492a0946a392213e52382d80c9ff43
5
+ SHA512:
6
+ metadata.gz: 804637fc109d0668ef041632407379e6613cfa31cc24ac7b96728f2b88417d30e94852b89c67bff9ac120c8e30db9ad5d4ba2961a055ac3f12857b3bde7af007
7
+ data.tar.gz: eaed02ad50a512f2b391720a71e5a2b7f213aafd7e547f982d00781d2ef9e5c5704006a18a4243b1a6b64a03c11736a5b535e3ff17dce1fb58fba5be196737db
data/README.md ADDED
@@ -0,0 +1,69 @@
1
+ # ncupdater
2
+ NCUpdater provides you with an easy way to update your ruby scripts. You specify a link to a small text file with latest version number, and the path of a .semver file in your project.
3
+ It will then check for updates every time your project starts. You can run update with a list of commands you would like to run.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ gem install ncupdater
9
+ ```
10
+
11
+ ## Example
12
+
13
+ ### Basic usage
14
+
15
+ #### Example 1
16
+
17
+ This example will run the update when the script starts
18
+
19
+ ```ruby
20
+ require 'ncupdater'
21
+
22
+ # Define commands to run the update
23
+ commands = {
24
+ :'Gem update' => 'gem update my-command',
25
+ :'Some other command' => 'ls -la'
26
+ }
27
+
28
+ # Init the NCUpdater class
29
+ # .semver is path to the location of a file with the local version in the semver format (http://semver.org/)
30
+ # The url is to a link with a text file with the latest version in semver format.
31
+ ncupdater = NCUpdater::new('.semver', 'http://LINK-TO-A-TEXT-FILE-WITH-NEW-VERSION', commands)
32
+
33
+ if ncupdater::new_version?
34
+ ncupdater::update
35
+ end
36
+ ```
37
+
38
+ #### Example 2
39
+
40
+ This example will run the update if you provide "update" as first argument of your script. It also shows a message when the script starts that there are a newer version
41
+
42
+ ```ruby
43
+ require 'ncupdater'
44
+
45
+ # Define commands to run the update
46
+ commands = {
47
+ :'Gem update' => 'gem update my-command',
48
+ :'Some other command' => 'ls -la'
49
+ }
50
+
51
+ # Init the NCUpdater class
52
+ # .semver is path to the location of a file with the local version in the semver format (http://semver.org/)
53
+ # The url is to a link with a text file with the latest version in semver format.
54
+ ncupdater = NCUpdater::new('.semver', 'http://LINK-TO-A-TEXT-FILE-WITH-NEW-VERSION', commands)
55
+
56
+ if ncupdater::new_version?
57
+ puts 'A new version is available. Please run the command as: ruby <my-script>.rb update to get the latest awesomeness'
58
+ end
59
+
60
+ if ARGV[0] == 'update'
61
+ ncupdater::update
62
+ end
63
+ ```
64
+
65
+ ## Todo
66
+
67
+ - Write some tests
68
+ - Write doc blocks
69
+ - Better error handling
@@ -0,0 +1,31 @@
1
+ class NCCheckVersion
2
+
3
+ def check_for_updates(semver_path = '', remote_url = '')
4
+ @semver_path = semver_path
5
+ @remote_url = remote_url
6
+
7
+ local_version = Semantic::Version.new "#{current_version}"
8
+ newer_version = Semantic::Version.new "#{remote_version}"
9
+
10
+ if local_version < newer_version
11
+ return true
12
+ end
13
+ return false
14
+
15
+ end
16
+
17
+ def current_version
18
+ File.open(@semver_path) {|f| f.readline}
19
+ end
20
+
21
+ def remote_version
22
+ uri = URI.parse( @remote_url )
23
+
24
+ http = Net::HTTP.new(uri.host, uri.port)
25
+ request = Net::HTTP::Get.new(uri.path)
26
+
27
+ response = http.request(request)
28
+ response.body
29
+ end
30
+
31
+ end
@@ -0,0 +1,11 @@
1
+ class NCUpdate
2
+
3
+ def update(commands)
4
+ commands.each do |key, value|
5
+ ShellSpinner "#{key}" do
6
+ `#{value}`
7
+ end
8
+ end
9
+ end
10
+
11
+ end
data/lib/ncupdater.rb ADDED
@@ -0,0 +1,32 @@
1
+ require 'net/http'
2
+ require 'uri'
3
+ require 'colorize'
4
+ require 'semantic'
5
+ require 'shell-spinner'
6
+
7
+ library_files = Dir[File.join(File.dirname(__FILE__), '/ncupdater/*.rb')].sort
8
+ library_files.each do |file|
9
+ require file
10
+ end
11
+
12
+ class NCUpdater
13
+
14
+ def initialize(semver_path = 'test', remote_url = '', commands = '')
15
+ @semver_path = semver_path
16
+ @remote_url = remote_url
17
+ @commands = commands
18
+ end
19
+
20
+ def update
21
+ if new_version?
22
+ NCUpdate::new::update(@commands)
23
+ else
24
+ puts 'You are already on latest version..'.colorize(:yellow)
25
+ end
26
+ end
27
+
28
+ def new_version?
29
+ NCCheckVersion::new::check_for_updates(@semver_path, @remote_url)
30
+ end
31
+
32
+ end
metadata ADDED
@@ -0,0 +1,91 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ncupdater
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.5
5
+ platform: ruby
6
+ authors:
7
+ - Jonas Schwartz
8
+ - Sigurd Kristensen
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2016-01-08 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: colorize
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - '>='
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - '>='
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: shell-spinner
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - '>='
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - '>='
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: semantic
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - '>='
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ description: A small handy upgrade tool for ruby scripts. just provide a version file,
57
+ and a url for latest version, and the script will handle the rest
58
+ email:
59
+ - tech@nodes.dk
60
+ executables: []
61
+ extensions: []
62
+ extra_rdoc_files: []
63
+ files:
64
+ - README.md
65
+ - lib/ncupdater.rb
66
+ - lib/ncupdater/ncupdate.rb
67
+ - lib/ncupdater/nccheck_version.rb
68
+ homepage: https://github.com/nodes-cloud/ncupdater
69
+ licenses: []
70
+ metadata: {}
71
+ post_install_message:
72
+ rdoc_options: []
73
+ require_paths:
74
+ - lib
75
+ required_ruby_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - '>='
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ required_rubygems_version: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - '>='
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ requirements: []
86
+ rubyforge_project:
87
+ rubygems_version: 2.0.14.1
88
+ signing_key:
89
+ specification_version: 4
90
+ summary: Easy way to update any ruby script
91
+ test_files: []