oliver 2.0.1 → 2.1

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: e4e92685d0280c2290a1365b18ad58994f499238
4
- data.tar.gz: f0e8746522e31b2892537c9f0bb3faed7b088376
3
+ metadata.gz: 1d4e2a38b5314134cc132c1cd65e6b94ed7a2bc2
4
+ data.tar.gz: fa2d65fcc431a5bf88c805c4646fe73a76cb45b0
5
5
  SHA512:
6
- metadata.gz: 8e77df90be0b318017103eb9c76b347cd4f979d590bf7b1340f0bc026a688d96d0747e0d87a2326780b2c6312a6c49ffd7291671d1d2e9add080ec3cd328eb8b
7
- data.tar.gz: dfacb270a4483ef4e3aa3736af960342bbfb37c564dd499ba490e67513bb25916205eb33010c1ed63a818e15e772b9e86339a45b0f1a4db59b06d05cc332b9e8
6
+ metadata.gz: 1b5c3963c81d701154eae7bd196873b1b3137471796ac20c2cc296e75bb00491eb98b8744d131c9a8cae1a46a402849788f359b7b9ca45ae5e9f28cbcda2d3de
7
+ data.tar.gz: 2dead40f0c7f91725b11a08ae0518ce74e28576ba28e1794d5fa40ef57b329b2f04a66bae8e97a97fc9e9722dc8fe5b889f5b5edf202a4a94e2f5536b398d460
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
data/IDEAS.md CHANGED
@@ -33,3 +33,8 @@ $ olive install
33
33
  to do it, though, so.. yeah~~
34
34
 
35
35
  ~~I'll add it as soon as I can figure it out.~~
36
+
37
+ - [ ] when deleting repos check if everything's been pushed and only
38
+ delete without prompting the user first if everything has. if there's still shit
39
+ that hasn't been pushed ask the user and double check if they wanted
40
+ to do all that work for nothin'
data/README.md CHANGED
@@ -31,19 +31,17 @@ and then add whatever you'd like to the file (write in JSON)
31
31
 
32
32
  ```json
33
33
  {
34
- "repos": {
35
- "trommel": [
36
- "oliver",
37
- "textymous"
38
- ],
39
- "istx25": [
40
- "Fluorescent",
41
- "dotfiles"
42
- ],
43
- "misc": [
44
- "https://exampleserver.com/repo"
45
- ]
46
- }
34
+ "trommel": [
35
+ "oliver",
36
+ "textymous"
37
+ ],
38
+ "istx25": [
39
+ "Fluorescent",
40
+ "dotfiles"
41
+ ],
42
+ "misc": [
43
+ "https://exampleserver.com/repo"
44
+ ]
47
45
  }
48
46
  ```
49
47
 
@@ -59,7 +57,8 @@ $ olive init
59
57
 
60
58
  Clones repos listedy and
61
59
  removes ones saved locally that aren't found
