3
0
mirror of https://github.com/triqs/dft_tools synced 2025-01-08 20:33:16 +01:00

Move setup files into separate bash scripts and adjust README

* Treat Linux and Darwin differently
This commit is contained in:
Nils Wentzell 2019-09-05 15:08:10 -04:00
parent bdf91fa925
commit a69a449a43
3 changed files with 58 additions and 42 deletions

View File

@ -5,68 +5,47 @@
Initial Setup Initial Setup
------------- -------------
**Caution**: The following instructions require the `util-linux` rename command.
Please confirm that you have the right version by running `rename --version`.
For the Perl rename command see instructions in the following section.
To adapt this skeleton for a new TRIQS application, the following steps are necessary: To adapt this skeleton for a new TRIQS application, the following steps are necessary:
* Create a repository, e.g. https://github.com/myuser/mynewapp * Create a repository, e.g. https://github.com/username/appname
* Run the following commands in order after replacing myuser, mynewapp and MYNEWAPP accordingly * Run the following commands in order after replacing **appname** accordingly
```bash ```bash
github_username=myuser git clone https://github.com/triqs/app4triqs --branch unstable appname
app_name=mynewapp cd appname
capital_name=MYNEWAPP ./share/squash_history.sh
./share/replace_and_rename.sh appname
git clone https://github.com/triqs/app4triqs --branch unstable ${app_name} git add -A && git commit -m "Adjust app4triqs skeleton for appname"
cd ${app_name}
git reset $(git commit-tree HEAD\^{tree} -m "Create ${app_name} from github.com/triqs/app4triqs skeleton")
git merge --allow-unrelated-histories -s ours HEAD@{1} -m "Track app4triqs skeleton"
find . -type f | grep -v .git | xargs sed -i 's/app4triqs/${app_name}/g; s/APP4TRIQS/${capital_name}/g'
find . -type d | grep -v .git | xargs rename app4triqs ${app_name}
find . -type f | grep -v .git | xargs rename app4triqs ${app_name}
git add -A && git commit -m "Adjust app4triqs skeleton for ${app_name}"
git remote set-url origin https://github.com/${github_username}/${app_name}
git remote add app4triqs_remote https://github.com/triqs/app4triqs
git remote update && git remote prune origin
``` ```
You can now push to your github repository You can now add your github repository and push to it
```bash ```bash
git remote add origin https://github.com/username/appname
git remote update
git push origin unstable git push origin unstable
``` ```
### Perl rename command ### If you prefer to use the [SSH interface](https://help.github.com/en/articles/connecting-to-github-with-ssh)
to the remote repository, replace the http link with e.g. `git@github.com:username/appname`.
If you are using the Perl-based rename command you will need to
```bash
find . -type d | grep -v .git | xargs rename 's/app4triqs/${app_name}/'
find . -type f | grep -v .git | xargs rename 's/app4triqs/${app_name}/'
```
### Github SSH interface ###
If you prefer to use the SSH interface to the remote repository,
replace the http link accordingly
```
https://github.com/myuser/mynewapp --> git@github.com:myuser/mynewapp
```
### Merging app4triqs skeleton updates ### ### Merging app4triqs skeleton updates ###
You can merge future changes to app4triqs into your project with the following commands You can merge future changes to the app4triqs skeleton into your project with the following commands
```bash ```bash
git remote update git remote update
git merge app4triqs_remote -m "Merge latest app4triqs skeleton changes" git merge app4triqs_remote/unstable -m "Merge latest app4triqs skeleton changes"
``` ```
If you should encounter any conflicts resolve them and `git commit`. If you should encounter any conflicts resolve them and `git commit`.
Finally we repeat the replace and rename command from the initial setup.
```bash
./share/replace_and_rename.sh appname
git commit --amend
```
Getting Started Getting Started
--------------- ---------------
@ -74,15 +53,17 @@ Getting Started
After setting up your application as described above you should customize the following files and directories After setting up your application as described above you should customize the following files and directories
according to your needs (replace app4triqs in the following by the name of your application) according to your needs (replace app4triqs in the following by the name of your application)
* Adjust or remove the `README.md` and `doc/ChangeLog.md` file
* In the `c++/app4triqs` subdirectory adjust the example files `app4triqs.hpp` and `app4triqs.cpp` or add your own source files. * In the `c++/app4triqs` subdirectory adjust the example files `app4triqs.hpp` and `app4triqs.cpp` or add your own source files.
* In the `test/c++` subdirectory adjust the example test `basic.cpp` or add your own tests. * In the `test/c++` subdirectory adjust the example test `basic.cpp` or add your own tests.
* In the `python/app4triqs` subdirectory add your Python source files. * In the `python/app4triqs` subdirectory add your Python source files.
Be sure to remove the `app4triqs_module_desc.py` file unless you want to generate a Python module from your C++ source code. Be sure to remove the `app4triqs_module_desc.py` file unless you want to generate a Python module from your C++ source code.
* In the `test/c++` subdirectory adjust the example test `basic.cpp` or add your own tests. * In the `test/python` subdirectory adjust the example test `Basic.py` or add your own tests.
* The build and install process is identical to the one outline [here](https://triqs.github.io/app4triqs/unstable/install.html). * The build and install process is identical to the one outline [here](https://triqs.github.io/app4triqs/unstable/install.html).
### Optional ### ### Optional ###
---------------- ----------------
* If you want to wrap C++ classes and/or functions provided in the `c++/app4triqs/app4triqs.hpp` rerun the `c++2py` tool with * If you want to wrap C++ classes and/or functions provided in the `c++/app4triqs/app4triqs.hpp` rerun the `c++2py` tool with
```bash ```bash
c++2py -r app4triqs_module_desc.py c++2py -r app4triqs_module_desc.py

29
share/replace_and_rename.sh Executable file
View File

@ -0,0 +1,29 @@
#!/usr/bin/env bash
if [ $# -ne 1 ]; then
echo "Please pass the application name"
exit 1
fi
app_name=$1
capital_name=$(printf '%s' "$1" | awk '{ print toupper($0) }')
# Move app4triqs directories if necessary
[ -d c++/app4triqs ] && mv c++/app4triqs c++/${app_name}
[ -d python/app4triqs ] && mv python/app4triqs python/${app_name}
# Replace app4triqs and APP4TRIQS for our application in all files and filenames
if [ $(uname -s) == Linux ]; then
find . -type f \
-not -path "./.git/*" \
-not -path "*/replace_and_rename.sh" \
-not -path "*/squash_history.sh" \
-exec sed -i "s/app4triqs/${app_name}/g; s/APP4TRIQS/${capital_name}/g" {} \;
find . -type f -not -path "./.git/*" -exec rename app4triqs ${app_name} {} &> /dev/null \;
elif [ $(uname -s) == Darwin ]; then
LC_CTYPE=C LANG=C find . -type f \
-not -path "./.git/*" \
-not -path "*/replace_and_rename.sh" \
-not -path "*/squash_history.sh" \
-exec sed -i '' -e "s/app4triqs/${app_name}/g; s/APP4TRIQS/${capital_name}/g" {} \;
find . -type f -not -path "./.git/*" -exec rename "s/app4triqs/${app_name}/" {} &> /dev/null \;
fi

6
share/squash_history.sh Executable file
View File

@ -0,0 +1,6 @@
#!/usr/bin/env bash
git reset $(git commit-tree HEAD\^{tree} -m "Initialize project from github.com/triqs/app4triqs@$(git rev-parse --short HEAD)")
git merge --allow-unrelated-histories -s ours HEAD@{1} -m "Track app4triqs skeleton"
git remote rm origin
git remote add app4triqs_remote https://github.com/triqs/app4triqs