creates a new repository
This commit is contained in:
parent
3ce3909ade
commit
bee81ba5f2
3 changed files with 78 additions and 0 deletions
|
@ -65,6 +65,7 @@ public class GitHandler extends Activity {
|
||||||
public static final int REQUEST_PULL = 101;
|
public static final int REQUEST_PULL = 101;
|
||||||
public static final int REQUEST_PUSH = 102;
|
public static final int REQUEST_PUSH = 102;
|
||||||
public static final int REQUEST_CLONE = 103;
|
public static final int REQUEST_CLONE = 103;
|
||||||
|
public static final int REQUEST_INIT = 104;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
|
|
@ -6,8 +6,10 @@ import android.app.FragmentManager;
|
||||||
import android.app.FragmentTransaction;
|
import android.app.FragmentTransaction;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.preference.PreferenceManager;
|
||||||
import android.text.InputType;
|
import android.text.InputType;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
|
@ -41,12 +43,16 @@ public class PasswordStore extends Activity implements ToCloneOrNot.OnFragmentI
|
||||||
/** if we leave the activity to do something, do not add any other fragment */
|
/** if we leave the activity to do something, do not add any other fragment */
|
||||||
private boolean leftActivity = false;
|
private boolean leftActivity = false;
|
||||||
private File currentDir;
|
private File currentDir;
|
||||||
|
private SharedPreferences settings;
|
||||||
|
private Activity activity;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setContentView(R.layout.activity_pwdstore);
|
setContentView(R.layout.activity_pwdstore);
|
||||||
scrollPositions = new Stack<Integer>();
|
scrollPositions = new Stack<Integer>();
|
||||||
|
settings = PreferenceManager.getDefaultSharedPreferences(this.getApplicationContext());
|
||||||
|
activity = this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -130,6 +136,43 @@ public class PasswordStore extends Activity implements ToCloneOrNot.OnFragmentI
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void initRepository(View view) {
|
||||||
|
String keyId = settings.getString("openpgp_key_ids", "");
|
||||||
|
|
||||||
|
if (keyId.isEmpty())
|
||||||
|
new AlertDialog.Builder(this)
|
||||||
|
.setMessage("You have to set the information about the server before synchronizing with the server")
|
||||||
|
.setPositiveButton("On my way!", new DialogInterface.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialogInterface, int i) {
|
||||||
|
Intent intent = new Intent(activity, UserPreference.class);
|
||||||
|
startActivityForResult(intent, GitHandler.REQUEST_INIT);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.setNegativeButton("Nah... later", new DialogInterface.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialogInterface, int i) {
|
||||||
|
// do nothing :(
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.show();
|
||||||
|
|
||||||
|
else {
|
||||||
|
File localDir = new File(getFilesDir() + "/store/");
|
||||||
|
localDir.mkdir();
|
||||||
|
try {
|
||||||
|
// we take only the first key-id, we have to think about how to handle multiple keys, and why should we do that...
|
||||||
|
// also, for compatibility use short-version of the key-id
|
||||||
|
FileUtils.writeStringToFile(new File(localDir.getAbsolutePath() + "/.gpg-id"),
|
||||||
|
keyId.substring(keyId.length() - 8));
|
||||||
|
} catch (Exception e) {
|
||||||
|
localDir.delete();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
PasswordRepository.createRepository(localDir);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFragmentInteraction(Uri uri) {
|
public void onFragmentInteraction(Uri uri) {
|
||||||
|
|
||||||
|
@ -154,6 +197,10 @@ public class PasswordStore extends Activity implements ToCloneOrNot.OnFragmentI
|
||||||
if (localDir.exists()) {
|
if (localDir.exists()) {
|
||||||
File[] folders = localDir.listFiles();
|
File[] folders = localDir.listFiles();
|
||||||
status = folders.length;
|
status = folders.length;
|
||||||
|
|
||||||
|
// this means that the repository has been correctly cloned
|
||||||
|
if ((new File(localDir.getAbsolutePath() + "/.gpg-id")).exists())
|
||||||
|
status++;
|
||||||
}
|
}
|
||||||
|
|
||||||
// either the repo is empty or it was not correctly cloned
|
// either the repo is empty or it was not correctly cloned
|
||||||
|
@ -268,6 +315,9 @@ public class PasswordStore extends Activity implements ToCloneOrNot.OnFragmentI
|
||||||
git.commit().setMessage("[ANDROID PwdStore] Add " + data.getExtras().getString("NAME") + " from store.")
|
git.commit().setMessage("[ANDROID PwdStore] Add " + data.getExtras().getString("NAME") + " from store.")
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
|
case GitHandler.REQUEST_INIT:
|
||||||
|
initRepository(getCurrentFocus());
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package com.zeapo.pwdstore.utils;
|
package com.zeapo.pwdstore.utils;
|
||||||
|
|
||||||
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.FileUtils;
|
||||||
|
import org.eclipse.jgit.api.Git;
|
||||||
import org.eclipse.jgit.lib.Repository;
|
import org.eclipse.jgit.lib.Repository;
|
||||||
import org.eclipse.jgit.storage.file.FileRepositoryBuilder;
|
import org.eclipse.jgit.storage.file.FileRepositoryBuilder;
|
||||||
|
|
||||||
|
@ -34,6 +35,32 @@ public class PasswordRepository {
|
||||||
return repository;
|
return repository;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void createRepository(File localDir) {
|
||||||
|
localDir.delete();
|
||||||
|
|
||||||
|
try {
|
||||||
|
Git.init()
|
||||||
|
.setDirectory(localDir)
|
||||||
|
.call();
|
||||||
|
|
||||||
|
getRepository(localDir);
|
||||||
|
|
||||||
|
new Git(repository)
|
||||||
|
.branchCreate()
|
||||||
|
.setName("master")
|
||||||
|
.call();
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO add remote branch
|
||||||
|
public static void addRemote() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public static void closeRepository() {
|
public static void closeRepository() {
|
||||||
repository.close();
|
repository.close();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue