not-quite-submodules 0.3.0 → 0.4.0
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.
- data/VERSION +1 -1
 - data/lib/not-quite-submodules.rb +19 -14
 - data/not-quite-submodules.gemspec +3 -3
 - metadata +4 -4
 
    
        data/VERSION
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            0. 
     | 
| 
      
 1 
     | 
    
         
            +
            0.4.0
         
     | 
    
        data/lib/not-quite-submodules.rb
    CHANGED
    
    | 
         @@ -11,6 +11,7 @@ class NotQuiteSubmodules 
     | 
|
| 
       11 
11 
     | 
    
         
             
                def initialize(repository, target_path, args = {})
         
     | 
| 
       12 
12 
     | 
    
         
             
                  args[:target_path] = target_path
         
     | 
| 
       13 
13 
     | 
    
         
             
                  @update_interval = args[:update_interval] || DEFAULT_UPDATE_INTERVAL
         
     | 
| 
      
 14 
     | 
    
         
            +
                  @force_update_to = args[:force_update_to]
         
     | 
| 
       14 
15 
     | 
    
         | 
| 
       15 
16 
     | 
    
         
             
                  if args[:temp_path].nil?
         
     | 
| 
       16 
17 
     | 
    
         
             
                    tmp_name = (Digest::SHA1.hexdigest repository)
         
     | 
| 
         @@ -24,29 +25,30 @@ class NotQuiteSubmodules 
     | 
|
| 
       24 
25 
     | 
    
         
             
                  end
         
     | 
| 
       25 
26 
     | 
    
         | 
| 
       26 
27 
     | 
    
         
             
                  tags = get_repository_tags(args[:temp_path]).map { |x| Versionomy.parse(x) }.sort
         
     | 