62
- in the file
60
+ in the file. Careful removing directories from the list because
61
+ [Olive will delete them without a second thought](#to-do).
63
62
 
64
63
  ```bash
65
64
  $ olive install
@@ -89,6 +88,9 @@ $ olive update
89
88
  To-Do
90
89
  -----
91
90
 
91
+ - [ ] Add `.settings` file for better customization and easier options usage
92
+ - [ ] In `.settings`, give option to enable a "safe barrier", essentially
93
+ Oliver will prompt you before it removes any directory
92
94
  - [x] Remake the help/info thing to be slimmer & look better
93
95
  - [x] Expand repo support to Git in general, not just GitHub
94
96
  - [ ] Add support to `olive list` so that it'll list repos that're already cloned but not on the list (so the user knows that it's being removed on the next `olive install`)
@@ -1,74 +1,72 @@
1
1
  {
2
- "repos": {
3
- "samvermette": [
4
- "UIAlertView-Blocks",
5
- "Montreal-Collective",
6
- "SVSegmentedControl",
7
- "iOS-Simulator-Raindrop",
8
- "RaptureXML",
9
- "emphasize.js",
10
- "objc-geohash",
11
- "SVStatusHUD"
12
- ],
13
- "gcamp": [
14
- "services-to-omnifocus",
15
- "OpenTripPlanner",
16
- "github-omnifocus-sync"
17
- ],
18
- "TransitApp": [
19
- "SVProgressHUD",
20
- "SVHTTPRequest",
21
- "SVWebViewController"
22
- ],
23
- "misc": [
24
- "stefanceriu/SCSiriWaveformView",
25
- "KjulyKYCircleMenu",
26
- "chillok/AnimatedCircularCollectionMenu",
27
- "YoApp/hey",
28
- "opentripplanner/OpenTripPlanner",
29
- "ghvillasboas/CloudKitTest",
30
- "lovell/sharp",
31
- "davidluzgouveia/ParallaxScrolling",
32
- "ellisonleao/magictools",
33
- "buger/gor",
34
- "OpenRA/OpenRA",
35
- "cocos2d/cocos2d-x",
36
- "AdamsLair/duality",
37
- "quicksilver/Quicksilver",
38
- "muan/github-gmail",
39
- "AgileBits/onepassword-app-extension",
40
- "snowshoestamp/python_sdk",
41
- "abraham/twitteroauth",
42
- "rs/SDWebImage",
43
- "maddox/regexkit",
44
- "tonymillion/Reachability",
45
- "ole/OBGradientView",
46
- "stig/json-framework",
47
- "flori/json",
48
- "crino/instagram-ios-sdk",
49
- "dalexsoto/HardwareInfo",
50
- "nicklockwood/FXPageControl",
51
- "fhsjaagshs/FHSTwitterEngine",
52
- "enormego/EGOTableViewPullRefresh",
53
- "Darktt/DTAlertView",
54
- "kriskowal/transcode",
55
- "pokeb/asi-http-request",
56
- "Cue/CueTableReloader",
57
- "AFNetworking/AFNetworking",
58
- "yashigani/YSViewer",
59
- "nicklockwood/SwipeView",
60
- "CEWendel/SWTableViewCell",
61
- "stefanoa/SASlideMenu",
62
- "datwelk/RDRStickyKeyboardView",
63
- "MacMannes/MKInfoPanel",
64
- "jdg/MBProgressHUD",
65
- "JLZ/JZSwipeCell",
66
- "autresphere/ASDepthModal",
67
- "marshluca/PolylineDemo",
68
- "wit-ai/wit-ios-sdk",
69
- "koenbok/Framer",
70
- "mattdonnelly/Swifter",
71
- "cloudapp/api"
72
- ]
73
- }
2
+ "samvermette": [
3
+ "UIAlertView-Blocks",
4
+ "Montreal-Collective",
5
+ "SVSegmentedControl",
6
+ "iOS-Simulator-Raindrop",
7
+ "RaptureXML",
8
+ "emphasize.js",
9
+ "objc-geohash",
10
+ "SVStatusHUD"
11
+ ],
12
+ "gcamp": [
13
+ "services-to-omnifocus",
14
+ "OpenTripPlanner",
15
+ "github-omnifocus-sync"
16
+ ],
17
+ "TransitApp": [
18
+ "SVProgressHUD",
19
+ "SVHTTPRequest",
20
+ "SVWebViewController"
21
+ ],
22
+ "misc": [
23
+ "stefanceriu/SCSiriWaveformView",
24
+ "KjulyKYCircleMenu",
25
+ "chillok/AnimatedCircularCollectionMenu",
26
+ "YoApp/hey",
27
+ "opentripplanner/OpenTripPlanner",
28
+ "ghvillasboas/CloudKitTest",
29
+ "lovell/sharp",
30
+ "davidluzgouveia/ParallaxScrolling",
31
+ "ellisonleao/magictools",
32
+ "buger/gor",
33
+ "OpenRA/OpenRA",
34
+ "cocos2d/cocos2d-x",
35
+ "AdamsLair/duality",
36
+ "quicksilver/Quicksilver",
37
+ "muan/github-gmail",
38
+ "AgileBits/onepassword-app-extension",
39
+ "snowshoestamp/python_sdk",
40
+ "abraham/twitteroauth",
41
+ "rs/SDWebImage",
42
+ "maddox/regexkit",
43
+ "tonymillion/Reachability",
44
+ "ole/OBGradientView",
45
+ "stig/json-framework",
46
+ "flori/json",
47
+ "crino/instagram-ios-sdk",
48
+ "dalexsoto/HardwareInfo",
49
+ "nicklockwood/FXPageControl",
50
+ "fhsjaagshs/FHSTwitterEngine",
51
+ "enormego/EGOTableViewPullRefresh",
52
+ "Darktt/DTAlertView",
53
+ "kriskowal/transcode",
54
+ "pokeb/asi-http-request",
55
+ "Cue/CueTableReloader",
56
+ "AFNetworking/AFNetworking",
57
+ "yashigani/YSViewer",
58
+ "nicklockwood/SwipeView",
59
+ "CEWendel/SWTableViewCell",
60
+ "stefanoa/SASlideMenu",
61
+ "datwelk/RDRStickyKeyboardView",
62
+ "MacMannes/MKInfoPanel",
63
+ "jdg/MBProgressHUD",
64
+ "JLZ/JZSwipeCell",
65
+ "autresphere/ASDepthModal",
66
+ "marshluca/PolylineDemo",
67
+ "wit-ai/wit-ios-sdk",
68
+ "koenbok/Framer",
69
+ "mattdonnelly/Swifter",
70
+ "cloudapp/api"
71
+ ]
74
72
  }
@@ -1,3 +1,4 @@
1
+ require 'awesome_print'
1
2
  require 'json'
2
3
  require 'git'
3
4
  require 'fileutils'
@@ -8,45 +9,46 @@ require_relative 'file_manager'
8
9
  module Oliver
9
10
  module_function
10
11
 
11
- def init(options)
12
- options = options[:options]
12
+ def init
13
13
  unless File.exists?(Oliver::NAME)
14
14
  File.open(Oliver::NAME, 'w') do |file|
15
- tempHash = { repos: { trommel: ["oliver"] } }
15
+ tempHash = { trommel: ["oliver"] }
16
16
  file.write(JSON.pretty_generate(tempHash))
17
- puts "#{Oliver::NAME} created sucessfully" if options[:verbose]
17
+ puts "#{Oliver::NAME} created sucessfully" if @options[:verbose]
18
18
  end
19
19
  end
20
20
  end
21
21
 
22
22
  # I'm honestly ashamed of this piece of shit, it's hack as fuck
23
- def install(options)
24
- options = options[:options] # DRY
23
+ def install
25
24
  unless FileManager::BODY.nil?
26
- FileManager::BODY['repos'].map do |user, repos|
25
+ FileManager::BODY.map do |user, repos|
27
26
  user ||= ''
28
27
  repos ||= []
29
28
 
30
29
  # Add options[:verbose] support as soon as this doesn't look awful
31
30
  unless user.empty? || repos.nil?
32
31
  repos.each do |repo|
33
- if File.directory?(repo)
34
- puts "Warning: #{repo}/ already exists"
35
- else
32
+
33
+ unless File.directory?(repo)
36
34
  if user.downcase == 'misc'
37
- cloned_repo = Git.clone(repo, repo.split('/').last, :path => '.')
35
+ cloned_repo = Git.clone(
36
+ repo,
37
+ repo.split('/').last
38
+ )
38
39
  else
39
40
  cloned_repo = Git.clone(
40
41
  "https://github.com/#{user}/#{repo}",
41
- repo,
42
- :path => '.'
42
+ repo
43
43
  )
44
44
  end
45
- if File.directory?(repo) || File.directory?(repo.split('/').last)
46
- puts "Success: #{repo}/ has been cloned"
45
+
46
+ if !cloned_repo.nil?
47
+ puts "Success: #{repo}/ has been cloned" if @options[:verbose]
47
48
  else
48
49
  puts "Warning: #{repo}/ failed to clone"
49
50
  end
51
+
50
52
  end
51
53
  end
52
54
  end
@@ -57,28 +59,26 @@ module Oliver
57
59
  end
58
60
  dirRepos.sort!
59
61
 
60
- trackedRepos = FileManager::BODY['repos'].map do |user, repos|
61
- repos.select { |repo| repo }
62
+ trackedRepos ||= []
63
+ FileManager::BODY.each do |user|
64
+ user[1].each { |repo| trackedRepos << repo }
62
65
  end
63
66
  trackedRepos.sort!
64
- trackedRepos = trackedRepos.first
65
67
 
66
68
  unless dirRepos == trackedRepos
67
69
  dirRepos ||= []
68
70
  trackedRepos ||= []
69
71
  dirRepos -= trackedRepos
70
72
  unless dirRepos.empty?
71
- dirRepos.each do |dirRepo|
72
- print "Warning: Enter '#{dirRepo}' to locally delete the repo: "
73
- FileUtils.rm_rf(dirRepo) if STDIN.gets.chomp.downcase == dirRepo
74
- end
73
+ dirRepos.each { |dirRepo| FileUtils.rm_rf(dirRepo) }
75
74
  end
76
75
  end
76
+
77
77
  end
78
78
  end
79
79
 
80
80
  def list
81
- FileManager::BODY["repos"].map do |user, repos|
81
+ FileManager::BODY.map do |user, repos|
82
82
  repos ||= []
83
83
  # Add silent shit later when it's actually working
84
84
  unless repos.empty?
@@ -91,8 +91,7 @@ module Oliver
91
91
  end
92
92
 
93
93
  # Still buggy, afaik
94
- def update(options)
95
- options = options[:options] # DRY
94
+ def update
96
95
  dirs = Dir.glob('*').select { |f| File.directory? f }
97
96
  dirs.each do |dir|
98
97
  Dir.chdir(dir)
@@ -1,4 +1,4 @@
1
1
  # Oliver's version
2
2
  module Oliver
3
- VERSION = '2.0.1'
3
+ VERSION = '2.1'
4
4
  end
data/lib/oliver.rb CHANGED
@@ -73,13 +73,13 @@ module Oliver
73
73
  @command = @command.split(' ')
74
74
  case @command.first
75
75
  when 'init'
76
- init(options:@options)
76
+ init
77
77
  when 'install'
78
- install(optoins:@options)
78
+ install
79
79
  when 'list'
80
80
  list
81
81
  when 'update'
82
- update(optoins:@options)
82
+ update
83
83
  else end
84
84
  end
85
85
  end
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+ require_relative '../lib/oliver'
3
+
4
+ describe Oliver do
5
+ before :each do
6
+
7
+ describe "#new" do
8
+ it "creates a new instance of oliver with no arguments" do
9
+ Oliver.run(''))
10
+ end
11
+ end
12
+
13
+ describe "#version" do
14
+ it "returns the version" do
15
+ Oliver.run('version')
16
+ end
17
+ end
18
+
19
+ end
20
+ end
@@ -0,0 +1,91 @@
1
+ # This file was generated by the `rspec --init` command. Conventionally, all
2
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
+ # The generated `.rspec` file contains `--require spec_helper` which will cause
4
+ # this file to always be loaded, without a need to explicitly require it in any
5
+ # files.
6
+ #
7
+ # Given that it is always loaded, you are encouraged to keep this file as
8
+ # light-weight as possible. Requiring heavyweight dependencies from this file
9
+ # will add to the boot time of your test suite on EVERY test run, even for an
10
+ # individual file that may not need all of that loaded. Instead, consider making
11
+ # a separate helper file that requires the additional dependencies and performs
12
+ # the additional setup, and require it from the spec files that actually need
13
+ # it.
14
+ #
15
+ # The `.rspec` file also contains a few flags that are not defaults but that
16
+ # users commonly want.
17
+ #
18
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
19
+ RSpec.configure do |config|
20
+ # rspec-expectations config goes here. You can use an alternate
21
+ # assertion/expectation library such as wrong or the stdlib/minitest
22
+ # assertions if you prefer.
23
+ config.expect_with :rspec do |expectations|
24
+ # This option will default to `true` in RSpec 4. It makes the `description`
25
+ # and `failure_message` of custom matchers include text for helper methods
26
+ # defined using `chain`, e.g.:
27
+ # be_bigger_than(2).and_smaller_than(4).description
28
+ # # => "be bigger than 2 and smaller than 4"
29
+ # ...rather than:
30
+ # # => "be bigger than 2"
31
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
32
+ end
33
+
34
+ # rspec-mocks config goes here. You can use an alternate test double
35
+ # library (such as bogus or mocha) by changing the `mock_with` option here.
36
+ config.mock_with :rspec do |mocks|
37
+ # Prevents you from mocking or stubbing a method that does not exist on
38
+ # a real object. This is generally recommended, and will default to
39
+ # `true` in RSpec 4.
40
+ mocks.verify_partial_doubles = true
41
+ end
42
+
43
+ # The settings below are suggested to provide a good initial experience
44
+ # with RSpec, but feel free to customize to your heart's content.
45
+ =begin
46
+ # These two settings work together to allow you to limit a spec run
47
+ # to individual examples or groups you care about by tagging them with
48
+ # `:focus` metadata. When nothing is tagged with `:focus`, all examples
49
+ # get run.
50
+ config.filter_run :focus
51
+ config.run_all_when_everything_filtered = true
52
+
53
+ # Limits the available syntax to the non-monkey patched syntax that is
54
+ # recommended. For more details, see:
55
+ # - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
56
+ # - http://teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
57
+ # - http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3#new__config_option_to_disable_rspeccore_monkey_patching
58
+ config.disable_monkey_patching!
59
+
60
+ # This setting enables warnings. It's recommended, but in some cases may
61
+ # be too noisy due to issues in dependencies.
62
+ config.warnings = true
63
+
64
+ # Many RSpec users commonly either run the entire suite or an individual
65
+ # file, and it's useful to allow more verbose output when running an
66
+ # individual spec file.
67
+ if config.files_to_run.one?
68
+ # Use the documentation formatter for detailed output,
69
+ # unless a formatter has already been configured
70
+ # (e.g. via a command-line flag).
71
+ config.default_formatter = 'doc'
72
+ end
73
+
74
+ # Print the 10 slowest examples and example groups at the
75
+ # end of the spec run, to help surface which specs are running
76
+ # particularly slow.
77
+ config.profile_examples = 10
78
+
79
+ # Run specs in random order to surface order dependencies. If you find an
80
+ # order dependency and want to debug it, you can fix the order by providing
81
+ # the seed, which is printed after each run.
82
+ # --seed 1234
83
+ config.order = :random
84
+
85
+ # Seed global randomization in this process using the `--seed` CLI option.
86
+ # Setting this allows you to use `--seed` to deterministically reproduce
87
+ # test failures related to randomization by passing the same `--seed` value
88
+ # as the one that triggered the failure.
89
+ Kernel.srand config.seed
90
+ =end
91
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oliver
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: '2.1'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josh Trommel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-06 00:00:00.000000000 Z
11
+ date: 2015-03-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -88,6 +88,7 @@ extensions: []
88
88
  extra_rdoc_files: []
89
89
  files:
90
90
  - ".gitignore"
91
+ - ".rspec"
91
92
  - CONTRIBUTING.md
92
93
  - Gemfile
93
94
  - IDEAS.md
@@ -106,6 +107,8 @@ files:
106
107
  - lib/oliver/settings.rb
107
108
  - lib/oliver/version.rb
108
109
  - oliver.gemspec
110
+ - spec/oliver_spec.rb
111
+ - spec/spec_helper.rb
109
112
  homepage: https://github.com/trommel/oliver
110
113
  licenses: []
111
114
  metadata: {}
@@ -129,4 +132,6 @@ rubygems_version: 2.4.6
129
132
  signing_key:
130
133
  specification_version: 4
131
134
  summary: Manage your Git(Hub) repos/projects easier.
132
- test_files: []
135
+ test_files:
136
+ - spec/oliver_spec.rb
137
+ - spec/spec_helper.rb