Reorganize core source and add Docker support to CLI.
This commit is contained in:
parent
8e41cba7ac
commit
c2aafd8602
2
.gitmodules
vendored
2
.gitmodules
vendored
@ -17,7 +17,7 @@
|
|||||||
path = platform-darwin/External/jrswizzle
|
path = platform-darwin/External/jrswizzle
|
||||||
url = git://github.com/jonmarimba/jrswizzle.git
|
url = git://github.com/jonmarimba/jrswizzle.git
|
||||||
[submodule "MasterPassword/Web/js/mpw-js"]
|
[submodule "MasterPassword/Web/js/mpw-js"]
|
||||||
path = platform-independent/web-js/js/mpw-js
|
path = platform-independent/web/js/mpw-js
|
||||||
url = https://github.com/tmthrgd/mpw-js.git
|
url = https://github.com/tmthrgd/mpw-js.git
|
||||||
[submodule "lib/libsodium"]
|
[submodule "lib/libsodium"]
|
||||||
path = lib/libsodium
|
path = lib/libsodium
|
||||||
|
@ -1 +0,0 @@
|
|||||||
../../../../../mpw_tests.xml
|
|
@ -7,16 +7,16 @@ try {
|
|||||||
}
|
}
|
||||||
|
|
||||||
include 'masterpassword-core'
|
include 'masterpassword-core'
|
||||||
project(':masterpassword-core').projectDir = new File( '../core/c' )
|
project(':masterpassword-core').projectDir = new File( '../platform-independent/c/core' )
|
||||||
|
|
||||||
include 'masterpassword-algorithm'
|
include 'masterpassword-algorithm'
|
||||||
project(':masterpassword-algorithm').projectDir = new File( '../core/java/algorithm' )
|
project(':masterpassword-algorithm').projectDir = new File( '../platform-independent/java/core' )
|
||||||
|
|
||||||
include 'masterpassword-model'
|
include 'masterpassword-model'
|
||||||
project(':masterpassword-model').projectDir = new File( '../core/java/model' )
|
project(':masterpassword-model').projectDir = new File( '../platform-independent/java/model' )
|
||||||
|
|
||||||
include 'masterpassword-tests'
|
include 'masterpassword-tests'
|
||||||
project(':masterpassword-tests').projectDir = new File( '../core/java/tests' )
|
project(':masterpassword-tests').projectDir = new File( '../platform-independent/java/tests' )
|
||||||
|
|
||||||
include 'masterpassword-gui'
|
include 'masterpassword-gui'
|
||||||
project(':masterpassword-gui').projectDir = new File( '../platform-independent/gui-java' )
|
project(':masterpassword-gui').projectDir = new File( '../platform-independent/gui-java' )
|
||||||
|
@ -1,9 +1,13 @@
|
|||||||
# Native CLI
|
# Native CLI
|
||||||
|
|
||||||
This is a command-line terminal interface to the Master Password standard implementation.
|
The CLI is a command-line terminal interface to the Master Password standard implementation.
|
||||||
|
|
||||||
To use the app, you'll first need to build it, then install it into your system's PATH.
|
To use the app, you'll first need to build it, then install it into your system's PATH.
|
||||||
|
|
||||||
|
Start by changing into the CLI application directory:
|
||||||
|
|
||||||
|
cd cli
|
||||||
|
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
@ -15,6 +19,13 @@ Note that the build depends on your system having certain dependencies already i
|
|||||||
By default, you'll need to have at least `libsodium`, `libjson-c` and `libncurses` installed.
|
By default, you'll need to have at least `libsodium`, `libjson-c` and `libncurses` installed.
|
||||||
|
|
||||||
|
|
||||||
|
## Building with docker
|
||||||
|
|
||||||
|
To install mpw into a Docker container, make sure you have Docker installed on your system, then run something like:
|
||||||
|
|
||||||
|
docker build -f cli/Dockerfile .
|
||||||
|
|
||||||
|
|
||||||
## Building with cmake
|
## Building with cmake
|
||||||
|
|
||||||
There is also a cmake configuration you can use to build instead of using the `./build` script. While `./build` depends on Bash and is geared toward POSIX systems, cmake is platform-independent. You should use your platform's cmake tools to continue. On POSIX systems, you can do this:
|
There is also a cmake configuration you can use to build instead of using the `./build` script. While `./build` depends on Bash and is geared toward POSIX systems, cmake is platform-independent. You should use your platform's cmake tools to continue. On POSIX systems, you can do this:
|
@ -123,9 +123,11 @@ endfunction()
|
|||||||
### TARGET: MPW
|
### TARGET: MPW
|
||||||
if( BUILD_MPW )
|
if( BUILD_MPW )
|
||||||
# target
|
# target
|
||||||
add_executable( mpw "core/base64.c" "core/aes.c" "core/mpw-algorithm.c" "core/mpw-types.c" "core/mpw-util.c" "core/mpw-marshal-util.c" "core/mpw-marshal.c"
|
add_executable( mpw "../core/src/base64.c" "../core/src/aes.c" "../core/src/mpw-algorithm.c" "../core/src/mpw-types.c" "../core/src/mpw-util.c"
|
||||||
"cli/mpw-cli-util.c" "cli/mpw-cli.c" )
|
"../core/src/mpw-marshal-util.c" "../core/src/mpw-marshal.c"
|
||||||
target_include_directories( mpw PUBLIC core cli )
|
"src/mpw-cli-util.c" "src/mpw-cli.c" )
|
||||||
|
target_include_directories( mpw PUBLIC ../core/src src )
|
||||||
|
install( TARGETS mpw RUNTIME DESTINATION bin )
|
||||||
|
|
||||||
# dependencies
|
# dependencies
|
||||||
use_mpw_sodium( mpw required )
|
use_mpw_sodium( mpw required )
|
||||||
@ -137,23 +139,25 @@ endif()
|
|||||||
### TARGET: MPW-BENCH
|
### TARGET: MPW-BENCH
|
||||||
if( BUILD_MPW_BENCH )
|
if( BUILD_MPW_BENCH )
|
||||||
# target
|
# target
|
||||||
add_executable( mpw_bench "core/base64.c" "core/aes.c" "core/mpw-algorithm.c" "core/mpw-types.c" "core/mpw-util.c"
|
add_executable( mpw-bench "../core/src/base64.c" "../core/src/aes.c" "../core/src/mpw-algorithm.c" "../core/src/mpw-types.c" "../core/src/mpw-util.c"
|
||||||
"cli/mpw-bench.c" )
|
"src/mpw-bench.c" )
|
||||||
target_include_directories( mpw_bench PUBLIC core cli )
|
target_include_directories( mpw-bench PUBLIC ../core/src src )
|
||||||
|
install( TARGETS mpw-bench RUNTIME DESTINATION bin )
|
||||||
|
|
||||||
# dependencies
|
# dependencies
|
||||||
use_mpw_sodium( mpw_bench required )
|
use_mpw_sodium( mpw-bench required )
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
### TARGET: MPW-TESTS
|
### TARGET: MPW-TESTS
|
||||||
if( BUILD_MPW_TESTS )
|
if( BUILD_MPW_TESTS )
|
||||||
# target
|
# target
|
||||||
add_executable( mpw_tests "core/base64.c" "core/aes.c" "core/mpw-algorithm.c" "core/mpw-types.c" "core/mpw-util.c"
|
add_executable( mpw-tests "../core/src/base64.c" "../core/src/aes.c" "../core/src/mpw-algorithm.c" "../core/src/mpw-types.c" "../core/src/mpw-util.c"
|
||||||
"cli/mpw-tests-util.c" "cli/mpw-tests.c" )
|
"src/mpw-tests-util.c" "src/mpw-tests.c" )
|
||||||
target_include_directories( mpw_tests PUBLIC core cli )
|
target_include_directories( mpw-tests PUBLIC ../core/src src )
|
||||||
|
install( TARGETS mpw-tests RUNTIME DESTINATION bin )
|
||||||
|
|
||||||
# dependencies
|
# dependencies
|
||||||
use_mpw_sodium( mpw_tests required )
|
use_mpw_sodium( mpw-tests required )
|
||||||
use_mpw_xml( mpw_tests required )
|
use_mpw_xml( mpw-tests required )
|
||||||
endif()
|
endif()
|
9
platform-independent/c/cli/Dockerfile
Normal file
9
platform-independent/c/cli/Dockerfile
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
FROM ubuntu
|
||||||
|
WORKDIR /mpw/cli
|
||||||
|
ADD . /mpw
|
||||||
|
|
||||||
|
RUN apt-get update && apt -y install cmake libsodium-dev libjson-c-dev libncurses-dev libxml2-dev
|
||||||
|
RUN cmake -DBUILD_MPW_TESTS=ON . && make install
|
||||||
|
RUN mpw-tests
|
||||||
|
|
||||||
|
CMD mpw
|
@ -63,18 +63,18 @@ mpw() {
|
|||||||
cflags=(
|
cflags=(
|
||||||
"${cflags[@]}"
|
"${cflags[@]}"
|
||||||
|
|
||||||
# library paths
|
|
||||||
-I"lib/include"
|
|
||||||
# mpw paths
|
# mpw paths
|
||||||
-I"core" -I"cli"
|
-I"../core/src" -I"src"
|
||||||
)
|
)
|
||||||
ldflags=(
|
ldflags=(
|
||||||
"${ldflags[@]}"
|
"${ldflags[@]}"
|
||||||
)
|
)
|
||||||
|
|
||||||
# build
|
# build
|
||||||
cc "${cflags[@]}" "$@" "core/base64.c" "core/aes.c" "core/mpw-algorithm.c" "core/mpw-types.c" "core/mpw-util.c" "core/mpw-marshal-util.c" "core/mpw-marshal.c" "cli/mpw-cli-util.c" \
|
cc "${cflags[@]}" "$@" \
|
||||||
"${ldflags[@]}" "cli/mpw-cli.c" -o "mpw"
|
"../core/src/base64.c" "../core/src/aes.c" "../core/src/mpw-algorithm.c" "../core/src/mpw-types.c" "../core/src/mpw-util.c" \
|
||||||
|
"../core/src/mpw-marshal-util.c" "../core/src/mpw-marshal.c" "src/mpw-cli-util.c" \
|
||||||
|
"${ldflags[@]}" "src/mpw-cli.c" -o "mpw"
|
||||||
echo "done! You can now run ./mpw-cli-tests, ./install or use ./$_"
|
echo "done! You can now run ./mpw-cli-tests, ./install or use ./$_"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -88,18 +88,17 @@ mpw-bench() {
|
|||||||
cflags=(
|
cflags=(
|
||||||
"${cflags[@]}"
|
"${cflags[@]}"
|
||||||
|
|
||||||
# library paths
|
|
||||||
-I"lib/include"
|
|
||||||
# mpw paths
|
# mpw paths
|
||||||
-I"core" -I"cli"
|
-I"../core/src" -I"src"
|
||||||
)
|
)
|
||||||
ldflags=(
|
ldflags=(
|
||||||
"${ldflags[@]}"
|
"${ldflags[@]}"
|
||||||
)
|
)
|
||||||
|
|
||||||
# build
|
# build
|
||||||
cc "${cflags[@]}" "$@" "core/base64.c" "core/aes.c" "core/mpw-algorithm.c" "core/mpw-types.c" "core/mpw-util.c" \
|
cc "${cflags[@]}" "$@" \
|
||||||
"${ldflags[@]}" "cli/mpw-bench.c" -o "mpw-bench"
|
"../core/src/base64.c" "../core/src/aes.c" "../core/src/mpw-algorithm.c" "../core/src/mpw-types.c" "../core/src/mpw-util.c" \
|
||||||
|
"${ldflags[@]}" "src/mpw-bench.c" -o "mpw-bench"
|
||||||
echo "done! You can now use ./$_"
|
echo "done! You can now use ./$_"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,18 +113,17 @@ mpw-tests() {
|
|||||||
cflags=(
|
cflags=(
|
||||||
"${cflags[@]}"
|
"${cflags[@]}"
|
||||||
|
|
||||||
# library paths
|
|
||||||
-I"lib/include"
|
|
||||||
# mpw paths
|
# mpw paths
|
||||||
-I"core" -I"cli"
|
-I"../core/src" -I"src"
|
||||||
)
|
)
|
||||||
ldflags=(
|
ldflags=(
|
||||||
"${ldflags[@]}"
|
"${ldflags[@]}"
|
||||||
)
|
)
|
||||||
|
|
||||||
# build
|
# build
|
||||||
cc "${cflags[@]}" "$@" "core/base64.c" "core/aes.c" "core/mpw-algorithm.c" "core/mpw-types.c" "core/mpw-util.c" "cli/mpw-tests-util.c" \
|
cc "${cflags[@]}" "$@" \
|
||||||
"${ldflags[@]}" "cli/mpw-tests.c" -o "mpw-tests"
|
"../core/src/base64.c" "../core/src/aes.c" "../core/src/mpw-algorithm.c" "../core/src/mpw-types.c" "../core/src/mpw-util.c" "src/mpw-tests-util.c" \
|
||||||
|
"${ldflags[@]}" "src/mpw-tests.c" -o "mpw-tests"
|
||||||
echo "done! You can now use ./$_"
|
echo "done! You can now use ./$_"
|
||||||
}
|
}
|
||||||
|
|
7
platform-independent/c/cli/clean
Executable file
7
platform-independent/c/cli/clean
Executable file
@ -0,0 +1,7 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# Clean all generated build files.
|
||||||
|
set -e
|
||||||
|
cd "${BASH_SOURCE%/*}"
|
||||||
|
|
||||||
|
rm -vfr mpw mpw-bench mpw-tests
|
@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
cd "${BASH_SOURCE%/*}"
|
cd "${BASH_SOURCE%/*}/.."
|
||||||
tag=$(git describe --exact-match --match '*-cli*') || { echo >&2 "Tree is not at a release tag."; exit 1; }
|
tag=$(git describe --exact-match --match '*-cli*') || { echo >&2 "Tree is not at a release tag."; exit 1; }
|
||||||
version=$(git describe --match '*-cli*' --long --dirty --broken)
|
version=$(git describe --match '*-cli*' --long --dirty --broken)
|
||||||
[[ $version != *-dirty ]] || { echo >&2 "Tree is dirty, first commit any changes."; exit 1; }
|
[[ $version != *-dirty ]] || { echo >&2 "Tree is dirty, first commit any changes."; exit 1; }
|
||||||
@ -11,7 +11,7 @@ mpwArchive=mpw-$version.tar.gz
|
|||||||
read -n1 -p "Will prepare and release $mpwArchive. Press a key to continue or ^C to abort."
|
read -n1 -p "Will prepare and release $mpwArchive. Press a key to continue or ^C to abort."
|
||||||
|
|
||||||
echo "Cleaning .."
|
echo "Cleaning .."
|
||||||
( git clean -ffdx . && cd core && git clean -ffdx . )
|
git clean -ffdx .
|
||||||
|
|
||||||
echo "Creating archive $mpwArchive .."
|
echo "Creating archive $mpwArchive .."
|
||||||
echo "$version" > VERSION
|
echo "$version" > VERSION
|
@ -1,8 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
#
|
|
||||||
# Clean all generated build files.
|
|
||||||
set -e
|
|
||||||
cd "${BASH_SOURCE%/*}"
|
|
||||||
|
|
||||||
rm -vfr lib/*/{.unpacked,.patched,src} lib/include
|
|
||||||
rm -vfr {core,cli,.}/{*.o,*.dSYM} mpw mpw-bench mpw-tests
|
|
@ -1 +0,0 @@
|
|||||||
../../core/c/src
|
|
@ -1 +0,0 @@
|
|||||||
core/lib
|
|
@ -1 +0,0 @@
|
|||||||
../../core/mpw_tests.xml
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user