| 
       27 
     | 
    
         
            -
                  if configuration_needs_update?(args[: 
     | 
| 
      
 28 
     | 
    
         
            +
                  if configuration_needs_update?(args[:target_path], tags)
         
     | 
| 
       28 
29 
     | 
    
         
             
                    update_target_path(args[:temp_path], args[:target_path], tags)
         
     | 
| 
       29 
30 
     | 
    
         
             
                  end
         
     | 
| 
       30 
31 
     | 
    
         
             
                end
         
     | 
| 
       31 
32 
     | 
    
         | 
| 
       32 
33 
     | 
    
         
             
            private
         
     | 
| 
       33 
34 
     | 
    
         | 
| 
       34 
     | 
    
         
            -
                def configuration_needs_update?( 
     | 
| 
       35 
     | 
    
         
            -
                  return true if !ENV["FORCE_UPDATE"].nil?
         
     | 
| 
       36 
     | 
    
         
            -
                  current_tag = get_current_tag( 
     | 
| 
      
 35 
     | 
    
         
            +
                def configuration_needs_update?(target_path, tags)
         
     | 
| 
      
 36 
     | 
    
         
            +
                  return true if !ENV["FORCE_UPDATE"].nil? || @force_update_to
         
     | 
| 
      
 37 
     | 
    
         
            +
                  current_tag = get_current_tag(target_path)
         
     | 
| 
      
 38 
     | 
    
         
            +
                  tell("Currently checked out tag is #{current_tag}, latest tag is #{tags.last}")
         
     | 
| 
       37 
39 
     | 
    
         
             
                  return true if current_tag.nil?
         
     | 
| 
       38 
40 
     | 
    
         
             
                  current_tag < tags.last
         
     | 
| 
       39 
41 
     | 
    
         
             
                end
         
     | 
| 
       40 
42 
     | 
    
         | 
| 
       41 
43 
     | 
    
         
             
                # Checks out the latest tag and copies all files to the target path.
         
     | 
| 
       42 
44 
     | 
    
         
             
                def update_target_path(temp_path, target_path, tags)
         
     | 
| 
       43 
     | 
    
         
            -
                  update_to = tags.last
         
     | 
| 
      
 45 
     | 
    
         
            +
                  update_to = @force_update_to || tags.last
         
     | 
| 
       44 
46 
     | 
    
         
             
                  tell("About to update target path to tag '#{update_to}'")
         
     | 
| 
       45 
47 
     | 
    
         | 
| 
       46 
48 
     | 
    
         
             
                  in_dir_do(temp_path) do
         
     | 
| 
       47 
     | 
    
         
            -
                    execute_command("git  
     | 
| 
      
 49 
     | 
    
         
            +
                    execute_command("git reset --hard #{update_to}")
         
     | 
| 
       48 
50 
     | 
    
         
             
                  end
         
     | 
| 
       49 
     | 
    
         
            -
                  set_current_tag( 
     | 
| 
      
 51 
     | 
    
         
            +
                  set_current_tag(target_path, update_to) if !@force_update_to
         
     | 
| 
       50 
52 
     | 
    
         
             
                  tell("Updated to '#{update_to}'")
         
     | 
| 
       51 
53 
     | 
    
         | 
| 
       52 
54 
     | 
    
         
             
                  tell("Copying updated files to '#{target_path}'")
         
     | 
| 
         @@ -62,6 +64,7 @@ private 
     | 
|
| 
       62 
64 
     | 
    
         
             
                  tell("Updating #{target_path}/.gitignore")
         
     | 
| 
       63 
65 
     | 
    
         
             
                  files = in_dir_do(temp_path) { Dir.glob("*") }
         
     | 
| 
       64 
66 
     | 
    
         
             
                  files.push(".gitignore")
         
     | 
| 
      
 67 
     | 
    
         
            +
                  files.push(".CURRENT_TAG")
         
     | 
| 
       65 
68 
     | 
    
         
             
                  in_dir_do(target_path) do
         
     | 
| 
       66 
69 
     | 
    
         
             
                    File.open(".gitignore", 'w+') { |f| f.write(files.join("\n")) }
         
     | 
| 
       67 
70 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -69,20 +72,20 @@ private 
     | 
|
| 
       69 
72 
     | 
    
         | 
| 
       70 
73 
     | 
    
         
             
                # The file that contains the currently checked out tag (that is, the last tag
         
     | 
| 
       71 
74 
     | 
    
         
             
                # whose contents where copied to the configuration directory)
         
     | 
| 
       72 
     | 
    
         
            -
                def tag_file( 
     | 
| 
       73 
     | 
    
         
            -
                  "#{ 
     | 
| 
      
 75 
     | 
    
         
            +
                def tag_file(target_path)
         
     | 
| 
      
 76 
     | 
    
         
            +
                  "#{target_path}/.CURRENT_TAG"
         
     | 
| 
       74 
77 
     | 
    
         
             
                end
         
     | 
| 
       75 
78 
     | 
    
         | 
| 
       76 
     | 
    
         
            -
                def get_current_tag( 
     | 
| 
       77 
     | 
    
         
            -
                  dir = tag_file( 
     | 
| 
      
 79 
     | 
    
         
            +
                def get_current_tag(target_path)
         
     | 
| 
      
 80 
     | 
    
         
            +
                  dir = tag_file(target_path)
         
     | 
| 
       78 
81 
     | 
    
         
             
                  return nil if !File.exists?(dir)
         
     | 
| 
       79 
82 
     | 
    
         
             
                  lines = File.read(dir).split("\n")
         
     | 
| 
       80 
83 
     | 
    
         
             
                  return nil if lines.length < 1
         
     | 
| 
       81 
84 
     | 
    
         
             
                  Versionomy.parse(lines.first)
         
     | 
| 
       82 
85 
     | 
    
         
             
                end
         
     | 
| 
       83 
86 
     | 
    
         | 
| 
       84 
     | 
    
         
            -
                def set_current_tag( 
     | 
| 
       85 
     | 
    
         
            -
                  File.open(tag_file( 
     | 
| 
      
 87 
     | 
    
         
            +
                def set_current_tag(target_path, tag)
         
     | 
| 
      
 88 
     | 
    
         
            +
                  File.open(tag_file(target_path), 'w+') { |f| f.write(tag) }
         
     | 
| 
       86 
89 
     | 
    
         
             
                end
         
     | 
| 
       87 
90 
     | 
    
         | 
| 
       88 
91 
     | 
    
         
             
                # Returns an array of tags specified for the cloned configuration repository
         
     | 
| 
         @@ -115,7 +118,9 @@ private 
     | 
|
| 
       115 
118 
     | 
    
         
             
                  in_dir_do(temp_path) do
         
     | 
| 
       116 
119 
     | 
    
         
             
                    tell "Updating local configuration repository at '#{temp_path}'"
         
     | 
| 
       117 
120 
     | 
    
         
             
                    execute_command("git checkout master")
         
     | 
| 
       118 
     | 
    
         
            -
                    execute_command("git  
     | 
| 
      
 121 
     | 
    
         
            +
                    execute_command("git fetch")
         
     | 
| 
      
 122 
     | 
    
         
            +
                    execute_command("git fetch --tags")
         
     | 
| 
      
 123 
     | 
    
         
            +
                    execute_command("git reset --hard origin/master")
         
     | 
| 
       119 
124 
     | 
    
         | 
| 
       120 
125 
     | 
    
         
             
                    head = execute_command("git rev-parse HEAD")[0,8]
         
     | 
| 
       121 
126 
     | 
    
         
             
                    tell("Updated local configuration repository to #{head}")
         
     | 
| 
         @@ -5,11 +5,11 @@ 
     | 
|
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            Gem::Specification.new do |s|
         
     | 
| 
       7 
7 
     | 
    
         
             
              s.name = "not-quite-submodules"
         
     | 
| 
       8 
     | 
    
         
            -
              s.version = "0. 
     | 
| 
      
 8 
     | 
    
         
            +
              s.version = "0.4.0"
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         
     | 
| 
       11 
11 
     | 
    
         
             
              s.authors = ["Lucas Jenss"]
         
     | 
| 
       12 
     | 
    
         
            -
              s.date = "2013-04- 
     | 
| 
      
 12 
     | 
    
         
            +
              s.date = "2013-04-18"
         
     | 
| 
       13 
13 
     | 
    
         
             
              s.description = "This gem can be used to automatically clone an update a git repository, relying on tags to see if a newer version of the repository is available."
         
     | 
| 
       14 
14 
     | 
    
         
             
              s.email = "lucas@x3ro.de"
         
     | 
| 
       15 
15 
     | 
    
         
             
              s.extra_rdoc_files = [
         
     | 
| 
         @@ -30,7 +30,7 @@ Gem::Specification.new do |s| 
     | 
|
| 
       30 
30 
     | 
    
         
             
              s.homepage = "http://github.com/x3ro/not-quite-submodules"
         
     | 
| 
       31 
31 
     | 
    
         
             
              s.licenses = ["MIT"]
         
     | 
| 
       32 
32 
     | 
    
         
             
              s.require_paths = ["lib"]
         
     | 
| 
       33 
     | 
    
         
            -
              s.rubygems_version = "1.8. 
     | 
| 
      
 33 
     | 
    
         
            +
              s.rubygems_version = "1.8.25"
         
     | 
| 
       34 
34 
     | 
    
         
             
              s.summary = "This gem can be used to automatically clone and update a git repository."
         
     | 
| 
       35 
35 
     | 
    
         | 
| 
       36 
36 
     | 
    
         
             
              if s.respond_to? :specification_version then
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: not-quite-submodules
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.4.0
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: 
         
     | 
| 
       6 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       7 
7 
     | 
    
         
             
            authors:
         
     | 
| 
         @@ -9,7 +9,7 @@ authors: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date: 2013-04- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2013-04-18 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: versionomy
         
     | 
| 
         @@ -172,7 +172,7 @@ required_ruby_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       172 
172 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       173 
173 
     | 
    
         
             
                  segments:
         
     | 
| 
       174 
174 
     | 
    
         
             
                  - 0
         
     | 
| 
       175 
     | 
    
         
            -
                  hash: - 
     | 
| 
      
 175 
     | 
    
         
            +
                  hash: -4321208896240466877
         
     | 
| 
       176 
176 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       177 
177 
     | 
    
         
             
              none: false
         
     | 
| 
       178 
178 
     | 
    
         
             
              requirements:
         
     | 
| 
         @@ -181,7 +181,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       181 
181 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       182 
182 
     | 
    
         
             
            requirements: []
         
     | 
| 
       183 
183 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       184 
     | 
    
         
            -
            rubygems_version: 1.8. 
     | 
| 
      
 184 
     | 
    
         
            +
            rubygems_version: 1.8.25
         
     | 
| 
       185 
185 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       186 
186 
     | 
    
         
             
            specification_version: 3
         
     | 
| 
       187 
187 
     | 
    
         
             
            summary: This gem can be used to automatically clone and update a git repository.
         
     |